miniprogram-ci 2.1.18 → 2.1.20
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/CHANGELOG.md +5 -0
- package/README.md +7 -2
- package/dist/@types/ci/upload.d.ts +1 -0
- package/dist/@types/config/config.d.ts +1 -1
- package/dist/@types/index.d.ts +2 -1
- package/dist/@types/modules/corecompiler/summerCompiler.d.ts +2 -0
- package/dist/@types/schema/@types/appjson.d.ts +1 -1
- package/dist/@types/schema/@types/pagejson.d.ts +1 -0
- package/dist/@types/utils/miniappJson.d.ts +1 -0
- package/dist/ci/android-miniapp-toolkit/dist/index.js +1 -1
- package/dist/ci/cos-upload.js +1 -1
- package/dist/ci/gamepkg/index.js +1 -1
- package/dist/ci/getCompiledResult.js +1 -1
- package/dist/ci/miniapp/miniappPlugin.js +1 -1
- package/dist/ci/miniapp/upload.js +1 -1
- package/dist/ci/upload.js +1 -1
- package/dist/common/code-analyse/index.js +1 -1
- package/dist/config/config.js +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/corecompiler/summer/plugins/base/wxss.js +1 -1
- package/dist/modules/corecompiler/summerCompiler.js +1 -1
- package/dist/modules/nativecompiler/ios/index.js +1 -1
- package/dist/schema/dist/app.js +2 -1
- package/dist/schema/dist/ext.js +4 -1
- package/dist/schema/dist/game.js +1 -1
- package/dist/schema/dist/page.js +4 -1
- package/dist/schema/dist/plugin.js +1 -1
- package/dist/schema/dist/pluginpage.js +1 -1
- package/dist/schema/dist/projectconfig.js +3 -3
- package/dist/schema/dist/projectprivateconfig.js +1 -1
- package/dist/schema/dist/sitemap.js +1 -1
- package/dist/schema/dist/theme.js +1 -1
- package/dist/static/scripts/resignIpa +10 -2
- package/dist/utils/miniappJson.js +1 -1
- package/package.json +3 -1
package/dist/ci/cos-upload.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadByCosSafely=exports.uploadByCos=exports.innerRequest=void 0;const tslib_1=require("tslib"),url_config_1=require("../config/url.config"),tools_1=require("../utils/tools"),request_1=require("../utils/request"),sign_1=require("../utils/sign"),pack_1=require("./utils/pack"),config_1=require("../config/config"),index_1=require("../utils/asyncTask/index"),log=tslib_1.__importStar(require("../utils/log")),jsonParse_1=require("../utils/jsonParse"),__1=require(".."),zlib=require("zlib"),crypto=require("crypto"),COS=require("cos-nodejs-sdk-v5");async function putBufferToCos(e,t){const r=new COS({Proxy:(0,request_1.getCiProxy)(),getAuthorization(e,r){r({TmpSecretId:t.secret_id,TmpSecretKey:t.secret_key,XCosSecurityToken:t.token,ExpiredTime:t.expired_time})}});try{return await new Promise((o,a)=>{r.putObject({Bucket:t.bucket,Region:"ap-shanghai",Key:t.object,Body:e,onProgress(e){}},(e,t)=>{if(e)return console.error(e),a(e.error);o(t)})})}catch(e){throw new Error("upload to cos failed: "+e.message)}}async function innerRequest(e,t){const r=await(0,request_1.request)({url:e,method:"post",body:t,headers:{"content-type":"application/json"}});let o;try{o=JSON.parse(r.body)}catch(t){const r=`request ${e} failed: resp body is not a valid json`;throw log.error(r),new Error(r)}if(0!==o.errCode){const e=`request failed, errCode: ${o.errCode}, errMsg: ${o.errMsg}`;throw log.error(e),new Error(e)}return o.data}async function uploadByCos(e,t,r,o){let a;try{const e=await(0,sign_1.getSignature)(r.privateKey,r.appid);a=await innerRequest(url_config_1.GET_UPLOAD_TOKEN,JSON.stringify({appid:r.appid,signature:e,robot:o}))}catch(e){return console.error("uploadToken error",e),{fallback:!0}}const i=e,s=crypto.randomBytes(12),n=crypto.createCipheriv("aes-256-gcm",Buffer.from(a.crypt_key,"base64"),s),u=Buffer.concat([n.update(i),n.final()]),c=n.getAuthTag(),p=Buffer.alloc(1);p.writeUInt8(c.length+s.length,0);const l=Buffer.concat([p,c,s,u]),d=Date.now();await putBufferToCos(l,a);const f=Date.now()-d,g=(0,tools_1.generateMD5)(i),_=await(0,sign_1.getSignature)(r.privateKey,r.appid),y=`${t}&task_id=${a.task_id}&new_hash=${g}&upload_cos_cost_time=${f}`;log.info("request url:",y);const w=await(0,request_1.request)({url:y,method:"post",body:zlib.gzipSync((0,pack_1.pack)({[index_1.SIGNATURE_FILE_NAME]:JSON.stringify({signature:_,version:config_1.CI_VERSION})}).buffer)});if(0!==(0,jsonParse_1.jsonRespParse)(w.body.toString(),t).errCode)throw new Error(w.body.toString());for(;;){const e=await(0,sign_1.getSignature)(r.privateKey,r.appid),t=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${a.task_id}`,JSON.stringify({appid:r.appid,signature:e,robot:o}));if(1!==t.status){if(0===t.status)return{fallback:!1,body:t,uploadCOSCostTime:f};if(3===t.status)throw new Error(`upload failed with status ${t.status}, task not found`);throw new Error("upload failed with status "+t.status)}await new Promise(e=>{setTimeout(e,1e3)})}}async function uploadByCosSafely(e,t,r,o){let a;try{const e=await(0,sign_1.getSignature)(r.privateKey,r.appid);a=await innerRequest(url_config_1.GET_UPLOAD_INFO,JSON.stringify({appid:r.appid,signature:e,robot:o}))}catch(e){return console.error("getUploadInfo failed",e),{fallback:!0}}const i=crypto.randomBytes(12),s=crypto.createCipheriv("aes-256-gcm",Buffer.from(a.crypt_key,"base64"),i),n=Buffer.concat([s.update(e),s.final()]),u=s.getAuthTag();console.info("nonce
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadByCosSafely=exports.uploadByCos=exports.innerRequest=void 0;const tslib_1=require("tslib"),url_config_1=require("../config/url.config"),tools_1=require("../utils/tools"),request_1=require("../utils/request"),sign_1=require("../utils/sign"),pack_1=require("./utils/pack"),config_1=require("../config/config"),index_1=require("../utils/asyncTask/index"),log=tslib_1.__importStar(require("../utils/log")),jsonParse_1=require("../utils/jsonParse"),__1=require(".."),zlib=require("zlib"),crypto=require("crypto"),COS=require("cos-nodejs-sdk-v5");async function putBufferToCos(e,t){const r=new COS({Proxy:(0,request_1.getCiProxy)(),getAuthorization(e,r){r({TmpSecretId:t.secret_id,TmpSecretKey:t.secret_key,XCosSecurityToken:t.token,ExpiredTime:t.expired_time})}});try{return await new Promise((o,a)=>{r.putObject({Bucket:t.bucket,Region:"ap-shanghai",Key:t.object,Body:e,onProgress(e){}},(e,t)=>{if(e)return console.error(e),a(e.error);o(t)})})}catch(e){throw new Error("upload to cos failed: "+e.message)}}async function innerRequest(e,t){const r=await(0,request_1.request)({url:e,method:"post",body:t,headers:{"content-type":"application/json"}});let o;try{o=JSON.parse(r.body)}catch(t){const r=`request ${e} failed: resp body is not a valid json`;throw log.error(r),new Error(r)}if(0!==o.errCode){const e=`request failed, errCode: ${o.errCode}, errMsg: ${o.errMsg}`;throw log.error(e),new Error(e)}return o.data}async function uploadByCos(e,t,r,o){let a;try{const e=await(0,sign_1.getSignature)(r.privateKey,r.appid);a=await innerRequest(url_config_1.GET_UPLOAD_TOKEN,JSON.stringify({appid:r.appid,signature:e,robot:o}))}catch(e){return console.error("uploadToken error",e),{fallback:!0}}const i=e,s=crypto.randomBytes(12),n=crypto.createCipheriv("aes-256-gcm",Buffer.from(a.crypt_key,"base64"),s),u=Buffer.concat([n.update(i),n.final()]),c=n.getAuthTag(),p=Buffer.alloc(1);p.writeUInt8(c.length+s.length,0);const l=Buffer.concat([p,c,s,u]),d=Date.now();await putBufferToCos(l,a);const f=Date.now()-d,g=(0,tools_1.generateMD5)(i),_=await(0,sign_1.getSignature)(r.privateKey,r.appid),y=`${t}&task_id=${a.task_id}&new_hash=${g}&upload_cos_cost_time=${f}`;log.info("request url:",y);const w=await(0,request_1.request)({url:y,method:"post",body:zlib.gzipSync((0,pack_1.pack)({[index_1.SIGNATURE_FILE_NAME]:JSON.stringify({signature:_,version:config_1.CI_VERSION})}).buffer)});if(0!==(0,jsonParse_1.jsonRespParse)(w.body.toString(),t).errCode)throw new Error(w.body.toString());for(;;){const e=await(0,sign_1.getSignature)(r.privateKey,r.appid),t=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${a.task_id}`,JSON.stringify({appid:r.appid,signature:e,robot:o}));if(1!==t.status){if(0===t.status)return{fallback:!1,body:t,uploadCOSCostTime:f};if(3===t.status)throw new Error(`upload failed with status ${t.status}, task not found`);throw new Error("upload failed with status "+t.status)}await new Promise(e=>{setTimeout(e,1e3)})}}async function uploadByCosSafely(e,t,r,o){let a;try{const e=await(0,sign_1.getSignature)(r.privateKey,r.appid);a=await innerRequest(url_config_1.GET_UPLOAD_INFO,JSON.stringify({appid:r.appid,signature:e,robot:o}))}catch(e){return console.error("getUploadInfo failed",e),{fallback:!0}}const i=crypto.randomBytes(12),s=crypto.createCipheriv("aes-256-gcm",Buffer.from(a.crypt_key,"base64"),i),n=Buffer.concat([s.update(e),s.final()]),u=s.getAuthTag();console.info("nonce size:%d",i.length),console.info("tag size:%d",u.length),console.info("encrypted size:%d",n.length);const c=Buffer.alloc(1);c.writeUInt8(u.length+i.length,0);const p=Buffer.concat([c,u,i,n]),l=Date.now();try{await __1.cosUpload.uploadToCosCore({uploadBuf:p,region:"ap-shanghai",getUploadInfoFunc:async()=>a,getAuthFunc:async e=>{let t,i={},s={};switch(e.action){case"name/cos:InitiateMultipartUpload":i={uploads:""};break;case"name/cos:ListMultipartUploads":i={uploads:"",prefix:a.object},s={};break;case"name/cos:UploadPart":case"name/cos:ListParts":case"name/cos:CompleteMultipartUpload":i={uploadId:e.uploadId},s={};break;default:throw new Error("no action ")}try{const n=await(0,sign_1.getSignature)(r.privateKey,r.appid),u=await innerRequest(url_config_1.GET_UPLOAD_SIGN,JSON.stringify({appid:r.appid,signature:n,robot:o,signOpts:JSON.stringify({checksum:a.checksum,action:e.action,upload_id:e.uploadId,headers:s,params:i})}));t={Authorization:u.sign,SecurityToken:u.token,AuthExpireTime:u.expired_time}}catch(e){throw console.info("uploadToCos safely failed ,start fallback"),console.log(e),new Error("")}return t}})}catch(e){return{fallback:!0}}const d=Date.now()-l,f=(0,tools_1.generateMD5)(e),g=await(0,sign_1.getSignature)(r.privateKey,r.appid),_=`${t}&task_id=${a.task_id}&new_hash=${f}&upload_cos_cost_time=${d}`;log.info("request url:",_);const y=await(0,request_1.request)({url:_,method:"post",body:zlib.gzipSync((0,pack_1.pack)({[index_1.SIGNATURE_FILE_NAME]:JSON.stringify({signature:g,version:config_1.CI_VERSION})}).buffer)});if(0!==(0,jsonParse_1.jsonRespParse)(y.body.toString(),t).errCode)throw new Error(y.body.toString());for(;;){const e=await(0,sign_1.getSignature)(r.privateKey,r.appid),t=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${a.task_id}`,JSON.stringify({appid:r.appid,signature:e,robot:o}));if(1!==t.status){if(0===t.status)return{fallback:!1,body:t,uploadCOSCostTime:d};if(3===t.status)throw new Error(`upload failed with status ${t.status}, task not found`);throw new Error("upload failed with status "+t.status)}await new Promise(e=>{setTimeout(e,1e3)})}}exports.innerRequest=innerRequest,exports.uploadByCos=uploadByCos,exports.uploadByCosSafely=uploadByCosSafely;
|
package/dist/ci/gamepkg/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadGamePkgPlugByCos=exports.uploadGamePkg=void 0;const tslib_1=require("tslib"),url_config_1=require("../../config/url.config"),cosUpload_1=require("../../utils/cosUpload"),taskstatus_1=require("../../utils/taskstatus"),zlib_1=tslib_1.__importDefault(require("zlib")),querystring_1=tslib_1.__importDefault(require("querystring")),sign_1=require("../../utils/sign"),cos_upload_1=require("../cos-upload"),pack_1=require("../utils/pack"),fs_1=tslib_1.__importDefault(require("fs")),log=tslib_1.__importStar(require("../../utils/log")),config_1=require("../../config/config"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),request_1=require("../../utils/request"),index_1=require("../../utils/asyncTask/index"),tools_1=require("../../utils/tools"),MIN_GAME_PKG_SIZE=5;async function uploadGamePkg(e){if(!fs_1.default.existsSync(e.pkgPath||"")||fs_1.default.statSync(e.pkgPath).isDirectory())throw new Error("[upload game pkg]failed! cant find file: "+e.pkgPath);const a=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadGamePkgPlugByCos=exports.uploadGamePkg=void 0;const tslib_1=require("tslib"),url_config_1=require("../../config/url.config"),cosUpload_1=require("../../utils/cosUpload"),taskstatus_1=require("../../utils/taskstatus"),zlib_1=tslib_1.__importDefault(require("zlib")),querystring_1=tslib_1.__importDefault(require("querystring")),sign_1=require("../../utils/sign"),cos_upload_1=require("../cos-upload"),pack_1=require("../utils/pack"),fs_1=tslib_1.__importDefault(require("fs")),log=tslib_1.__importStar(require("../../utils/log")),config_1=require("../../config/config"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),request_1=require("../../utils/request"),index_1=require("../../utils/asyncTask/index"),tools_1=require("../../utils/tools"),MIN_GAME_PKG_SIZE=5;async function uploadGamePkg(e){if(!fs_1.default.existsSync(e.pkgPath||"")||fs_1.default.statSync(e.pkgPath).isDirectory())throw new Error("[upload game pkg]failed! cant find file: "+e.pkgPath);const a=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(()=>{})),t={appid:e.project.appid,version:e.version,desc:e.desc,robot:e.robot},o=`${url_config_1.GAME_PKG_UPLOAD_URL}?${querystring_1.default.stringify(t)}`,s=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());a(s);const{fallback:r,uploadCOSCostTime:i}=await uploadGamePkgPlugByCos(e.pkgPath,o,e.project,e.robot,e.onProgressUpdate);return null!=i||log.log("[upload game pkg] total cost time : "+i),r&&log.error("[upload game pkg] failed!"),s.done(),a(s),{success:!r}}async function uploadGamePkgPlugByCos(e,a,t,o,s){let r;const i=await(0,tools_1.generateFileMD5)(e),l=fs_1.default.statSync(e).size;if(log.info("[upload game pkg] rawSize: "+l),Math.ceil(l/1024/1024)<5)return log.error("[upload game pkg] file size must larger than 5M"),{fallback:!0};try{const e=await(0,sign_1.getSignature)(t.privateKey,t.appid),a=await(0,cos_upload_1.innerRequest)(url_config_1.GET_GAME_PKG_UPLOAD_INFO,JSON.stringify({appid:t.appid,signature:e,robot:o,rawSize:""+l,md5:i}));r=Object.assign(Object.assign({},a),a.upload_info)}catch(e){return log.error("[upload game pkg] getUploadInfo failed",e),{fallback:!0}}log.info("[upload game pkg] get upload info succcessfuly");const u=await(0,index_1.encryptLocalFile)(e,r),n=Date.now();try{await(0,cosUpload_1.uploadToCosCore)({uploadBuf:u,region:"ap-shanghai",onProgress:e=>{null==s||s(e);try{log.log(`[upload game pkg] percent: ${Math.floor(100*e.percent)}% loaded: ${e.loaded}bytes total: ${e.total}bytes`)}catch(e){}},getUploadInfoFunc:async()=>r,getAuthFunc:async e=>{let a,s={},i={};switch(e.action){case"name/cos:InitiateMultipartUpload":s={uploads:""};break;case"name/cos:ListMultipartUploads":s={uploads:"",prefix:r.object},i={};break;case"name/cos:UploadPart":case"name/cos:ListParts":case"name/cos:CompleteMultipartUpload":s={uploadId:e.uploadId},i={};break;default:throw log.error("[upload game pkg] cos upload no action"),new Error("[upload game pkg] cos upload no action")}try{const l=await(0,sign_1.getSignature)(t.privateKey,t.appid),u=await(0,cos_upload_1.innerRequest)(url_config_1.GET_GAME_PKG_UPLOAD_SIGN,JSON.stringify({appid:t.appid,signature:l,robot:o,signOpts:JSON.stringify({checksum:r.checksum,action:e.action,upload_id:e.uploadId,task_id:r.task_id,headers:i,params:s})}));a={Authorization:u.sign,SecurityToken:u.token,AuthExpireTime:u.expired_time}}catch(e){throw log.info("game pkg uploadToCos safely failed"),log.log(e),new Error("game pkg uploadToCos safely failed")}return a}})}catch(e){return log.error("[upload game pkg] getUploadInfo failed",e.message),{fallback:!0}}const p=Date.now()-n,g=await(0,tools_1.generateFileMD5)(u),d=""+fs_1.default.statSync(u).size,c=await(0,sign_1.getSignature)(t.privateKey,t.appid),_=`${a}&task_id=${r.task_id}&new_hash=${g}&upload_cos_cost_time=${p}&str_stored_size=${d}`;log.info("request url:",_);const f=await(0,request_1.request)({url:_,method:"post",body:zlib_1.default.gzipSync((0,pack_1.pack)({[index_1.SIGNATURE_FILE_NAME]:JSON.stringify({signature:c,version:config_1.CI_VERSION})}).buffer)});if(0!==(0,jsonParse_1.jsonRespParse)(f.body.toString(),a).errCode)throw new Error(f.body.toString());for(;;){const e=await(0,sign_1.getSignature)(t.privateKey,t.appid),a=await(0,cos_upload_1.innerRequest)(`${url_config_1.GET_GAME_PKG_ASYNC_RESULT}?task_id=${r.task_id}`,JSON.stringify({appid:t.appid,signature:e,robot:o}));if(2!==a.status){if(3===a.status){return{fallback:!1,body:a,uploadCOSCostTime:Date.now()-n}}if(0===a.status)throw new Error(`upload failed with status ${a.status}, task not found`);throw new Error("upload failed with status "+a.status)}await new Promise(e=>{setTimeout(e,1e3)})}}exports.uploadGamePkg=uploadGamePkg,exports.uploadGamePkgPlugByCos=uploadGamePkgPlugByCos;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiledResult=void 0;const tslib_1=require("tslib"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),config_1=require("../config/config"),error_1=require("../utils/error"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),cache_1=require("../utils/cache"),progressupdate_1=require("./utils/progressupdate"),jszip_1=tslib_1.__importDefault(require("jszip")),path_1=tslib_1.__importDefault(require("path")),getcompiler_1=require("./getcompiler"),tools_1=require("./utils/tools");async function getCompiledResult(e,t){const{project:r,setting:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiledResult=void 0;const tslib_1=require("tslib"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),config_1=require("../config/config"),error_1=require("../utils/error"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),cache_1=require("../utils/cache"),progressupdate_1=require("./utils/progressupdate"),jszip_1=tslib_1.__importDefault(require("jszip")),path_1=tslib_1.__importDefault(require("path")),getcompiler_1=require("./getcompiler"),tools_1=require("./utils/tools");async function getCompiledResult(e,t){const{project:r,setting:s={},onProgressUpdate:o=(()=>{}),threads:i=0,includedMap:a=!1}=e;if(process.env.COMPILE_THREADS=i.toString(),!r)throw new error_1.CodeError(locales_1.default.config.PARAM_ERROR.format("upload","project"),config_1.PARAM_ERROR);cache_1.cacheManager.clean();const l=await(0,getcompiler_1.getCompiler)(r,s),p=await l.compile({setting:(0,tools_1.formatCISetting)(r,s),onProgressUpdate:(0,progressupdate_1.transProgressUpdate)(o),resultType:"prod",disableSpreadingUsingComponents:!0}),u={};if(Object.keys(p).sort().forEach(e=>{e.endsWith("js.map")&&!a||(u[e]=p[e])}),t){const e=new jszip_1.default;Object.keys(u).forEach(t=>{e.folder(path_1.default.dirname(t)).file(path_1.default.basename(t),u[t])});const r=await e.generateAsync({type:"nodebuffer"});fs_extra_1.default.ensureDirSync(path_1.default.dirname(t)),fs_extra_1.default.writeFileSync(t,r)}return u}exports.getCompiledResult=getCompiledResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMiniappPluginManager=exports.OS_TYPE_ENUM=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),urlConfig=tslib_1.__importStar(require("../../config/url.config")),ciRequest_1=require("../utils/ciRequest"),log=tslib_1.__importStar(require("../../utils/log")),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),request=require("request");var OS_TYPE_ENUM;!function(i){i.IOS="1",i.ANDROID="2"}(OS_TYPE_ENUM=exports.OS_TYPE_ENUM||(exports.OS_TYPE_ENUM={}));class MiniappPluginManager{constructor(i){this.WeappMiniApp="",this.project=i.project,this.ciOpts=i,this.WeappMiniApp=i.resourceDir}async getUsedPluginVersionInfo(i){const{osType:e,pluginList:n}=i;return await(0,ciRequest_1.ciSimpleRequest)({privateKey:this.project.privateKey,appid:this.project.appid,robot:this.ciOpts.robot,cgi:`${urlConfig.getUsedPluginVersionInfo}?os_type=${e}`},{plugin_list:n})}async downloadMiniAppPlugin(i){const{pluginList:e,osType:n}=i,t=this.project.appid,r=this.project.privateKey,s=await(0,sign_1.getSignature)(r,t),o=`${urlConfig.downloadMiniAppPlugin}?os_type=${n}`;return new Promise((i,n)=>{request({url:o,method:"post",body:JSON.stringify({appid:t,signature:s,robot:this.ciOpts.robot,plugin_list:e}),headers:{"content-type":"application/json"}},i=>{i&&n(i)}).on("response",e=>{var t;const r=null===(t=e.headers["content-type"])||void 0===t?void 0:t.toLocaleLowerCase();if((null==r?void 0:r.includes("text/plain"))||(null==r?void 0:r.includes("application/json"))){let t="";e.on("data",i=>{t+=i}),e.on("end",()=>{try{t=(0,jsonParse_1.jsonRespParse)(t,o),i(t.data)}catch(i){n((i.message||i)+" at downloadMiniAppPlugin")}})}else{const n=[];e.setEncoding("binary"),e.on("data",i=>{n.push(Buffer.from(i,"binary"))}),e.on("end",()=>{const e=Buffer.concat(n);i(e)})}e.on("error",i=>{n((i.message||i)+" at downloadMiniAppPlugin")})})})}async removePluginDir(i,e){var n;const t=path_1.default.join(this.WeappMiniApp,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios")),r=null===(n=fs_extra_1.default.readdirSync(t,{withFileTypes:!0}).find(i=>i.name.startsWith(e)))||void 0===n?void 0:n.name;r&&fs_extra_1.default.removeSync(path_1.default.join(t,r))}async downloadPlugin(i){var e;const n=this.project,t=(0,miniappJson_1.tryGetPluginMiniappJson)(n.projectPath),r=(null===(e=null==t?void 0:t[i===OS_TYPE_ENUM.ANDROID?"android":"ios"])||void 0===e?void 0:e.filter(i=>i.open&&i.pluginId&&i.pluginVersion&&!i.isFromLocal))||[];if(!r.length)return;const{baseresponse:s,info_list:o}=await this.getUsedPluginVersionInfo({pluginList:r.map(i=>({plugin_id:i.pluginId,version:i.pluginVersion})),osType:i});if(0!==s.errcode)throw new Error("获取插件信息失败 "+s.errmsg);const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMiniappPluginManager=exports.OS_TYPE_ENUM=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),urlConfig=tslib_1.__importStar(require("../../config/url.config")),ciRequest_1=require("../utils/ciRequest"),log=tslib_1.__importStar(require("../../utils/log")),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),request=require("request");var OS_TYPE_ENUM;!function(i){i.IOS="1",i.ANDROID="2"}(OS_TYPE_ENUM=exports.OS_TYPE_ENUM||(exports.OS_TYPE_ENUM={}));class MiniappPluginManager{constructor(i){this.WeappMiniApp="",this.project=i.project,this.ciOpts=i,this.WeappMiniApp=i.resourceDir}async getUsedPluginVersionInfo(i){const{osType:e,pluginList:n}=i;return await(0,ciRequest_1.ciSimpleRequest)({privateKey:this.project.privateKey,appid:this.project.appid,robot:this.ciOpts.robot,cgi:`${urlConfig.getUsedPluginVersionInfo}?os_type=${e}`},{plugin_list:n})}async downloadMiniAppPlugin(i){const{pluginList:e,osType:n}=i,t=this.project.appid,r=this.project.privateKey,s=await(0,sign_1.getSignature)(r,t),o=`${urlConfig.downloadMiniAppPlugin}?os_type=${n}`;return new Promise((i,n)=>{request({url:o,method:"post",body:JSON.stringify({appid:t,signature:s,robot:this.ciOpts.robot,plugin_list:e}),headers:{"content-type":"application/json"}},i=>{i&&n(i)}).on("response",e=>{var t;const r=null===(t=e.headers["content-type"])||void 0===t?void 0:t.toLocaleLowerCase();if((null==r?void 0:r.includes("text/plain"))||(null==r?void 0:r.includes("application/json"))){let t="";e.on("data",i=>{t+=i}),e.on("end",()=>{try{t=(0,jsonParse_1.jsonRespParse)(t,o),i(t.data)}catch(i){n((i.message||i)+" at downloadMiniAppPlugin")}})}else{const n=[];e.setEncoding("binary"),e.on("data",i=>{n.push(Buffer.from(i,"binary"))}),e.on("end",()=>{const e=Buffer.concat(n);i(e)})}e.on("error",i=>{n((i.message||i)+" at downloadMiniAppPlugin")})})})}async removePluginDir(i,e){var n;const t=path_1.default.join(this.WeappMiniApp,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios")),r=null===(n=fs_extra_1.default.readdirSync(t,{withFileTypes:!0}).find(i=>i.name.startsWith(e)))||void 0===n?void 0:n.name;r&&fs_extra_1.default.removeSync(path_1.default.join(t,r))}async downloadPlugin(i){var e;const n=this.project,t=(0,miniappJson_1.tryGetPluginMiniappJson)(n.projectPath),r=(null===(e=null==t?void 0:t[i===OS_TYPE_ENUM.ANDROID?"android":"ios"])||void 0===e?void 0:e.filter(i=>i.open&&i.pluginId&&i.pluginVersion&&!i.isFromLocal))||[];if(!r.length)return;const{baseresponse:s,info_list:o}=await this.getUsedPluginVersionInfo({pluginList:r.map(i=>({plugin_id:i.pluginId,version:i.pluginVersion})),osType:i});if(0!==s.errcode)throw new Error("获取插件信息失败 "+s.errmsg);const p=[],a=path_1.default.join(this.ciOpts.resourceDir,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios"));fs_extra_1.default.ensureDirSync(a);const l=fs_extra_1.default.readdirSync(a,{withFileTypes:!0});if(o.forEach(e=>{e.is_released||log.info(`使用的多端插件 ${e.plugin_id} 为开发版本,上线前请替换为发布版本`);const n=`${e.plugin_id}-${e.user_version}-`,t=l.find(i=>i.name.startsWith(n));t?e.is_released?t.name!==n+e.release_time&&(this.removePluginDir(i,e.plugin_id),p.push({plugin_id:e.plugin_id,version:e.user_version})):t.name!==n+e.commit_time&&(this.removePluginDir(i,e.plugin_id),p.push({plugin_id:e.plugin_id,version:e.user_version})):p.push({plugin_id:e.plugin_id,version:e.user_version})}),!p.length)return;log.info("多端插件下载中...");const u=await this.downloadMiniAppPlugin({pluginList:p,osType:i});if(u.baseresponse)throw new Error(`多端插件下载失败,错误代码:${u.baseresponse.errcode}, 错误描述: ${u.baseresponse.errmsg}`);log.info("多端插件下载完成");const d=(0,unpack_1.default)(u),g=Object.keys(d);for(const i of g)(0,unpack_1.default)(d[i],path_1.default.join(a,i.replace(".wxapkg","")))}async getPluginDirList(i){var e;const n=this.project,t=(0,miniappJson_1.tryGetPluginMiniappJson)(n.projectPath),r=(null===(e=null==t?void 0:t[i===OS_TYPE_ENUM.ANDROID?"android":"ios"])||void 0===e?void 0:e.filter(i=>i.open))||[];if(!r.length)return[];const s=r.filter(i=>!i.isFromLocal&&i.pluginId&&i.pluginVersion),o=r.filter(i=>i.isFromLocal);if(o.length>0){const i=o.map(i=>i.pluginId).join(",");throw new Error(`CI 构建下,多端插件 ${i} 不支持使用本地插件`)}const p=path_1.default.join(this.WeappMiniApp,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios"));fs_extra_1.default.ensureDirSync(p);const a=fs_extra_1.default.readdirSync(p,{withFileTypes:!0}).filter(i=>{const e=i.name.split("-");return i.isDirectory()&&3===e.length&&s.find(i=>i.pluginId===e[0]&&i.pluginVersion===e[1])}).map(i=>({dir:path_1.default.join(p,i.name),pluginId:i.name.split("-")[0]}));if(s.length!=a.length)throw new Error("多端插件下载列表失败,请重新构建");return a}}const getMiniappPluginManager=i=>new MiniappPluginManager(i);exports.getMiniappPluginManager=getMiniappPluginManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=void 0;const tslib_1=require("tslib"),cache_1=require("../../utils/cache"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),config_1=require("../../config/config"),getcompiler_1=require("../getcompiler"),tools_1=require("../utils/tools"),moment_1=tslib_1.__importDefault(require("moment")),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),taskstatus_1=require("../../utils/taskstatus"),pack_1=require("../utils/pack"),log=tslib_1.__importStar(require("../../utils/log")),querystring_1=tslib_1.__importDefault(require("querystring")),zlib_1=tslib_1.__importDefault(require("zlib")),request_1=require("../../utils/request"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate"),asyncTask_1=require("../../utils/asyncTask");function getMiniappBuildQuery(e){var i,t,o,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=void 0;const tslib_1=require("tslib"),cache_1=require("../../utils/cache"),locales_1=tslib_1.__importDefault(require("../../utils/locales/locales")),config_1=require("../../config/config"),getcompiler_1=require("../getcompiler"),tools_1=require("../utils/tools"),moment_1=tslib_1.__importDefault(require("moment")),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),taskstatus_1=require("../../utils/taskstatus"),pack_1=require("../utils/pack"),log=tslib_1.__importStar(require("../../utils/log")),querystring_1=tslib_1.__importDefault(require("querystring")),zlib_1=tslib_1.__importDefault(require("zlib")),request_1=require("../../utils/request"),jsonParse_1=require("../../utils/jsonParse"),progressupdate_1=require("../utils/progressupdate"),asyncTask_1=require("../../utils/asyncTask");function getMiniappBuildQuery(e){var i,t,r,o,s,n;const a=(0,moment_1.default)(new Date).format("YYYY-MM-DD-HH-mm-ss"),p={gzip:1,cross_platform_app:1,"user-version":encodeURIComponent(e.version||"miniapp-release-d-"+a),"user-desc":encodeURIComponent(e.desc||"miniapp-release-d-"+a),os_type:"mini-android"===e.targetPlatform?2:1,debug_extra_info:"miniappPkgType-"+(null===(i=e.miniappOptions)||void 0===i?void 0:i.miniappPkgType)};return(null===(t=e.miniappOptions)||void 0===t?void 0:t.uploadId)&&(p.upload_id=null===(r=e.miniappOptions)||void 0===r?void 0:r.uploadId),(null===(o=e.miniappOptions)||void 0===o?void 0:o.useCloudSync)&&(p.use_cloud_sync=1),(null===(s=e.miniappOptions)||void 0===s?void 0:s.archVersion)&&(p.arch_version=null===(n=e.miniappOptions)||void 0===n?void 0:n.archVersion),p}async function upload(e){const{project:i,setting:t={useProjectConfig:!1},robot:r="1",threads:o=0,onProgressUpdate:s=(()=>{})}=e,n=(0,progressupdate_1.transProgressUpdate)(s);process.env.COMPILE_THREADS=o.toString(),cache_1.cacheManager.clean();const a=(0,tools_1.formatCISetting)(i,t);i.setting=a;const p=e.targetPlatform;i.setting.targetPlatform=p;const u=await(0,getcompiler_1.getBuilder)(i,{targetPlatform:p}),l=await u.getCompiler(),c=await l.compile({setting:a,onProgressUpdate:n,resultType:"prod",disableSpreadingUsingComponents:!0});u.destroy();const d=config_1.CI_VERSION,_=encodeURIComponent(JSON.stringify(getMiniappBuildQuery(e))),g={appid:i.appid,robot:r,miniapparchivequery:_};try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());n(e);const t=`${url_config_1.miniappUpload}?${querystring_1.default.stringify(g)}`,r=await(0,sign_1.getSignature)(i.privateKey,i.appid);c[asyncTask_1.SIGNATURE_FILE_NAME]=JSON.stringify({signature:r,version:d});const o=(0,pack_1.pack)(c),s=zlib_1.default.gzipSync(o.buffer);log.info("request url:",t);const a=(await(0,request_1.request)({url:t,method:"post",body:s})).body.toString(),p=(0,jsonParse_1.jsonRespParse)(a,t);if(0!==p.errCode)throw new Error(a);e.done(),n(e);const u={respBody:p.body};if(Array.isArray(p.body.subpackage_info)){const e=p.body.subpackage_info;u.subPackageInfo=e,u.useSubPkg=e.length>1}if(Array.isArray(p.body.ext_plugin_info)){const e=p.body.ext_plugin_info;u.pluginInfo=e.map(e=>({pluginProviderAppid:e.provider,version:e.version,size:e.size}))}return u}catch(e){throw e}}exports.upload=upload;
|
package/dist/ci/upload.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.innerUpload=exports.upload=void 0;const tslib_1=require("tslib"),log=tslib_1.__importStar(require("../utils/log")),request_1=require("../utils/request"),pack_1=require("./utils/pack"),zlib_1=tslib_1.__importDefault(require("zlib")),sign_1=require("../utils/sign"),tools_1=require("../utils/tools"),config_1=require("../config/config"),taskstatus_1=require("../utils/taskstatus"),error_1=require("../utils/error"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),querystring_1=tslib_1.__importDefault(require("querystring")),progressupdate_1=require("./utils/progressupdate"),url_config_1=require("../config/url.config"),jsonParse_1=require("../utils/jsonParse"),cache_1=require("../utils/cache"),cos_upload_1=require("./cos-upload"),getcompiler_1=require("./getcompiler"),tools_2=require("./utils/tools"),index_1=require("../utils/asyncTask/index"),MIN_COS_UPLOAD_SIZE=5242880;async function upload(e){var o;const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.innerUpload=exports.upload=void 0;const tslib_1=require("tslib"),log=tslib_1.__importStar(require("../utils/log")),request_1=require("../utils/request"),pack_1=require("./utils/pack"),zlib_1=tslib_1.__importDefault(require("zlib")),sign_1=require("../utils/sign"),tools_1=require("../utils/tools"),config_1=require("../config/config"),taskstatus_1=require("../utils/taskstatus"),error_1=require("../utils/error"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),querystring_1=tslib_1.__importDefault(require("querystring")),progressupdate_1=require("./utils/progressupdate"),url_config_1=require("../config/url.config"),jsonParse_1=require("../utils/jsonParse"),cache_1=require("../utils/cache"),cos_upload_1=require("./cos-upload"),getcompiler_1=require("./getcompiler"),tools_2=require("./utils/tools"),index_1=require("../utils/asyncTask/index"),MIN_COS_UPLOAD_SIZE=5242880;async function upload(e){var o,r;const t=await innerUpload(e);(null===(o=t.respBody)||void 0===o?void 0:o.dev_plugin_id)&&(log.log("Development Version Plugin ID: "+t.respBody.dev_plugin_id),t.devPluginId=t.respBody.dev_plugin_id);const i={subPackageInfo:t.subPackageInfo,pluginInfo:t.pluginInfo,devPluginId:t.devPluginId};return(null===(r=t.respBody)||void 0===r?void 0:r.str_uint64version)&&(i.strUint64Version=t.respBody.str_uint64version),i}async function innerUpload(e){const{project:o,setting:r={useProjectConfig:!1},desc:t=`robot ${e.robot||"1"} use miniprogram-ci to upload at ${(0,tools_1.formatTime)(new Date)}`,version:i="",robot:s="1",test:a,pagePath:n,searchQuery:l,threads:u=0,bigPackageSizeSupport:p,onProgressUpdate:d=(()=>{})}=e,c=(0,progressupdate_1.transProgressUpdate)(d);let{useCOS:_}=e;if(process.env.COMPILE_THREADS=u.toString(),!i)throw new error_1.CodeError(locales_1.default.config.PARAM_ERROR.format("upload","version"),config_1.PARAM_ERROR);if(!o)throw new error_1.CodeError(locales_1.default.config.PARAM_ERROR.format("upload","project"),config_1.PARAM_ERROR);cache_1.cacheManager.clean();const g=await(0,getcompiler_1.getCompiler)(o,r),f=(0,tools_2.formatCISetting)(o,r),y=await g.compile({setting:f,onProgressUpdate:c,resultType:"prod",disableSpreadingUsingComponents:!0}),b=config_1.CI_VERSION,S={codeprotect:r.codeProtect?1:0,type:o.type,appid:o.appid,version:i,desc:t,robot:s},q={scene:e.scene||1011};let P;n&&(q.path=n,S.path=n),l&&(q.query=querystring_1.default.parse(l)),S.debugLaunchInfo=JSON.stringify(q),n&&l&&(S.path+="?"+l),a&&p&&(S.bigPackageSizeSupport=1);let h={};try{P=await o.getFile(o.miniprogramRoot,"ext.json"),h=JSON.parse(P.toString("utf-8"))}catch(e){}if(h&&(h.extEnable&&(S.extAppId=h.extAppid),h.directCommit)){let e="";e=h.extEnable?"The code will be uploaded into the waiting list of extAppid.":"The code will be uploaded into the draft box of the third-party platform.",log.warn(e)}try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());c(e);const r=`${a?url_config_1.TEST_SOURCE_URL:url_config_1.UPLOAD_URL}?${querystring_1.default.stringify(S)}`;let t,i=!1,n=0;const l=(0,pack_1.pack)(y),u=zlib_1.default.gzipSync(l.buffer);if(log.info("useCOS parameter: ",_),log.info("upload zip buffer size: ",u.length),void 0===_&&(_=u.length>5242880),_){log.info("upload by COS: ",_);const e=await(0,cos_upload_1.uploadByCosSafely)(u,r,o,s);e.fallback?(i=e.fallback,log.info("upload by COS failed, fallback to http way")):(t={body:e.body},n=e.uploadCOSCostTime)}if(!_||i){const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);y[index_1.SIGNATURE_FILE_NAME]=JSON.stringify({signature:e,version:b});const i=(0,pack_1.pack)(y),s=zlib_1.default.gzipSync(i.buffer);log.info("request url:",r);const a=(await(0,request_1.request)({url:r,method:"post",body:s})).body.toString();if(t=(0,jsonParse_1.jsonRespParse)(a,r),0!==t.errCode)throw new Error(a)}e.done(),c(e);const p={respBody:t.body};if(Array.isArray(t.body.subpackage_info)){const e=t.body.subpackage_info;p.subPackageInfo=e}if(Array.isArray(t.body.ext_plugin_info)){const e=t.body.ext_plugin_info;p.pluginInfo=e.map(e=>({pluginProviderAppid:e.provider,version:e.version,size:e.size}))}return g.destroy(),p}catch(e){throw new error_1.CodeError(e.toString(),config_1.UPLOAD_CGI_ERR)}}exports.upload=upload,exports.innerUpload=innerUpload;
|