UNPKG

cdp-lib

Version:

Contains npm modules used primarily by cdp boilerplate generator.

7 lines 47.7 kB
/*! * cdp-lib.js 0.1.7 * * Date: 2018-02-23T10:48:14.987Z */ module.exports=function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=14)}([function(module,exports){module.exports=require("path")},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});__export(__webpack_require__(32));__export(__webpack_require__(33))},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});__export(__webpack_require__(3));__export(__webpack_require__(29));__export(__webpack_require__(5))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const fs=__webpack_require__(16);exports.fs=fs;const glob=__webpack_require__(17);exports.glob=glob;const hogan=__webpack_require__(18);exports.hogan=hogan;const _l=__webpack_require__(19);const _s=__webpack_require__(20);const which=__webpack_require__(21);exports.which=which;const uuid=__webpack_require__(22);exports.uuid=uuid;const chalk_1=__webpack_require__(23);exports.chalk=chalk_1.default;const semverRegex=__webpack_require__(24);exports.semverRegex=semverRegex;const cli_spinner_1=__webpack_require__(25);exports.Spinner=cli_spinner_1.Spinner;const $=(()=>{const _window=(()=>{const jsdom=__webpack_require__(26);if("function"===typeof jsdom.JSDOM){return(new jsdom.JSDOM).window}else{return jsdom.jsdom().defaultView}})();(root=>{const xmldom=__webpack_require__(27);root.DOMParser=xmldom.DOMParser;global.XMLSerializer=root.XMLSerializer=xmldom.XMLSerializer})(_window);return __webpack_require__(28)(_window)})();exports.$=$;const _m=_l.mixin(_s.exports());exports._=_m},function(module,exports){module.exports=require("os")},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const path=__webpack_require__(0);const libs_1=__webpack_require__(3);let _settings={force:false,verbose:false,silent:false,lang:"en-US"};let _libPath;function getSettings(){return libs_1.$.extend({},_settings)}exports.getSettings=getSettings;function setSettings(settings){if(settings){_settings.force=settings.force||_settings.force;_settings.verbose=settings.verbose||_settings.verbose;_settings.silent=settings.silent||_settings.silent;_settings.targetDir=settings.targetDir||_settings.targetDir;_settings.lang=settings.lang||_settings.lang}else{_settings={force:false,verbose:false,silent:false,lang:"en-US"}}}exports.setSettings=setSettings;function getLibPath(){if(null==_libPath){const TRY_COUNT=3;let tried=0;_libPath=__dirname;while(true){if(TRY_COUNT<=tried){throw Error("lib path is not resolved.")}_libPath=path.join(_libPath,"..");const check=path.join(_libPath,"cdp-lib");if(libs_1.fs.pathExistsSync(check)){_libPath=check;break}tried++}}return _libPath}exports.getLibPath=getLibPath;function getTargetDir(){return _settings.targetDir}exports.getTargetDir=getTargetDir;function log(message,...optionalParams){if(!_settings.silent){if(0<optionalParams.length){console.log(message,optionalParams)}else{console.log(message)}}}exports.log=log;function debug(message,...optionalParams){if(!_settings.silent&&_settings.verbose){if(0<optionalParams.length){console.error("DEBUG: "+message,optionalParams)}else{console.error("DEBUG: "+message)}}}exports.debug=debug;function assert(test,message,...optionalParams){if(!test){if(_settings.force){if(0<optionalParams.length){console.warn(message,optionalParams)}else{console.warn(message)}}else{if(0<optionalParams.length){console.error(message,optionalParams)}else{console.error(message)}process.exit(1)}}}exports.assert=assert;let _lang;function translate(key){if(!_lang){try{_lang=JSON.parse(libs_1.fs.readFileSync(path.join(getLibPath(),"res/locales","messages."+_settings.lang+".json"),"utf8").toString())}catch(error){throw Error("Language resource JSON parse error: "+error.message)}}let resouce=libs_1.$.extend({},_lang);const props=key.split(".");while(0<props.length){const prop=props.shift();if(resouce[prop]){resouce=resouce[prop]}else{assert(false,"resouce not found. key: "+key);return null}}return resouce}exports.translate=translate},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});const generator_module_1=__webpack_require__(7);__export(__webpack_require__(7));function newGeneratorLibrary(config){return new generator_module_1.GeneratorModule(config)}exports.newGeneratorLibrary=newGeneratorLibrary},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:true});const path=__webpack_require__(0);const os=__webpack_require__(4);const base_1=__webpack_require__(1);const fs=base_1.Utils.fs;const glob=base_1.Utils.glob;const $=base_1.Utils.$;const _=base_1.Utils._;const debug=base_1.Utils.debug;const templatePath=base_1.Utils.templatePath;const copyTpl=base_1.Utils.copyTpl;class GeneratorModule extends base_1.GeneratorBase{defaultBaseStructure(){return{src:"src",pkg:"dist",built:"built",doc:"docs",task:"tasks",test:"tests",types:"@types",temp:".temp"}}create(){return __awaiter(this,void 0,void 0,function*(){yield this.ensureModuleProps();yield this.createDirectoryStructure();yield this.createProjectSettings();yield this.createSourceTemplate();yield this.createVisualStudioSolution()})}get taskList(){return["banner.js","clean.js","srcmap.js","bundle-finalizer.js","remap-coverage.js"]}get defaultDevDependencies(){const depends=super.defaultDevDependencies.concat([{name:"@types/jasmine",version:undefined},{name:"dts-bundle",version:undefined},{name:"typescript-formatter",version:undefined}]);const extra=[];if(this.config.nodejs){extra.push({name:"jasmine-node",version:"^2.0.0"})}else{extra.push({name:"requirejs",version:undefined})}return _.sortBy(depends.concat(extra),depend=>depend.name)}get config(){return this._config}ensureModuleProps(){if(null==this.config.moduleName){if(!/^.*[(\\|\s|/|:|*|?|"|<|>||)].*$/.test(this.config.projectName)){this.config.moduleName=this.config.projectName}else{this.config.moduleName=_.trim(_.dasherize(this.config.projectName),"-")}}debug("moduleName: "+this.config.moduleName);if(null==this.config.mainBaseName){this.config.mainBaseName=this.config.moduleName}debug("mainBaseName: "+this.config.mainBaseName)}createDirectoryStructure(){this.copyTplDir("library/structure")}createProjectSettings(){return __awaiter(this,void 0,void 0,function*(){copyTpl(path.join(templatePath("library"),"_project.config.js"),path.join(this.rootDir,"project.config.js"),this._config,{delimiters:"<% %>"});if(!this.config.outputSameDir){copyTpl(path.join(templatePath("library"),"_tsconfig.json"),path.join(this.rootDir,"tsconfig.json"),this._config,{delimiters:"<% %>",bom:false});copyTpl(path.join(templatePath("library"),"_tsconfig.test.json"),path.join(this.rootDir,this._config.structureConfig.test,"unit","tsconfig.json"),this._config,{delimiters:"<% %>",bom:false})}else{copyTpl(path.join(templatePath("library"),"_tsconfig.output-same-dir.json"),path.join(this.rootDir,"tsconfig.json"),this._config,{delimiters:"<% %>",bom:false})}copyTpl(path.join(templatePath("library"),"_eslintrc.json"),path.join(this.rootDir,this._config.structureConfig.test,"eslint","eslintrc.json"),this.queryEsLintEnvParam(),{delimiters:"<% %>",bom:false});if(!this.config.nodejs){copyTpl(path.join(templatePath("library/tools/testem"),"_testem.json"),path.join(this.rootDir,this._config.structureConfig.test,"runner","testem.json"),this._config,{delimiters:"<% %>",bom:false});const testemStuffPath=templatePath("library/tools/testem/runner");glob.sync("**",{cwd:testemStuffPath,nodir:true}).forEach(file=>{fs.copySync(path.join(testemStuffPath,file),path.join(this.rootDir,this._config.structureConfig.test,"runner",file))})}copyTpl(path.join(templatePath("library"),"_gitignore"),path.join(this.rootDir,".gitignore"),this._config,{bom:false});copyTpl(path.join(templatePath("library"),"_README.md"),path.join(this.rootDir,"README.md"),this._config,{delimiters:"<% %>"});this.config.devDependencies=yield this.queryDependenciesParam(this.config.devDependencies||this.defaultDevDependencies);copyTpl(path.join(templatePath("library"),"_package.json"),path.join(this.rootDir,"package.json"),this._config,{delimiters:"<% %>",bom:false})})}createSourceTemplate(){return __awaiter(this,void 0,void 0,function*(){const _module=path.basename(this._config.moduleName,".js");const param={sampleClass:_.classify(_module),sampleModule:_module,built:this._config.structureConfig.built};const script=(()=>{if(this._config.structureConfig.srcConfig){return this._config.structureConfig.srcConfig.script||""}return""})();copyTpl(path.join(templatePath("library"),"src","_index.ts"),path.join(this.rootDir,this._config.structureConfig.src,script,_module+".ts"),param,{delimiters:"<% %>"});copyTpl(path.join(templatePath("library"),"src","_index.spec.ts"),path.join(this.rootDir,this._config.structureConfig.test,"unit",_module+".spec.ts"),param,{delimiters:"<% %>"})})}createVisualStudioSolution(){return __awaiter(this,void 0,void 0,function*(){const vsParam=(()=>{const createGUID=base_1.Utils.createGUID;const param=$.extend({},this._config.structureConfig);param.projectName=this._config.projectName;param.projectGUID=createGUID();param.types=param.types.replace("@","%40");param.mainBaseName=this._config.mainBaseName;param.license=!this._config.private;param.webpack=this.isEnableTool("webpack");param.testem=!this.config.nodejs;param.outputSameDir=this.config.outputSameDir;param.jsGroup=[];if(!param.outputSameDir){param.jsGroup.push({relativePath:param.built+"\\",fileName:param.mainBaseName,dependee:true,d_ts:true,map:true,min_map:false})}if(this.config.minify){param.jsGroup.push({relativePath:param.pkg+"\\",fileName:param.mainBaseName,dependee:false,d_ts:false,map:false,min_map:true})}param.tsGroup=[{relativePath:param.test+"\\unit\\",fileName:param.mainBaseName+".spec",dependee:true,map:this.config.outputSameDir}];if(param.outputSameDir){param.tsGroup.push({relativePath:param.built+"\\",fileName:param.mainBaseName,dependee:false,map:true})}return param})();copyTpl(path.join(templatePath("base/visual.studio"),"_solution.sln.tpl"),path.join(this.rootDir,vsParam.projectName+".sln"),vsParam,{delimiters:"<% %>"});(()=>{const toXmlString=file=>{const hogan=base_1.Utils.hogan;const normalizeText=base_1.Utils.normalizeText;const options={eol:os.EOL,bom:true,delimiters:"{{ }}"};const tpl=path.join(templatePath("base/visual.studio"),file);const jst=hogan.compile(normalizeText(fs.readFileSync(tpl).toString(),{eol:"\n",bom:false}),options);return jst.render(vsParam)};const toXmlDOM=file=>{return $($.parseXML(toXmlString(file)))};const toXmlNode=file=>{return base_1.Utils.str2XmlNode(toXmlString(file))};const $proj=toXmlDOM("_project.csproj.tpl");const $gpTS=toXmlNode("_ts.item.group.tpl");const $gpJS=toXmlNode("_js.item.group.tpl");$proj.find("ItemGroup").last().after($gpTS).after($gpJS);const formatXML=base_1.Utils.formatXML;const dstPath=path.join(this.rootDir,vsParam.projectName+".csproj");debug(base_1.Utils.xmlNode2Str($proj));fs.writeFileSync(dstPath,formatXML(base_1.Utils.xmlNode2Str($proj)))})()})}}exports.GeneratorModule=GeneratorModule},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});const generator_cordova_1=__webpack_require__(9);__export(__webpack_require__(9));function newGeneratorMobile(config){return new generator_cordova_1.GeneratorCordova(config)}exports.newGeneratorMobile=newGeneratorMobile},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:true});const path=__webpack_require__(0);const os=__webpack_require__(4);const utils_1=__webpack_require__(2);const base_1=__webpack_require__(1);class GeneratorCordova extends base_1.GeneratorBase{defaultBaseStructure(){return{src:"app",pkg:"www",built:"app",doc:"docs",task:"tasks",test:"tests",types:"@types",temp:".temp",lib:"lib",external:"external",porting:"porting",res:"res",srcConfig:{script:"scripts",stylesheet:"stylesheets",template:"templates"}}}create(){return __awaiter(this,void 0,void 0,function*(){utils_1.debug(JSON.stringify(this.config,null,4));if(this.isEnableCordova()){yield this.chdir(this.rootDir);yield this.createCordovaScaffold();yield this.updateConfigXML();yield this.addCordovaPlatforms();yield this.addCordovaPlugins();yield this.addCordovaExtentionFiles();yield this.cacheCordovaPackageJSON();yield this.chdir("..")}yield this.createDirectoryStructure();yield this.createProjectSettings();yield this.createSourceTemplate();yield this.createVisualStudioSolution()})}get taskList(){return["banner.js","clean.js","command.js","external-rearrange.js","minify.js","srcmap.js","bundle-finalizer.js","remap-coverage.js"]}get defaultDevDependencies(){const depends=super.defaultDevDependencies.concat([{name:"@types/jasmine",version:undefined},{name:"@types/requirejs",version:undefined},{name:"autoprefixer",version:undefined},{name:"clean-css",version:undefined},{name:"fs-extra",version:undefined},{name:"html-minifier",version:undefined},{name:"node-sass",version:undefined},{name:"postcss-cli",version:undefined},{name:"smartwatch",version:undefined}]);const extra=[];this.config.devDependencies.forEach(depend=>{extra.push({name:depend.name,version:depend.version})});if(this.isEnableCordova()){extra.push({name:"@types/cordova",version:undefined})}return utils_1._.sortBy(depends.concat(extra),depend=>depend.name)}queryEsLintEnvParam(){const base=super.queryEsLintEnvParam();return Object.assign({},base,{cordova:this.isEnableCordova(),hammerjs:this.isInstallationTarget("hammerjs"),iscroll:this.isInstallationTarget("iscroll"),flipsnap:this.isInstallationTarget("flipsnap")})}queryTsConfigBaseParam(){return Object.assign({},this._config,{cordova:this.isEnableCordova()})}get defaultDependencies(){const depends=[{name:"@cdp/mobile",version:undefined},{name:"backbone",version:undefined},{name:"jquery",version:undefined},{name:"requirejs",version:undefined},{name:"underscore",version:undefined}];const extra=[];this.config.dependencies.forEach(depend=>{extra.push({name:depend.name,version:depend.version})});return utils_1._.sortBy(depends.concat(extra),depend=>depend.name)}get config(){return this._config}isEnableCordova(){return 0<this.config.platforms.length}hasStructureOf(target){return this.config.projectStructure&&0<=this.config.projectStructure.indexOf(target)}isInstallationTarget(name,depends=this.config.dependencies){return!!depends.find(depend=>name===depend.name)}createCordovaScaffold(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.cordova.createCordovaScaffold");utils_1.debug("createCordovaScaffold");yield utils_1.execCommand("cordova",["create",this.config.projectName,this.config.appId,this.config.appName]);utils_1.glob.sync("www/**/*",{cwd:this.config.projectName}).forEach(file=>{utils_1.fs.removeSync(path.join(this.config.projectName,file))});utils_1.fs.removeSync(path.join(this.config.projectName,"res"));utils_1.fs.removeSync(path.join(this.config.projectName,".npmignore"));utils_1.fs.copySync(this.config.projectName,"./");utils_1.fs.removeSync(this.config.projectName)})}updateConfigXML(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.cordova.updateConfigXml");utils_1.debug("updateConfigXML");const configXmlPath=path.join(process.cwd(),"config.xml");const $configXmlDom=utils_1.$(utils_1.str2XmlNode(utils_1.fs.readFileSync(configXmlPath).toString()));$configXmlDom.find("widget").attr("version",this.config.version).attr("ios-CFBundleIdentifier",this.config.appId).prepend(utils_1.str2XmlNode(`\n <preference name="DisallowOverscroll" value="true"/>\n <preference name="KeyboardDisplayRequiresUserAction" value="false"/>\n <preference name="BackgroundColor" value="0xff000000" />\n `));$configXmlDom.find("description").remove();$configXmlDom.find("author").remove();utils_1.fs.writeFileSync(configXmlPath,utils_1.formatXML(utils_1.xmlNode2Str($configXmlDom)))})}addCordovaPlatforms(){return __awaiter(this,void 0,void 0,function*(){utils_1.debug("addCordovaPlatforms");const targets=this.config.platforms.slice();const index=targets.indexOf("ios");if(0<=index&&"darwin"!==process.platform){this.warn("mobile.create.cordova.iOSWarning");targets.splice(index,1);if(targets.length<=0){return Promise.resolve()}}this.progress("mobile.create.cordova.addPlatforms");yield utils_1.execCommand("cordova",["platform","add"].concat(targets))})}addCordovaPlugins(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.cordova.addPlugins");utils_1.debug("addCordovaPlugins");for(let i=0,n=this.config.cordova_plugin.length;i<n;i++){yield utils_1.execCommand("cordova",["plugin","add",this.config.cordova_plugin[i].name])}})}addCordovaExtentionFiles(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.cordova.addExtensions");utils_1.debug("addCordovaExtentionFiles");this.copyTplDir("mobile/cordova")})}cacheCordovaPackageJSON(){return __awaiter(this,void 0,void 0,function*(){if(utils_1.fs.existsSync("./package.json")){this.config.cordovaPackageJson=JSON.parse(utils_1.fs.readFileSync("./package.json").toString());delete this.config.cordovaPackageJson.name;delete this.config.cordovaPackageJson.version;delete this.config.cordovaPackageJson.displayName;delete this.config.cordovaPackageJson.main;delete this.config.cordovaPackageJson.scripts;delete this.config.cordovaPackageJson.author;delete this.config.cordovaPackageJson.description;delete this.config.cordovaPackageJson.license;utils_1.fs.removeSync("./package.json")}})}createDirectoryStructure(){this.progress("mobile.create.app.createDirectoryStructure");utils_1.debug("createDirectoryStructure");this.copyTplDir("mobile/structure/base");if(this.hasStructureOf("lib")){this.copyTplDir("mobile/structure/lib",path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.lib))}if(this.hasStructureOf("porting")){this.copyTplDir("mobile/structure/porting",path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.porting));utils_1.fs.copySync(utils_1.templatePath("base/.gitkeep"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.porting,this.config.structureConfig.types,".gitkeep"));const PLATFORMS_ROOT=path.join(this.rootDir,"platforms");utils_1.fs.readdirSync(PLATFORMS_ROOT).forEach(platform=>{if(utils_1.fs.statSync(path.join(PLATFORMS_ROOT,platform)).isDirectory()){this.copyTplDir("mobile/structure/porting",path.join(PLATFORMS_ROOT,platform,this.config.structureConfig.porting))}})}const WWW=path.join(this.rootDir,this.config.structureConfig.pkg);if(!utils_1.fs.existsSync(WWW)){utils_1.fs.mkdir(WWW)}utils_1.fs.copySync(utils_1.templatePath("base/.gitkeep"),path.join(WWW,".gitkeep"));utils_1.glob.sync("**/*",{cwd:utils_1.templatePath("mobile/task")}).forEach(file=>{utils_1.fs.copySync(path.join(utils_1.templatePath("mobile/task"),file),path.join(this.rootDir,this.config.structureConfig.task,file))})}createProjectSettings(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.app.createProjectSettings");utils_1.debug("createProjectSettings");utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_project.config.js"),path.join(this.rootDir,"project.config.js"),utils_1.$.extend({},this._config,{hogan:this.isInstallationTarget("hogan.js"),hammerjs:this.isInstallationTarget("hammerjs"),iscroll:this.isInstallationTarget("iscroll")}),{delimiters:"<% %>"});utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_tsconfig.base.json"),path.join(this.rootDir,"tsconfig.base.json"),this.queryTsConfigBaseParam(),{delimiters:"<% %>",bom:false});utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_tsconfig.json"),path.join(this.rootDir,"tsconfig.json"),this._config,{delimiters:"<% %>",bom:false});utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_eslintrc.json"),path.join(this.rootDir,this._config.structureConfig.test,"eslint","eslintrc.json"),this.queryEsLintEnvParam(),{delimiters:"<% %>",bom:false});utils_1.copyTpl(path.join(utils_1.templatePath("mobile/tools/testem"),"_testem.json"),path.join(this.rootDir,this._config.structureConfig.test,"runner","testem.json"),this._config,{delimiters:"<% %>",bom:false});const testemStuffPath=utils_1.templatePath("mobile/tools/testem/runner");utils_1.glob.sync("**",{cwd:testemStuffPath,nodir:true}).forEach(file=>{utils_1.fs.copySync(path.join(testemStuffPath,file),path.join(this.rootDir,this._config.structureConfig.test,"runner",file))});utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_gitignore"),path.join(this.rootDir,".gitignore"),this._config,{bom:false});utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_README.md"),path.join(this.rootDir,"README.md"),utils_1.$.extend({},this._config,{cordova:this.isEnableCordova(),lib:this.hasStructureOf("lib"),porting:this.hasStructureOf("porting")}),{delimiters:"<% %>"});const resolvedConfig=utils_1.$.extend(true,{},this.config);resolvedConfig.dependencies=yield this.queryDependenciesParam(this.defaultDependencies);resolvedConfig.devDependencies=yield this.queryDependenciesParam(this.defaultDevDependencies);utils_1.copyTpl(path.join(utils_1.templatePath("mobile"),"_package.json"),path.join(this.rootDir,"package.json"),resolvedConfig,{delimiters:"<% %>",bom:false});if(this.config.cordovaPackageJson){const PKG_PATH=path.join(this.rootDir,"package.json");const pkg=JSON.parse(utils_1.fs.readFileSync(PKG_PATH).toString());utils_1.$.extend(true,pkg,this.config.cordovaPackageJson);const sortKeys=target=>{const sorted={};Object.keys(target).sort().forEach(key=>{sorted[key]=target[key]});return sorted};pkg.dependencies=sortKeys(pkg.dependencies);pkg.devDependencies=sortKeys(pkg.devDependencies);utils_1.fs.writeFileSync(PKG_PATH,JSON.stringify(pkg,null,2))}})}createSourceTemplate(){return __awaiter(this,void 0,void 0,function*(){this.progress("mobile.create.app.createSourceTemplate");utils_1.debug("createSourceTemplate");this.copyTplDir("mobile/src/structure",path.join(this.rootDir));{const additional=(()=>{if(this.config.dependencies.length<0){return null}const param={additional:{list:[],listWithCustomName:[]}};const targets=[...this.config.dependencies,...this.config.resource_addon];targets.forEach(info=>{if(info.fileName||info.venderName){param.additional.listWithCustomName.push({moduleName:info.alias||info.name,venderName:info.venderName||info.alias||info.name,fileName:info.fileName||info.alias||info.name})}else{param.additional.list.push({moduleName:info.alias||info.name})}});return param})();utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src"),"_config.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.srcConfig.script,"config.ts"),utils_1.$.extend({},this._config,additional),{delimiters:"<% %>"})}{const globals=(()=>{if(this.config.dependencies.length<0){return null}const param={globals:{importsList:[],exportsList:[],hasExports:false}};const targets=[...this.config.dependencies,...this.config.resource_addon];targets.forEach(info=>{if(info.globalExport){param.globals.exportsList.push({globalExport:info.globalExport,moduleName:info.alias||info.name})}else{param.globals.importsList.push({moduleName:info.alias||info.name})}});param.globals.hasExports=0<param.globals.exportsList.length;return param})();utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src"),"_app.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.srcConfig.script,"app.ts"),globals,{delimiters:"<% %>"})}{utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src/_locales"),"_messages.en-US.json"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.res,"locales","messages.en-US.json"),this.config,{delimiters:"<% %>",bom:false});utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src/_locales"),"_messages.ja-JP.json"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.res,"locales","messages.ja-JP.json"),this.config,{delimiters:"<% %>",bom:false});utils_1.fs.unlinkSync(path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.res,".gitkeep"))}{utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src/_patch.dependencies"),"_index.d.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.external,this.config.structureConfig.types,"patch.dependencies","index.d.ts"),{hammerjs:this.isInstallationTarget("hammerjs"),flipsnap:this.isInstallationTarget("flipsnap"),iscroll:this.isInstallationTarget("iscroll")});if(this.isInstallationTarget("hammerjs")){utils_1.fs.copySync(utils_1.templatePath("mobile/src/_patch.dependencies/jquery.hammer.d.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.external,this.config.structureConfig.types,"patch.dependencies","jquery.hammer.d.ts"))}if(this.isInstallationTarget("flipsnap")){utils_1.fs.copySync(utils_1.templatePath("mobile/src/_patch.dependencies/flipsnap.d.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.external,this.config.structureConfig.types,"patch.dependencies","flipsnap.d.ts"))}if(this.isInstallationTarget("iscroll")){utils_1.fs.copySync(utils_1.templatePath("mobile/src/_patch.dependencies/iscroll.d.ts"),path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.external,this.config.structureConfig.types,"patch.dependencies","iscroll.d.ts"))}utils_1.fs.unlinkSync(path.join(this.rootDir,this.config.structureConfig.src,this.config.structureConfig.external,this.config.structureConfig.types,".gitkeep"))}{utils_1.copyTpl(path.join(utils_1.templatePath("mobile/src"),"_index.html"),path.join(this.rootDir,this.config.structureConfig.src,"index.html"),this.config)}})}createVisualStudioSolution(){return __awaiter(this,void 0,void 0,function*(){const vsParam=(()=>{const param=utils_1.$.extend({},this._config.structureConfig);param.projectName=this._config.projectName;param.projectGUID=utils_1.createGUID();param.types=param.types.replace("@","%40");param.license=!this._config.private;param.cordova=this.isEnableCordova();param.hogan=this.isInstallationTarget("hogan.js");param.hammerjs=this.isInstallationTarget("hammerjs");param.iscroll=this.isInstallationTarget("iscroll");param.flipsnap=this.isInstallationTarget("flipsnap");param.enableLib=this.hasStructureOf("lib");param.enablePorting=this.hasStructureOf("porting");param.platforms=[...this.config.platforms];param.tsGroup=[];utils_1.glob.sync("**/*.ts",{cwd:path.join(this.rootDir,param.src,param.srcConfig.script)}).forEach(file=>{const relativePath=path.join(param.src,param.srcConfig.script,path.dirname(file)).replace(/\//g,"\\")+"\\";const fileName=path.basename(file,".ts");param.tsGroup.push({relativePath:relativePath,fileName:fileName,dependee:true,map:false})});utils_1.glob.sync("**/*.ts",{cwd:path.join(this.rootDir,this.config.structureConfig.test,"unit")}).forEach(file=>{const relativePath=param.test+"\\unit\\";const fileName=path.basename(file,".ts");param.tsGroup.push({relativePath:relativePath,fileName:fileName,dependee:true,map:false})});return param})();utils_1.copyTpl(path.join(utils_1.templatePath("base/visual.studio"),"_solution.sln.tpl"),path.join(this.rootDir,vsParam.projectName+".sln"),vsParam,{delimiters:"<% %>"});(()=>{const toXmlString=file=>{const options={eol:os.EOL,bom:true,delimiters:"{{ }}"};const jst=utils_1.hogan.compile(utils_1.normalizeText(utils_1.fs.readFileSync(file).toString(),{eol:"\n",bom:false}),options);return jst.render(vsParam)};const toXmlDOM=file=>{return utils_1.$(utils_1.$.parseXML(toXmlString(file)))};const toXmlNode=file=>{return utils_1.str2XmlNode(toXmlString(file))};const $proj=toXmlDOM(path.join(utils_1.templatePath("mobile/visual.studio"),"_project.csproj.tpl"));const $gpTS=toXmlNode(path.join(utils_1.templatePath("base/visual.studio"),"_ts.item.group.tpl"));$proj.find("ItemGroup").last().after($gpTS);const dstPath=path.join(this.rootDir,vsParam.projectName+".csproj");utils_1.debug(utils_1.xmlNode2Str($proj));utils_1.fs.writeFileSync(dstPath,utils_1.formatXML(utils_1.xmlNode2Str($proj)))})();utils_1.fs.copySync(utils_1.templatePath("mobile/visual.studio/_web.config"),path.join(this.rootDir,"web.config"));utils_1.fs.copySync(utils_1.templatePath("mobile/visual.studio/_web.Debug.config"),path.join(this.rootDir,"web.Debug.config"));utils_1.fs.copySync(utils_1.templatePath("mobile/visual.studio/_web.Release.config"),path.join(this.rootDir,"web.Release.config"))})}}exports.GeneratorCordova=GeneratorCordova},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});const generator_electoron_1=__webpack_require__(11);__export(__webpack_require__(11));function newGeneratorDesktop(config){return new generator_electoron_1.GeneratorElectron(config)}exports.newGeneratorDesktop=newGeneratorDesktop},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:true});const base_1=__webpack_require__(1);class GeneratorElectron extends base_1.GeneratorBase{defaultBaseStructure(){return{src:"app",pkg:"www/app",built:"app",doc:"docs",task:"tasks",test:"tests",types:"@types",srcConfig:{script:"scripts",stylesheet:"stylesheets",template:"templates"}}}create(){return __awaiter(this,void 0,void 0,function*(){return Promise.reject("under construction.")})}get taskList(){return["banner.js","clean.js","srcmap.js","build-ts-clean.js","build-ts-normalize.js"]}get config(){return this._config}}exports.GeneratorElectron=GeneratorElectron},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});const generator_browser_1=__webpack_require__(13);__export(__webpack_require__(13));function newGeneratorWeb(config){return new generator_browser_1.GeneratorBrowser(config)}exports.newGeneratorWeb=newGeneratorWeb},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:true});const base_1=__webpack_require__(1);class GeneratorBrowser extends base_1.GeneratorBase{defaultBaseStructure(){return{src:"app",pkg:"www",built:"app",doc:"docs",task:"tasks",test:"tests",types:"@types"}}create(){return __awaiter(this,void 0,void 0,function*(){return Promise.reject("under construction.")})}get taskList(){return["banner.js","clean.js","srcmap.js","build-ts-clean.js","build-ts-normalize.js"]}get config(){return this._config}}exports.GeneratorBrowser=GeneratorBrowser},function(module,exports,__webpack_require__){module.exports=__webpack_require__(15)},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const Utils=__webpack_require__(2);exports.Utils=Utils;const generators_1=__webpack_require__(31);class CDPLib{static execute(config){Utils.setSettings(config.settings);return generators_1.newGenerator(config).run()}}exports.default=CDPLib},function(module,exports){module.exports=require("fs-extra")},function(module,exports){module.exports=require("glob")},function(module,exports){module.exports=require("hogan.js")},function(module,exports){module.exports=require("lodash")},function(module,exports){module.exports=require("underscore.string")},function(module,exports){module.exports=require("which")},function(module,exports){module.exports=require("uuid")},function(module,exports){module.exports=require("chalk")},function(module,exports){module.exports=require("semver-regex")},function(module,exports){module.exports=require("cli-spinner")},function(module,exports){module.exports=require("jsdom")},function(module,exports){module.exports=require("xmldom")},function(module,exports){module.exports=require("jquery")},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const path=__webpack_require__(0);const os=__webpack_require__(4);const child_process_1=__webpack_require__(30);const libs_1=__webpack_require__(3);const settings_1=__webpack_require__(5);function handleError(error){settings_1.assert(false,error)}exports.handleError=handleError;function templatePath(target){if(null==target){return path.join(settings_1.getLibPath(),"templates")}else{return path.join(settings_1.getLibPath(),"templates",target)}}exports.templatePath=templatePath;function getSpinner(format,index){const spinners=["|/-\\","┤┘┴└├┌┬┐","◢◣◤◥","▌▀▐▄","▉▊▋▌▍▎▏▎▍▌▋▊▉","▁▃▄▅▆▇█▇▆▅▄▃","☱☲☴",".oO@*","◐◓◑◒","◡◡ ⊙⊙ ◠◠","■□▪▫","←↖↑↗→↘↓↙",".oO°Oo."];const fmt=format||"%s";const spinner=new libs_1.Spinner(fmt);const idx=null!=index&&0<=index&&index<14?index:Math.floor(Math.random()*10);spinner.setSpinnerString(spinners[idx]);return spinner}exports.getSpinner=getSpinner;function normalizeText(text,options){const opt=libs_1.$.extend({},{eol:os.EOL,bom:true},options);text=text.replace(/^\ufeff/gm,"").replace(/\r\n/gm,"\n").replace(/\r/gm,"\n");if(opt.bom){text="\ufeff"+text}if("\n"!==opt.eol){text=text.replace(/\n/gm,opt.eol)}if(opt.tab){const spaces=(()=>{let s="";for(let i=0;i<opt.tab;i++){s+=" "}return s})();text=text.replace(/\t/gm,spaces)}return text}exports.normalizeText=normalizeText;function execCommand(command,args,options){return new Promise((resolve,reject)=>{const opt=libs_1.$.extend({},{stdio:"inherit",spinner:{format:"%s"},stdout:data=>{},stderr:data=>{}},options);const quoteIfNeeded=str=>{if("win32"===os.platform()&&str.includes(" ")){str='"'+str+'"';opt.shell=true}return str};libs_1.which(command,(error,resolvedCommand)=>{if(error){handleError(JSON.stringify(error))}const spinner=opt.spinner?getSpinner(opt.spinner.format,opt.spinner.index):null;if(spinner){spinner.start()}resolvedCommand=quoteIfNeeded(resolvedCommand);args=args.map(quoteIfNeeded);const child=child_process_1.spawn(resolvedCommand,args,opt).on("error",handleError).on("close",code=>{if(spinner){spinner.stop(true)}resolve(code)});if("pipe"===opt.stdio){child.stdout.on("data",data=>{opt.stdout(data.toString())});child.stderr.on("data",data=>{opt.stderr(data.toString())})}})})}exports.execCommand=execCommand;function copyTpl(src,dst,params,options){const opt=libs_1.$.extend({},{eol:os.EOL,bom:true,delimiters:"{{ }}"},options);const jst=libs_1.hogan.compile(normalizeText(libs_1.fs.readFileSync(src).toString(),{eol:"\n",bom:false}),opt);const output=normalizeText(jst.render(params),opt);libs_1.fs.ensureFileSync(dst);libs_1.fs.writeFileSync(dst,output,"utf8")}exports.copyTpl=copyTpl;function createGUID(){return"{"+libs_1.uuid.v4().toUpperCase()+"}"}exports.createGUID=createGUID;function str2XmlNode(str){let fullXML=true;if(!/<?xml/i.test(str)){fullXML=false}const $xml=libs_1.$(libs_1.$.parseXML(str));return fullXML?$xml:$xml.children()}exports.str2XmlNode=str2XmlNode;function xmlNode2Str($xml){return(new XMLSerializer).serializeToString($xml[0])}exports.xmlNode2Str=xmlNode2Str;function formatXML(str,options){const opt=libs_1.$.extend({},{eol:os.EOL,bom:true,step:2},options);let xml="";let pad=0;let indent;let node;const strArr=normalizeText(str,{eol:"\n"}).replace(/(>)(<)(\/*)/g,"$1\n$2$3").split("\n");const spaces=len=>{let s="";const _indent=len*opt.step;for(let i=0;i<_indent;i++){s+=" "}return s};for(let i=0;i<strArr.length;i++){indent=0;node=libs_1.$.trim(strArr[i]);if(node.match(/.+<\/\w[^>]*>$/)){indent=0}else if(node.match(/^<\/\w/)){if(pad>0){pad-=1}}else if(node.match(/^<\w[^>]*[^/]>.*$/)){indent=1}else{indent=0}xml+=spaces(pad)+node+"\n";pad+=indent}xml=xml.replace(/\n\n/gm,"\n").replace(/^ +\n/gm,"");return normalizeText(xml,opt)}exports.formatXML=formatXML},function(module,exports){module.exports=require("child_process")},function(module,exports,__webpack_require__){"use strict";function __export(m){for(var p in m)if(!exports.hasOwnProperty(p))exports[p]=m[p]}Object.defineProperty(exports,"__esModule",{value:true});const settings_1=__webpack_require__(5);const library_1=__webpack_require__(6);const mobile_1=__webpack_require__(8);const desktop_1=__webpack_require__(10);const web_1=__webpack_require__(12);__export(__webpack_require__(1));__export(__webpack_require__(6));__export(__webpack_require__(8));__export(__webpack_require__(10));__export(__webpack_require__(12));function newGenerator(config){switch(config.projectType){case"library":return library_1.newGeneratorLibrary(config);case"mobile":return mobile_1.newGeneratorMobile(config);case"desktop":return desktop_1.newGeneratorDesktop(config);case"web":return web_1.newGeneratorWeb(config);default:settings_1.assert(false,"unsupported project kind: "+config.projectType);return null}}exports.newGenerator=newGenerator},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});const Utils=__webpack_require__(2);exports.Utils=Utils},function(module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:true});const path=__webpack_require__(0);const utils_1=__webpack_require__(2);class GeneratorBase{constructor(_config){this._config=_config;this._projectRootDir=utils_1.getTargetDir()?utils_1.getTargetDir():path.join(process.cwd(),this._config.projectName);this._config.structureConfig=utils_1.$.extend({},this.defaultBaseStructure(),this._config.structureConfig);this._config.private="NONE"===this._config.license;this._config.outputSameDir=this._config.structureConfig.src===this._config.structureConfig.built;this._config.nodejs=(env=>{switch(env){case"node":case"electron":return true;default:return false}})(this._config.env);utils_1.debug(JSON.stringify(this._config,null,4))}run(){switch(this._config.action){case"create":return this.runCreate();default:return Promise.reject("unknown action: "+this._config.action)}}progress(key){utils_1.log(utils_1.chalk.cyan(utils_1.translate(key)))}warn(key){utils_1.log(utils_1.chalk.yellow(utils_1.translate(key)))}chdir(directory){process.chdir(directory)}get rootDir(){return this._projectRootDir}copyTplDir(target,dstRoot,options){dstRoot=dstRoot||this.rootDir;options=utils_1.$.extend({cwd:utils_1.templatePath(target),nodir:true,dot:true},options);utils_1.glob.sync("**",options).forEach(file=>{const dst=path.join(dstRoot,file.replace(/src/,this._config.structureConfig.src).replace(/pkg/,this._config.structureConfig.pkg).replace(/built/,this._config.structureConfig.built).replace(/doc/,this._config.structureConfig.doc).replace(/task/,this._config.structureConfig.task).replace(/test/,this._config.structureConfig.test).replace(/types/,this._config.structureConfig.types).replace(/temp\//,this._config.structureConfig.temp+"/").replace(/lib/,this._config.structureConfig.lib||"lib").replace(/external/,this._config.structureConfig.external||"external").replace(/porting/,this._config.structureConfig.porting||"porting").replace(/res/,this._config.structureConfig.res||"res").replace(/script/,this._config.structureConfig.srcConfig?this._config.structureConfig.srcConfig.script||"scripts":"scripts").replace(/stylesheet/,this._config.structureConfig.srcConfig?this._config.structureConfig.srcConfig.stylesheet||"stylesheets":"stylesheets").replace(/template/,this._config.structureConfig.srcConfig?this._config.structureConfig.srcConfig.template||"templates":"templates"));utils_1.fs.copySync(path.join(utils_1.templatePath(target),file),dst)})}queryNodeModuleLatestVersion(name){return new Promise((resolve,reject)=>{let version;utils_1.execCommand("npm",["info",name,"version"],{stdio:"pipe",spinner:null,stdout:data=>{version=utils_1._.trim(data)}}).then(()=>{resolve(version)}).catch(reason=>{reject(reason)})})}get defaultDevDependencies(){const base=[{name:"convert-source-map",version:undefined},{name:"del",version:undefined},{name:"eslint",version:undefined},{name:"npm-run-all",version:undefined},{name:"plato",version:undefined},{name:"source-map",version:undefined},{name:"tslint",version:undefined},{name:"typedoc",version:undefined},{name:"typescript",version:undefined}];const minify=[{name:"uglify-js",version:undefined,es:["es5"]},{name:"uglify-es",version:undefined,es:["es2015"]}];let extra=[];if(this._config.minify){extra=extra.concat(minify)}if(this.isEnableTool("webpack")){extra.push({name:"webpack",version:undefined});extra.push({name:"source-map-loader",version:undefined})}if(this.isEnableTool("nyc")){extra.push({name:"nyc",version:undefined})}if(this.isEnableTool("testem")){extra.push({name:"testem",version:undefined})}if(this.isEnableTool("phantomjs-prebuilt")){extra.push({name:"phantomjs-prebuilt",version:undefined})}return utils_1._.sortBy(base.concat(extra),depend=>depend.name)}queryDependenciesParam(dependencies){return __awaiter(this,void 0,void 0,function*(){this.progress("base.create.queryVersion");const depends=dependencies.filter(depend=>{if(null==depend.es){return true}else{return!!depend.es.find(esVersion=>{return this._config.es===esVersion})}});utils_1.debug(JSON.stringify(depends,null,4));const progress=context=>{if("string"===typeof context&&!this._config.settings.silent){const spinner=utils_1.getSpinner(utils_1.chalk.yellow(context),5);spinner.start();return spinner}else if(context){context.stop(true)}};for(let i=0,n=depends.length;i<n;i++){if(null==depends[i].version){const spinner=progress(depends[i].name);depends[i].version="^"+(yield this.queryNodeModuleLatestVersion(depends[i].name));progress(spinner)}if(i===n-1){depends[i].last=true}}return depends})}queryWebpackLibraryTarget(){switch(this._config.module){case"commonjs":return"commonjs2";case"amd":return"amd";case"umd":return"umd";default:return undefined}}queryEsLintEnvParam(){const compileSetting=this._config;return{es6:"es5"!==compileSetting.es,node:"web"!==compileSetting.env}}isEnableTool(name){return!!this._config.tools.find(tool=>name===tool)}runCreate(){return __awaiter(this,void 0,void 0,function*(){yield this.createBase();yield this.create()})}createBase(){return __awaiter(this,void 0,void 0,function*(){this.progress("base.create.foundation");yield this.createProjectDir();yield this.copyBaseStructure();yield this.copyCommonFiles();yield this.copyTaskScripts()})}createProjectDir(){if(utils_1.fs.existsSync(this.rootDir)){throw Error(utils_1.translate("base.create.error.alreadyExist"))}utils_1.fs.mkdirsSync(this.rootDir)}copyBaseStructure(){this.copyTplDir("base/structure")}copyCommonFiles(){const srcDir=utils_1.templatePath("base");const dstDir=this.rootDir;utils_1.copyTpl(path.join(srcDir,"_npmignore"),path.join(dstDir,".npmignore"),this._config.structureConfig);utils_1.fs.copySync(path.join(srcDir,"_BANNER"),path.join(dstDir,"BANNER"));switch(this._config.license){case"Apache-2.0":utils_1.fs.copySync(path.join(srcDir,"_LICENSE.Apache-2.0"),path.join(dstDir,"LICENSE"));break;case"MIT":utils_1.copyTpl(path.join(srcDir,"_LICENSE.MIT"),path.join(dstDir,"LICENSE"),this._config.copyright);break;default:break}utils_1.fs.copySync(path.join(srcDir,"_NOTICE"),path.join(dstDir,"NOTICE"));if(this.isEnableTool("webpack")){const param={nodejs:this._config.nodejs,guide:true,taskPath:this._config.structureConfig.task};utils_1.copyTpl(path.join(srcDir,"tools/webpack/_webpack.config.js"),path.join(dstDir,"webpack.config.js"),param,{delimiters:"<% %>"})}}copyTaskScripts(){const srcDir=utils_1.templatePath("base/task");const dstDir=path.join(this.rootDir,this._config.structureConfig.task);this.taskList.forEach(task=>{utils_1.fs.copySync(path.join(srcDir,task),path.join(dstDir,task))})}}exports.GeneratorBase=GeneratorBase}]); //# sourceMappingURL=cdp-lib.min.js.map