"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CIProject=exports.getProjectAttr=void 0;const tslib_1=require("tslib"),path_1=tslib_1.__importDefault(require("path")),fs_1=tslib_1.__importDefault(require("fs")),glob_1=tslib_1.__importDefault(require("glob")),config_1=require("../config/config"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),error_1=require("../utils/error"),request_1=require("../utils/request"),types_1=require("../types"),tools_1=require("../utils/tools"),baseProject_1=require("./baseProject"),projectattr_1=require("../ci/projectattr"),miniappattr_1=require("../ci/miniappattr");var projectattr_2=require("../ci/projectattr");Object.defineProperty(exports,"getProjectAttr",{enumerable:!0,get:function(){return projectattr_2.getProjectAttr}});class CIProject extends baseProject_1.BaseProject{constructor(t){super();const{type:e,projectPath:r,ignores:i,privateKey:o="",privateKeyPath:s=""}=t;let a=t.appid;if(!r)throw new error_1.CodeError(locales_1.default.config.SHOULD_NOT_BE_EMPTY.format("projectPath"),config_1.PARAM_ERROR);this._projectPath=path_1.default.isAbsolute(r)?(0,tools_1.normalizePath)(r):(0,tools_1.normalizePath)(path_1.default.join(process.cwd(),r));const p=this.getProjectConfig();if(!a){if(!p.appid)throw new error_1.CodeError(locales_1.default.config.SHOULD_NOT_BE_EMPTY.format("appid"),config_1.PARAM_ERROR);a=p.appid}if(o)this._privateKey=o;else{if(!s)throw new error_1.CodeError(locales_1.default.config.SHOULD_NOT_BE_EMPTY.format("privateKeyPath"),config_1.PARAM_ERROR);try{this._privateKey=fs_1.default.readFileSync(s).toString("utf8")}catch(t){throw new error_1.CodeError(t.toString(),config_1.PARAM_ERROR)}}this._projectArchitecture=p.projectArchitecture||"miniProgram",this._miniprogramRoot=p.miniprogramRoot||"",this._pluginRoot=p.pluginRoot||"",this._appid=a,this._type=e||types_1.EProjectType.miniProgram,this.ignores=i||[],this.setting=p.setting||{},this._project=t,this._targetPlatform=t.targetPlatform||"mini-weixin",this.init()}get project(){return this._project}async init(){(0,request_1.initGlobalProxy)(),this.updateFileAndDirs()}updateFileAndDirs(){const t=glob_1.default.sync("**",{nodir:!1,ignore:[...(0,config_1.getDefaultIgnores)(this),...this.ignores],nosort:!0,strict:!1,silent:!0,cwd:this.projectPath,absolute:!1,mark:!0,dot:!0});for(const e of t){const t=e.replace(/\\/g,path_1.default.posix.sep),r=fs_1.default.statSync(path_1.default.posix.join(this.projectPath,e));r.isDirectory()&&this.cacheDirName(this._dirSet,t.replace(/\/$/,"")),r.isFile()&&(this._fileSet.add(t),this.cacheDirName(this._dirSet,path_1.default.posix.dirname(t)))}}async attr(){return"function"==typeof this._project.attr?await this._project.attr():(this._attr||(this._attr=await(0,projectattr_1.getProjectAttr)(this._privateKey,this._appid)),this._attr)}async getExtAppid(){if(this._extAppid)return this._extAppid;if(null!==this._extAppid)try{const t=await this.getProjectConfig(),{miniprogramRoot:e=""}=t,r=this.getFile(e,"ext.json"),i=JSON.parse(r.toString("utf-8"));return i.extEnable&&i.extAppid?this._extAppid=i.extAppid:this._extAppid=null,this._extAppid}catch(t){this._extAppid=null}}isMiniappProject(){return"multiPlatform"===this._projectArchitecture}async miniappAttr(){return this.isMiniappProject()?this._miniappAttr?Promise.resolve(this._miniappAttr):(this._miniappAttr=await(0,miniappattr_1.getMiniappAttr)(this._privateKey,this._appid),this._miniappAttr):Promise.resolve({})}async serialize(){return Object.assign(Object.assign({},await super.serialize()),{targetPlatform:this._targetPlatform,targetPlatformDefines:{}})}}exports.CIProject=CIProject;