miniprogram-ci 2.1.6 → 2.1.8

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.
Files changed (88) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +2 -0
  3. package/dist/@types/ci/cos-upload.d.ts +5 -0
  4. package/dist/@types/common/cloud-api/src/apis/tcb/tcb.apis.d.ts +7 -1
  5. package/dist/@types/common/cloud-api/src/transaction/contracts/tcb.contracts.d.ts +7 -1
  6. package/dist/@types/common/cloud-api/src/transaction/transactor.d.ts +1 -0
  7. package/dist/@types/common/cloud-api/src/transaction/validations/billing.validations.d.ts +2 -0
  8. package/dist/@types/common/cloud-api/src/transaction/validations/common.validations.d.ts +8 -1
  9. package/dist/@types/common/cloud-api/src/transaction/validations/tcb.validations.d.ts +7 -1
  10. package/dist/@types/common/cloud-api/src/transaction/validations/validations.d.ts +1 -0
  11. package/dist/@types/config/config.d.ts +1 -1
  12. package/dist/@types/config/url.config.d.ts +2 -0
  13. package/dist/@types/index.d.ts +2 -1
  14. package/dist/@types/modules/corecompiler/summer/graph/appconf.d.ts +2 -0
  15. package/dist/@types/modules/corecompiler/summerCompiler.d.ts +1 -0
  16. package/dist/@types/modules/createSummer.d.ts +0 -1
  17. package/dist/@types/modules/nativecompiler/ios/buildCloud.d.ts +4 -2
  18. package/dist/@types/project/baseProject.d.ts +2 -0
  19. package/dist/@types/schema/@types/appjson.d.ts +1 -1
  20. package/dist/@types/types/ci.d.ts +2 -0
  21. package/dist/@types/types/devtools.d.ts +2 -0
  22. package/dist/@types/types/miniapp/index.d.ts +1 -0
  23. package/dist/@types/utils/cosUpload.d.ts +37 -0
  24. package/dist/@types/utils/miniapp-builder.d.ts +1 -0
  25. package/dist/@types/utils/miniappJson.d.ts +124 -82
  26. package/dist/@types/utils/officialDonutPlugin.d.ts +3 -0
  27. package/dist/@types/utils/packOptionsHelper.d.ts +3 -1
  28. package/dist/@types/utils/tools.d.ts +2 -0
  29. package/dist/ci/android-miniapp-toolkit/dist/index.js +1 -1
  30. package/dist/ci/cos-upload.js +1 -1
  31. package/dist/ci/miniapp/archive.js +1 -1
  32. package/dist/ci/miniapp/checkBuildArgument.js +1 -1
  33. package/dist/ci/miniapp/upload.js +1 -1
  34. package/dist/ci/upload.js +1 -1
  35. package/dist/common/cloud-api/src/apis/tcb/tcb.apis.js +1 -1
  36. package/dist/common/cloud-api/src/transaction/contracts/tcb.contracts.js +1 -1
  37. package/dist/common/cloud-api/src/transaction/validations/billing.validations.js +1 -0
  38. package/dist/common/cloud-api/src/transaction/validations/common.validations.js +1 -1
  39. package/dist/common/cloud-api/src/transaction/validations/tcb.validations.js +1 -1
  40. package/dist/common/cloud-api/src/transaction/validations/validations.js +1 -1
  41. package/dist/common/code-analyse/index.js +1 -1
  42. package/dist/config/config.js +1 -1
  43. package/dist/config/url.config.js +1 -1
  44. package/dist/index.js +1 -1
  45. package/dist/modules/corecompiler/original/npm/packnpm.js +1 -1
  46. package/dist/modules/corecompiler/summer/graph/appconf.js +1 -1
  47. package/dist/modules/corecompiler/summer/graph/appgraph.js +1 -1
  48. package/dist/modules/corecompiler/summerCompiler.js +1 -1
  49. package/dist/modules/createSummer.js +1 -1
  50. package/dist/modules/fullcompiler/trans/wcc/build/darwin_arm64/wcc.node +0 -0
  51. package/dist/modules/fullcompiler/trans/wcc/build/darwin_arm64/wcsc.node +0 -0
  52. package/dist/modules/fullcompiler/trans/wcc/build/darwin_x64/wcc.node +0 -0
  53. package/dist/modules/fullcompiler/trans/wcc/build/darwin_x64/wcsc.node +0 -0
  54. package/dist/modules/fullcompiler/trans/wcc/build/node_16.1.0_darwin_arm64_release/wcc.node +0 -0
  55. package/dist/modules/fullcompiler/trans/wcc/build/node_16.1.0_darwin_arm64_release/wcsc.node +0 -0
  56. package/dist/modules/fullcompiler/trans/wcc/build/node_16.1.0_darwin_x64_release/wcc.node +0 -0
  57. package/dist/modules/fullcompiler/trans/wcc/build/node_16.1.0_darwin_x64_release/wcsc.node +0 -0
  58. package/dist/modules/fullcompiler/trans/wcc/build/win32_ia32/wcc.node +0 -0
  59. package/dist/modules/fullcompiler/trans/wcc/build/win32_ia32/wcsc.node +0 -0
  60. package/dist/modules/fullcompiler/trans/wcc/build/win32_x64/wcc.node +0 -0
  61. package/dist/modules/fullcompiler/trans/wcc/build/win32_x64/wcsc.node +0 -0
  62. package/dist/modules/fullcompiler/trans/wcc/lib/addonVersion.js +19 -0
  63. package/dist/modules/fullcompiler/trans/wcc/lib/index.js +4 -0
  64. package/dist/modules/fullcompiler/trans/wcc/lib/util.js +1134 -0
  65. package/dist/modules/fullcompiler/trans/wcc/lib/wcc.js +94 -0
  66. package/dist/modules/fullcompiler/trans/wcc/lib/wcsc.js +93 -0
  67. package/dist/modules/index.js +1 -1
  68. package/dist/modules/nativecompiler/ios/buildCloud.js +1 -1
  69. package/dist/modules/nativecompiler/ios/index.js +1 -1
  70. package/dist/project/baseProject.js +1 -1
  71. package/dist/schema/dist/app.js +2 -1
  72. package/dist/schema/dist/ext.js +4 -1
  73. package/dist/schema/dist/game.js +1 -1
  74. package/dist/schema/dist/page.js +3 -1
  75. package/dist/schema/dist/plugin.js +1 -1
  76. package/dist/schema/dist/pluginpage.js +1 -1
  77. package/dist/schema/dist/projectconfig.js +1 -1
  78. package/dist/schema/dist/projectprivateconfig.js +1 -1
  79. package/dist/schema/dist/sitemap.js +1 -1
  80. package/dist/schema/dist/theme.js +1 -1
  81. package/dist/static/scripts/resignIpa +17 -1
  82. package/dist/utils/cosUpload.js +1 -0
  83. package/dist/utils/miniapp-builder.js +1 -1
  84. package/dist/utils/miniappJson.js +1 -1
  85. package/dist/utils/officialDonutPlugin.js +1 -0
  86. package/dist/utils/packOptionsHelper.js +1 -1
  87. package/dist/utils/tools.js +1 -1
  88. package/package.json +3 -2
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadByCos=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"),upload_1=require("./upload"),log=tslib_1.__importStar(require("../utils/log")),jsonParse_1=require("../utils/jsonParse"),zlib=require("zlib"),crypto=require("crypto"),COS=require("cos-nodejs-sdk-v5");async function putBufferToCos(e,r){const t=new COS({Proxy:(0,request_1.getCiProxy)(),getAuthorization(e,t){t({TmpSecretId:r.secret_id,TmpSecretKey:r.secret_key,XCosSecurityToken:r.token,ExpiredTime:r.expired_time})}});try{return await new Promise((o,i)=>{t.putObject({Bucket:r.bucket,Region:"ap-shanghai",Key:r.object,Body:e,onProgress(e){}},(e,r)=>{if(e)return console.error(e),i(e.error);o(r)})})}catch(e){throw new Error("upload to cos failed: "+e.message)}}async function innerRequest(e,r){const t=await(0,request_1.request)({url:e,method:"post",body:r,headers:{"content-type":"application/json"}});let o;try{o=JSON.parse(t.body)}catch(r){const t=`request ${e} failed: resp body is not a valid json`;throw log.error(t),new Error(t)}if(0!==o.errCode)throw new Error(`request failed, errCode: ${o.errCode}, errMsg: ${o.errMsg}`);return o.data}async function uploadByCos(e,r,t,o){let i;try{const e=await(0,sign_1.getSignature)(t.privateKey,t.appid);i=await innerRequest(url_config_1.GET_UPLOAD_TOKEN,JSON.stringify({appid:t.appid,signature:e,robot:o}))}catch(e){return console.error("uploadToken error",e),{fallback:!0}}const s=e,a=crypto.randomBytes(12),n=crypto.createCipheriv("aes-256-gcm",Buffer.from(i.crypt_key,"base64"),a),u=Buffer.concat([n.update(s),n.final()]),c=n.getAuthTag(),p=Buffer.alloc(1);p.writeUInt8(c.length+a.length,0);const l=Buffer.concat([p,c,a,u]),d=Date.now();await putBufferToCos(l,i);const _=Date.now()-d,f=(0,tools_1.generateMD5)(s),g=await(0,sign_1.getSignature)(t.privateKey,t.appid),y=`${r}&task_id=${i.task_id}&new_hash=${f}&upload_cos_cost_time=${_}`;log.info("request url:",y);const w=await(0,request_1.request)({url:y,method:"post",body:zlib.gzipSync((0,pack_1.pack)({[upload_1.SIGNATURE_FILE_NAME]:JSON.stringify({signature:g,version:config_1.CI_VERSION})}).buffer)});if(0!==(0,jsonParse_1.jsonRespParse)(w.body.toString(),r).errCode)throw new Error(w.body.toString());for(;;){const e=await(0,sign_1.getSignature)(t.privateKey,t.appid),r=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${i.task_id}`,JSON.stringify({appid:t.appid,signature:e,robot:o}));if(1!==r.status){if(0===r.status)return{fallback:!1,body:r,uploadCOSCostTime:_};if(3===r.status)throw new Error(`upload failed with status ${r.status}, task not found`);throw new Error("upload failed with status "+r.status)}await new Promise(e=>{setTimeout(e,1e3)})}}exports.uploadByCos=uploadByCos;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.uploadByCosSafely=exports.uploadByCos=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"),upload_1=require("./upload"),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 o=new COS({Proxy:(0,request_1.getCiProxy)(),getAuthorization(e,o){o({TmpSecretId:t.secret_id,TmpSecretKey:t.secret_key,XCosSecurityToken:t.token,ExpiredTime:t.expired_time})}});try{return await new Promise((r,a)=>{o.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);r(t)})})}catch(e){throw new Error("upload to cos failed: "+e.message)}}async function innerRequest(e,t){const o=await(0,request_1.request)({url:e,method:"post",body:t,headers:{"content-type":"application/json"}});let r;try{r=JSON.parse(o.body)}catch(t){const o=`request ${e} failed: resp body is not a valid json`;throw log.error(o),new Error(o)}if(0!==r.errCode)throw new Error(`request failed, errCode: ${r.errCode}, errMsg: ${r.errMsg}`);return r.data}async function uploadByCos(e,t,o,r){let a;try{const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);a=await innerRequest(url_config_1.GET_UPLOAD_TOKEN,JSON.stringify({appid:o.appid,signature:e,robot:r}))}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(),l=Buffer.alloc(1);l.writeUInt8(c.length+s.length,0);const p=Buffer.concat([l,c,s,u]),d=Date.now();await putBufferToCos(p,a);const f=Date.now()-d,g=(0,tools_1.generateMD5)(i),_=await(0,sign_1.getSignature)(o.privateKey,o.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)({[upload_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)(o.privateKey,o.appid),t=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${a.task_id}`,JSON.stringify({appid:o.appid,signature:e,robot:r}));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,o,r){let a;try{const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);a=await innerRequest(url_config_1.GET_UPLOAD_INFO,JSON.stringify({appid:o.appid,signature:e,robot:r}))}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:%s, nonce size:%d",i,i.length),console.info("tag:%s, tag size:%d",u,u.length),console.info("encrypted size:%d",n.length);const c=Buffer.alloc(1);c.writeUInt8(u.length+i.length,0);const l=Buffer.concat([c,u,i,n]),p=Date.now();try{await __1.cosUpload.uploadToCosCore({uploadBuf:l,region:"ap-shanghai",getUploadInfoFunc:async()=>a,getAuthFunc:async e=>{let t,r={},i={};switch(e.action){case"name/cos:InitiateMultipartUpload":r={uploads:""};break;case"name/cos:ListMultipartUploads":r={uploads:"",prefix:a.object},i={};break;case"name/cos:UploadPart":case"name/cos:ListParts":case"name/cos:CompleteMultipartUpload":r={uploadId:e.uploadId},i={};break;default:throw new Error("no action ")}try{const s=await(0,sign_1.getSignature)(o.privateKey,o.appid),n=await innerRequest(url_config_1.GET_UPLOAD_SIGN,JSON.stringify({appid:o.appid,signature:s,signOpts:JSON.stringify({checksum:a.checksum,action:e.action,upload_id:e.uploadId,headers:i,params:r})}));t={Authorization:n.sign,SecurityToken:n.token,AuthExpireTime:n.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()-p,f=(0,tools_1.generateMD5)(e),g=await(0,sign_1.getSignature)(o.privateKey,o.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)({[upload_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)(o.privateKey,o.appid),t=await innerRequest(`${url_config_1.GET_ASYNC_RESULT}?task_id=${a.task_id}`,JSON.stringify({appid:o.appid,signature:e,robot:r}));if(console.log(t),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.uploadByCos=uploadByCos,exports.uploadByCosSafely=uploadByCosSafely;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildProjectArchive=exports.getUploadOptions=void 0;const tslib_1=require("tslib"),getcompiler_1=require("../getcompiler"),tools_1=require("../../utils/tools"),log=tslib_1.__importStar(require("../../utils/log")),upload_1=require("./upload"),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),app_1=require("../../modules/fullcompiler/app/app"),miniappJson_1=require("../../utils/miniappJson"),path=require("path"),fse=require("fs-extra"),request=require("request"),QueryString=require("querystring");function getUploadOptions(){return{appLaunchInfo:{},uploadType:"build",autoTestMock:!1,onProgressUpdate:(...e)=>{log.info(...e)},onFilesIgnored:()=>{},onFilesMissing:()=>{},remoteDebug:!1,remoteProxyPort:void 0,disableUrlCheck:!1,autoPreview:!1,cdpEnabled:!1,remoteAppservice:!1,remoteAppserviceType:"ios",noMaps:!1,showProgress:!1}}async function downloadWxapkg(e,o,r,i,t,n,s){const{project:a,robot:p}=e,l=await(0,sign_1.getSignature)(a.privateKey,a.appid),c={appid:a.appid,pkg_source:"Release"===t?4:3,pkg_type:r?4:0,use_cloud_sync:n?1:0,os_type:"mini-android"===i?2:1,need_client_js_ext_info:"mini-android"===i?s:1,signature:l,robot:p},u=fse.createWriteStream(o,{mode:511});return new Promise((e,o)=>{const r=request({url:`${url_config_1.getPkgWxapkg}?${QueryString.stringify(c)}`,method:"get"},e=>{e&&o(e)});r.on("response",i=>{const t=i.headers["content-type"];if(null==t?void 0:t.toLocaleLowerCase().includes("text/plain")){let e="";i.on("data",o=>{e+=o}),i.on("end",()=>{var r,i,t;try{e=(0,jsonParse_1.jsonRespParse)(e,url_config_1.getPkgWxapkg);const n=null!==(r=e.baseresponse)&&void 0!==r?r:{},s=null!==(i=n.errcode)&&void 0!==i?i:-1,a=null!==(t=n.errmsg)&&void 0!==t?t:"request fail";o(`errcode ${s}, errmsg ${a}`)}catch(e){o(e)}})}else r.pipe(u),u.on("error",e=>{log.error("download miniapp wxapkg error:"+e.message),o(e)}),u.on("close",()=>{e({})});i.on("error",e=>{o(e)})})}).catch(e=>{throw new Error(`${url_config_1.getPkgWxapkg} fail ${e}`)})}async function extractWxapkgToAppDir(e){const o=e.replace(".wxapkg","");fse.ensureDirSync(o),fse.emptyDirSync(o);const r=fse.readFileSync(e);try{await(0,unpack_1.default)(r,o)}catch(e){let o=r.toString("utf8");o.length>100&&(o=o.slice(0,100));const i=`Download pkg error: ${o} (${e.msg})`;throw new Error(i)}return o}async function genSubPkgAppInfo(e,o,r,i,t,n,s){var a;const{setting:p={useProjectConfig:!1},project:l,targetPlatform:c}=this,u=(0,miniappJson_1.getMiniappJson)(l.projectPath,c),g=u.icon,d=u.name,f=(await(0,getcompiler_1.getCompiler)(l,p)).getAppJSON(),m=(null===(a=null==f?void 0:f.window)||void 0===a?void 0:a.pageOrientation)||"portrait",_=await(0,app_1.generateSubPkgAppInfoJson)({miniModuleId:e,nickName:d,brandIconURL:g,pageOrientation:m,buildVersion:i,subpkgs:o,contact:t,cpfWxaAttrSyncResponse:n,miniappPkgType:s});fse.ensureDirSync(path.dirname(r)),fse.writeJSONSync(r,_)}async function buildProjectArchive(e,o){var r;let i,t="";try{const n=e.project,{module_info:s={}}=await n.miniappAttr()||{};if(!s.module_id)throw new Error("project.miniapp.json 尚未配置 miniModuleId");log.info("构建项目资源包中...");const a=null!==(r=(await(0,upload_1.upload)(Object.assign(Object.assign(Object.assign({},e),o),getUploadOptions()))).useSubPkg)&&void 0!==r&&r,{miniappOptions:p,outputDir:l}=o,{miniappPkgType:c,useCloudSync:u,needClientJsExtInfo:g}=p;log.info("下载项目资源包中..."),i=path.join(e.resourceDir,"app.wxapkg"),await downloadWxapkg(e,i,a,o.targetPlatform,c,u,g),log.info("下载项目资源包成功"),log.info("生成项目资源包中..."),t=await extractWxapkgToAppDir(i);const d=fse.readJsonSync(path.join(t,"info.json"));if(0===d.wxapkgs.length)throw new Error("构建项目资源包失败: 获取不到 wxapkg");fse.ensureDirSync(l),fse.emptyDirSync(l),d.wxapkgs.forEach(e=>{const o=path.join(l,e.file),r=o+".sign";fse.moveSync(path.join(t,e.file),o),fse.moveSync(path.join(t,e.signFile),r);const i=fse.readFileSync(o);e.md5=(0,tools_1.generateMD5)(i),e.versionType=null==p?void 0:p.miniappPkgType});const f=path.join(l,"buildinfo.json");await genSubPkgAppInfo.call(Object.assign(Object.assign({},e),o),s.module_id,d.wxapkgs,f,d.buildVersion,d.contact,d.cpfWxaAttrSyncResponse,p.miniappPkgType),log.info("生成项目资源包成功")}catch(e){throw new Error("build project archive error: "+e.message)}finally{t&&fse.existsSync(t)&&fse.removeSync(t);(await(0,getcompiler_1.getCompiler)(e.project,e.setting||{useProjectConfig:!1})).destroy()}}exports.getUploadOptions=getUploadOptions,exports.buildProjectArchive=buildProjectArchive;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildProjectArchive=exports.getUploadOptions=void 0;const tslib_1=require("tslib"),tools_1=require("../../utils/tools"),log=tslib_1.__importStar(require("../../utils/log")),upload_1=require("./upload"),url_config_1=require("../../config/url.config"),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse"),unpack_1=tslib_1.__importDefault(require("../utils/unpack")),app_1=require("../../modules/fullcompiler/app/app"),miniappJson_1=require("../../utils/miniappJson"),path=require("path"),fse=require("fs-extra"),request=require("request"),QueryString=require("querystring");function getUploadOptions(){return{appLaunchInfo:{},uploadType:"build",autoTestMock:!1,onProgressUpdate:(...e)=>{log.info(...e)},onFilesIgnored:()=>{},onFilesMissing:()=>{},remoteDebug:!1,remoteProxyPort:void 0,disableUrlCheck:!1,autoPreview:!1,cdpEnabled:!1,remoteAppservice:!1,remoteAppserviceType:"ios",noMaps:!1,showProgress:!1}}async function downloadWxapkg(e,o,r,i,n,t,s){const{project:a,robot:p}=e,l=await(0,sign_1.getSignature)(a.privateKey,a.appid),c={appid:a.appid,pkg_source:"Release"===n?4:3,pkg_type:r?4:0,use_cloud_sync:t?1:0,os_type:"mini-android"===i?2:1,need_client_js_ext_info:"mini-android"===i?s:1,signature:l,robot:p},u=fse.createWriteStream(o,{mode:511});return new Promise((e,o)=>{const r=request({url:`${url_config_1.getPkgWxapkg}?${QueryString.stringify(c)}`,method:"get"},e=>{e&&o(e)});r.on("response",i=>{const n=i.headers["content-type"];if(null==n?void 0:n.toLocaleLowerCase().includes("text/plain")){let e="";i.on("data",o=>{e+=o}),i.on("end",()=>{var r,i,n;try{e=(0,jsonParse_1.jsonRespParse)(e,url_config_1.getPkgWxapkg);const t=null!==(r=e.baseresponse)&&void 0!==r?r:{},s=null!==(i=t.errcode)&&void 0!==i?i:-1,a=null!==(n=t.errmsg)&&void 0!==n?n:"request fail";o(`errcode ${s}, errmsg ${a}`)}catch(e){o(e)}})}else r.pipe(u),u.on("error",e=>{log.error("download miniapp wxapkg error:"+e.message),o(e)}),u.on("close",()=>{e({})});i.on("error",e=>{o(e)})})}).catch(e=>{throw new Error(`${url_config_1.getPkgWxapkg} fail ${e}`)})}async function extractWxapkgToAppDir(e){const o=e.replace(".wxapkg","");fse.ensureDirSync(o),fse.emptyDirSync(o);const r=fse.readFileSync(e);try{await(0,unpack_1.default)(r,o)}catch(e){let o=r.toString("utf8");o.length>100&&(o=o.slice(0,100));const i=`Download pkg error: ${o} (${e.msg})`;throw new Error(i)}return o}async function genSubPkgAppInfo(e,o,r,i,n,t,s){var a;const{project:p,targetPlatform:l}=this,c=(0,miniappJson_1.getMiniappJson)(p.projectPath,l),u=c.icon,g=c.name,d=(0,miniappJson_1.getRawAppJSON)(p.projectPath),f=(null===(a=null==d?void 0:d.window)||void 0===a?void 0:a.pageOrientation)||"portrait",m=await(0,app_1.generateSubPkgAppInfoJson)({miniModuleId:e,nickName:g,brandIconURL:u,pageOrientation:f,buildVersion:i,subpkgs:o,contact:n,cpfWxaAttrSyncResponse:t,miniappPkgType:s});fse.ensureDirSync(path.dirname(r)),fse.writeJSONSync(r,m)}async function buildProjectArchive(e,o){var r;let i,n="";try{const t=e.project,{module_info:s={}}=await t.miniappAttr()||{};if(!s.module_id)throw new Error("project.miniapp.json 尚未配置 miniModuleId");log.info("构建项目资源包中...");const a=null!==(r=(await(0,upload_1.upload)(Object.assign(Object.assign(Object.assign({},e),o),getUploadOptions()))).useSubPkg)&&void 0!==r&&r,{miniappOptions:p,outputDir:l}=o,{miniappPkgType:c,useCloudSync:u,needClientJsExtInfo:g}=p;log.info("下载项目资源包中..."),i=path.join(e.resourceDir,"app.wxapkg"),await downloadWxapkg(e,i,a,o.targetPlatform,c,u,g),log.info("下载项目资源包成功"),log.info("生成项目资源包中..."),n=await extractWxapkgToAppDir(i);const d=fse.readJsonSync(path.join(n,"info.json"));if(0===d.wxapkgs.length)throw new Error("构建项目资源包失败: 获取不到 wxapkg");fse.ensureDirSync(l),fse.emptyDirSync(l),d.wxapkgs.forEach(e=>{const o=path.join(l,e.file),r=o+".sign";fse.moveSync(path.join(n,e.file),o),fse.moveSync(path.join(n,e.signFile),r);const i=fse.readFileSync(o);e.md5=(0,tools_1.generateMD5)(i),e.versionType=null==p?void 0:p.miniappPkgType});const f=path.join(l,"buildinfo.json");await genSubPkgAppInfo.call(Object.assign(Object.assign({},e),o),s.module_id,d.wxapkgs,f,d.buildVersion,d.contact,d.cpfWxaAttrSyncResponse,p.miniappPkgType),log.info("生成项目资源包成功")}catch(e){throw new Error("build project archive error: "+e.message)}finally{n&&fse.existsSync(n)&&fse.removeSync(n)}}exports.getUploadOptions=getUploadOptions,exports.buildProjectArchive=buildProjectArchive;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformIOSBuildArgument=exports.transformAndroidBuildArgument=exports.IMiniappPkgType=exports.publicKeyForP12password=exports.defaulPasswordPlaceHolderForCache=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),tools_1=require("../../utils/tools"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),isWindows_1=tslib_1.__importDefault(require("licia/isWindows")),moment=require("moment"),crypto=require("crypto");var IMiniappPkgType;exports.defaulPasswordPlaceHolderForCache="*******",exports.publicKeyForP12password="-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRsmgcQqaCjlFVITfAzIWsjpxj\nynoXetXQhmIspi86V6rtq2BENl9HrrX18XsQ8Qn6jsNJ6mtvSUUflvpLnEQMM1M7\nwagNazL0A2KFw97Br9sE+CVJdctC/dmportNjrbekNYHacT1bL+GDpatAaD4Pnwy\nx3yJsmqx3tJun1G++wIDAQAB\n-----END PUBLIC KEY-----\n",function(e){e.Release="Release",e.Debug="Debug",e.HotReload="HotReload"}(IMiniappPkgType=exports.IMiniappPkgType||(exports.IMiniappPkgType={}));const validateFileExistenceAndExtname=(e,r,o,i="",t="")=>{if(t&&(o=path_1.default.join(t,o)),!fs_extra_1.default.existsSync(o))throw new Error(`${e}: ${r} 无法找到文件 ${o} 文件`);if(i&&path_1.default.extname(o)!==i)throw new Error(`${e}: ${r} 文件后缀必须为 ${i}`)},unifyiOSBuildFilePathForWindows=(e,r)=>{e[r]&&(e[r]=(0,tools_1.unifyPath)(e[r]))},transformAndroidBuildArgument=e=>{const{project:r,keyStore:o,keyPass:i,storePass:t,keyAlias:s,output:n,useAab:a=!1,desc:p="",isUploadResourceBundle:l=!1,resourceBundleVersion:u="",resourceBundleDesc:d="",robot:c=1}=e;if(!r)throw new Error("缺少参数 project");const f=r.projectPath,m=(0,miniappJson_1.tryGetAndroidMiniappJson)(f),w=`CI robot ${c||1} 在 ${moment().format("LLL")} 提交上传`;if(!m.version)throw new Error("project.miniapp.json 中缺少 miniapp-android.version 字段");if(!n)throw new Error("缺少参数 output");validateFileExistenceAndExtname("build-apk options","keyStore",o);const P=path_1.default.extname(o);if(P&&![".jks",".keystore"].includes(P))throw new Error("keystore 文件后缀需是 .jks 或者 .keystore");if(!t)throw new Error("缺少参数 storePass");if(!i)throw new Error("缺少参数 keyPass");if(!s)throw new Error("缺少参数 keyAlias");return{buildArchiveOpts:{version:m.version,desc:e.desc||w,miniappPkgType:IMiniappPkgType.Release,useCloudSync:l,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{androidCertificate:{keyStore:o,keyAlias:s,keyPass:i,storePass:t}},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:l,useAab:a,packageVersion:u||m.version,packageDesc:d||w,uploadAppInfo:{uploadBetaVersion:!1,userVersion:m.version,userDesc:p||w},recordInfo:""}}};exports.transformAndroidBuildArgument=transformAndroidBuildArgument;const transformIOSBuildArgument=e=>{var r;const{project:o,output:i,isDistribute:t=!1,isRemoteBuild:s=!1,profilePath:n="",certificateName:a="",p12Path:p="",p12Password:l="",tpnsProfilePath:u="",desc:d="",isUploadBeta:c=!1,isUploadResourceBundle:f=!1,resourceBundleVersion:m="",resourceBundleDesc:w="",robot:P}=e;if(!o)throw new Error("缺少参数 project");const y=o.projectPath,h=(0,miniappJson_1.getRawMiniappJson)(o.projectPath),b=(0,miniappJson_1.tryGetIOSMiniappJson)(y),E=`CI robot ${P||1} 在 ${moment().format("LLL")} 提交上传`;if(!b.version)throw new Error("project.miniapp.json 中缺少 miniapp-ios.version 字段");if(!i)throw new Error("缺少参数 output");if(isWindows_1.default&&!s)throw new Error("windows 仅支持远程构建");const A={useRemote:s,p12:p,p12password:l,certificate:a,profile:n,tpnsProfile:u},g={isPublish:t};if(validateFileExistenceAndExtname("build-ipa options","profile",n,".mobileprovision",o.projectPath),g.profilePath=s?n:path_1.default.join(o.projectPath,n),!a)throw new Error("缺少参数 certificateName");if(g.certificateName=a,A.useRemote){if(validateFileExistenceAndExtname("build-ipa options","p12",p,".p12",o.projectPath),!l)throw new Error("缺少参数 p12Password");g.certificatePassword=l,g.certificatePath=p,isWindows_1.default&&(unifyiOSBuildFilePathForWindows(A,"profile"),unifyiOSBuildFilePathForWindows(A,"tpnsProfile"),unifyiOSBuildFilePathForWindows(A,"p12"));const e=Buffer.from(A.p12password,"utf8"),r=crypto.publicEncrypt(exports.publicKeyForP12password,e);A.p12passwordEncrypted=r.toString("base64"),h["mini-ios"].buildCloud=A,delete A.p12password,(0,miniappJson_1.writeMiniAppJson)(o.projectPath,h)}!0===(null===(r=b.tpush)||void 0===r?void 0:r.useExtendedLib_WeAppTPNS)&&validateFileExistenceAndExtname("build-ipa options","tpnsProfile",u,".mobileprovision",o.projectPath);return{buildArchiveOpts:{version:b.version,desc:e.desc||E,miniappPkgType:IMiniappPkgType.Release,useCloudSync:f,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{signType:"certificate",selfCertificate:g},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:f,packageVersion:m||b.version,packageDesc:w||E,uploadAppInfo:{uploadBetaVersion:c,userVersion:b.version,userDesc:d||E},useRemoteCloudBuild:s||!1,recordInfo:""}}};exports.transformIOSBuildArgument=transformIOSBuildArgument;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformIOSBuildArgument=exports.transformAndroidBuildArgument=exports.IMiniappPkgType=exports.publicKeyForP12password=exports.defaulPasswordPlaceHolderForCache=void 0;const tslib_1=require("tslib"),miniappJson_1=require("../../utils/miniappJson"),tools_1=require("../../utils/tools"),fs_extra_1=tslib_1.__importDefault(require("fs-extra")),path_1=tslib_1.__importDefault(require("path")),isWindows_1=tslib_1.__importDefault(require("licia/isWindows")),moment=require("moment"),crypto=require("crypto");var IMiniappPkgType;exports.defaulPasswordPlaceHolderForCache="*******",exports.publicKeyForP12password="-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRsmgcQqaCjlFVITfAzIWsjpxj\nynoXetXQhmIspi86V6rtq2BENl9HrrX18XsQ8Qn6jsNJ6mtvSUUflvpLnEQMM1M7\nwagNazL0A2KFw97Br9sE+CVJdctC/dmportNjrbekNYHacT1bL+GDpatAaD4Pnwy\nx3yJsmqx3tJun1G++wIDAQAB\n-----END PUBLIC KEY-----\n",function(e){e.Release="Release",e.Debug="Debug",e.HotReload="HotReload"}(IMiniappPkgType=exports.IMiniappPkgType||(exports.IMiniappPkgType={}));const validateFileExistenceAndExtname=(e,r,o,i="",t="")=>{if(t&&(o=path_1.default.join(t,o)),!fs_extra_1.default.existsSync(o))throw new Error(`${e}: ${r} 无法找到文件 ${o} 文件`);if(i&&path_1.default.extname(o)!==i)throw new Error(`${e}: ${r} 文件后缀必须为 ${i}`)},unifyiOSBuildFilePathForWindows=(e,r)=>{e[r]&&(e[r]=(0,tools_1.unifyPath)(e[r]))},transformAndroidBuildArgument=e=>{const{project:r,keyStore:o,keyPass:i,storePass:t,keyAlias:s,output:n,useAab:a=!1,desc:p="",isUploadResourceBundle:l=!1,resourceBundleVersion:u="",resourceBundleDesc:d="",robot:c=1}=e;if(!r)throw new Error("缺少参数 project");const f=r.projectPath,m=(0,miniappJson_1.tryGetAndroidMiniappJson)(f),P=`CI robot ${c||1} 在 ${moment().format("LLL")} 提交上传`;if(!m.version)throw new Error("project.miniapp.json 中缺少 miniapp-android.version 字段");if(!n)throw new Error("缺少参数 output");validateFileExistenceAndExtname("build-apk options","keyStore",o);const w=path_1.default.extname(o);if(w&&![".jks",".keystore"].includes(w))throw new Error("keystore 文件后缀需是 .jks 或者 .keystore");if(!t)throw new Error("缺少参数 storePass");if(!i)throw new Error("缺少参数 keyPass");if(!s)throw new Error("缺少参数 keyAlias");return{buildArchiveOpts:{version:m.version,desc:e.desc||P,miniappPkgType:IMiniappPkgType.Release,useCloudSync:l,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{androidCertificate:{keyStore:o,keyAlias:s,keyPass:i,storePass:t}},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:l,useAab:a,packageVersion:u||m.version,packageDesc:d||P,uploadAppInfo:{uploadBetaVersion:!1,userVersion:m.version,userDesc:p||P},recordInfo:""}}};exports.transformAndroidBuildArgument=transformAndroidBuildArgument;const transformIOSBuildArgument=e=>{var r;const{project:o,output:i,isDistribute:t=!1,isRemoteBuild:s=!1,profilePath:n="",certificateName:a="",p12Path:p="",p12Password:l="",tpnsProfilePath:u="",desc:d="",isUploadBeta:c=!1,isUploadResourceBundle:f=!1,resourceBundleVersion:m="",resourceBundleDesc:P="",robot:w}=e;if(!o)throw new Error("缺少参数 project");const h=o.projectPath,y=(0,miniappJson_1.getRawMiniappJson)(o.projectPath),b=(0,miniappJson_1.tryGetIOSMiniappJson)(h),E=`CI robot ${w||1} 在 ${moment().format("LLL")} 提交上传`;if(!b.version)throw new Error("project.miniapp.json 中缺少 miniapp-ios.version 字段");if(!i)throw new Error("缺少参数 output");if(isWindows_1.default&&!s)throw new Error("windows 仅支持远程构建");const A={useRemote:s,p12:p,p12password:l,certificate:a,profile:n,tpnsProfile:u},g={isPublish:t};if(validateFileExistenceAndExtname("build-ipa options","profile",n,".mobileprovision",o.projectPath),g.profilePath=s?n:path_1.default.join(o.projectPath,n),!a)throw new Error("缺少参数 certificateName");if(g.certificateName=a,A.useRemote){if(validateFileExistenceAndExtname("build-ipa options","p12",p,".p12",o.projectPath),!l)throw new Error("缺少参数 p12Password");g.certificatePassword=l,g.certificatePath=p,isWindows_1.default&&(unifyiOSBuildFilePathForWindows(A,"profile"),unifyiOSBuildFilePathForWindows(A,"tpnsProfile"),unifyiOSBuildFilePathForWindows(A,"p12"));const e=Buffer.from(A.p12password,"utf8"),r=crypto.publicEncrypt(exports.publicKeyForP12password,e);A.p12passwordEncrypted=r.toString("base64"),y["mini-ios"].buildCloud=A,delete A.p12password,(0,miniappJson_1.writeMiniAppJsonWithProjectPath)(o.projectPath,y)}!0===(null===(r=b.tpush)||void 0===r?void 0:r.useExtendedLib_WeAppTPNS)&&validateFileExistenceAndExtname("build-ipa options","tpnsProfile",u,".mobileprovision",o.projectPath);return{buildArchiveOpts:{version:b.version,desc:e.desc||E,miniappPkgType:IMiniappPkgType.Release,useCloudSync:f,remoteDebugEnable:!1},cloudBuildInfo:{certificateInfo:{signType:"certificate",selfCertificate:g},miniappPkgType:IMiniappPkgType.Release,remoteDebugEnable:!1,useCloudUpload:f,packageVersion:m||b.version,packageDesc:P||E,uploadAppInfo:{uploadBetaVersion:c,userVersion:b.version,userDesc:d||E},useRemoteCloudBuild:s||!1,recordInfo:""}}};exports.transformIOSBuildArgument=transformIOSBuildArgument;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=exports.SIGNATURE_FILE_NAME=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");function getMiniappBuildQuery(e){var i,o,r,t,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===(o=e.miniappOptions)||void 0===o?void 0:o.uploadId)&&(p.upload_id=null===(r=e.miniappOptions)||void 0===r?void 0:r.uploadId),(null===(t=e.miniappOptions)||void 0===t?void 0:t.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:o={useProjectConfig:!1},robot:r="1",threads:t=0}=e,s=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(e=>{if("object"==typeof e)try{const i=JSON.stringify(e);console.log(i)}catch(e){}console.log(""+e)}));process.env.COMPILE_THREADS=t.toString(),cache_1.cacheManager.clean();const n=await(0,getcompiler_1.getCompiler)(i,o,{targetPlatform:e.targetPlatform}),a=(0,tools_1.formatCISetting)(i,o),p=await n.compile({setting:a,onProgressUpdate:s,resultType:"prod",disableSpreadingUsingComponents:!0}),u=config_1.CI_VERSION,l=encodeURIComponent(JSON.stringify(getMiniappBuildQuery(e))),c={appid:i.appid,robot:r,miniapparchivequery:l};try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());s(e);const o=`${url_config_1.miniappUpload}?${querystring_1.default.stringify(c)}`,r=await(0,sign_1.getSignature)(i.privateKey,i.appid);p[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:r,version:u});const t=(0,pack_1.pack)(p),n=zlib_1.default.gzipSync(t.buffer);log.info("request url:",o);const a=(await(0,request_1.request)({url:o,method:"post",body:n})).body.toString(),l=(0,jsonParse_1.jsonRespParse)(a,o);if(0!==l.errCode)throw new Error(a);e.done(),s(e);const _={respBody:l.body};if(Array.isArray(l.body.subpackage_info)){const e=l.body.subpackage_info;_.subPackageInfo=e,_.useSubPkg=e.length>1}if(Array.isArray(l.body.ext_plugin_info)){const e=l.body.ext_plugin_info;_.pluginInfo=e.map(e=>({pluginProviderAppid:e.provider,version:e.version,size:e.size}))}return _}catch(e){throw e}}exports.SIGNATURE_FILE_NAME="ci.signature",exports.upload=upload;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.upload=exports.SIGNATURE_FILE_NAME=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");function getMiniappBuildQuery(e){var i,t,o,r,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===(o=e.miniappOptions)||void 0===o?void 0:o.uploadId),(null===(r=e.miniappOptions)||void 0===r?void 0:r.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:o="1",threads:r=0}=e,s=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(e=>{if("object"==typeof e)try{const i=JSON.stringify(e);console.log(i)}catch(e){}console.log(""+e)}));process.env.COMPILE_THREADS=r.toString(),cache_1.cacheManager.clean();const n=(0,tools_1.formatCISetting)(i,t);i.setting=n;const a=e.targetPlatform;i.setting.targetPlatform=a;const p=await(0,getcompiler_1.getBuilder)(i,{targetPlatform:a}),u=await p.getCompiler(),l=await u.compile({setting:n,onProgressUpdate:s,resultType:"prod",disableSpreadingUsingComponents:!0});p.destroy();const c=config_1.CI_VERSION,d=encodeURIComponent(JSON.stringify(getMiniappBuildQuery(e))),_={appid:i.appid,robot:o,miniapparchivequery:d};try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());s(e);const t=`${url_config_1.miniappUpload}?${querystring_1.default.stringify(_)}`,o=await(0,sign_1.getSignature)(i.privateKey,i.appid);l[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:o,version:c});const r=(0,pack_1.pack)(l),n=zlib_1.default.gzipSync(r.buffer);log.info("request url:",t);const a=(await(0,request_1.request)({url:t,method:"post",body:n})).body.toString(),p=(0,jsonParse_1.jsonRespParse)(a,t);if(0!==p.errCode)throw new Error(a);e.done(),s(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.SIGNATURE_FILE_NAME="ci.signature",exports.upload=upload;
package/dist/ci/upload.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.innerUpload=exports.upload=exports.SIGNATURE_FILE_NAME=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");exports.SIGNATURE_FILE_NAME="ci.signature";const MIN_COS_UPLOAD_SIZE=5242880;async function upload(e){var o;const r=await innerUpload(e);return(null===(o=r.respBody)||void 0===o?void 0:o.dev_plugin_id)&&(log.log("Development Version Plugin ID: "+r.respBody.dev_plugin_id),r.devPluginId=r.respBody.dev_plugin_id),{subPackageInfo:r.subPackageInfo,pluginInfo:r.pluginInfo,devPluginId:r.devPluginId}}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}=e,c=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(e=>{if("object"==typeof e)try{const o=JSON.stringify(e);console.log(o)}catch(e){}console.log(""+e)}));let{useCOS:d}=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 _=await(0,getcompiler_1.getCompiler)(o,r),g=(0,tools_2.formatCISetting)(o,r),f=await _.compile({setting:g,onProgressUpdate:c,resultType:"prod",disableSpreadingUsingComponents:!0}),b=config_1.CI_VERSION,y={codeprotect:r.codeProtect?1:0,type:o.type,appid:o.appid,version:i,desc:t,robot:s},S={scene:e.scene||1011};let P;n&&(S.path=n,y.path=n),l&&(S.query=querystring_1.default.parse(l)),y.debugLaunchInfo=JSON.stringify(S),n&&l&&(y.path+="?"+l),a&&p&&(y.bigPackageSizeSupport=1);let q={};try{P=await o.getFile(o.miniprogramRoot,"ext.json"),q=JSON.parse(P.toString("utf-8"))}catch(e){}if(q&&(q.extEnable&&(y.extAppId=q.extAppid),q.directCommit)){let e="";e=q.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(y)}`;let t,i=!1,n=0;const l=(0,pack_1.pack)(f),u=zlib_1.default.gzipSync(l.buffer);if(log.info("useCOS parameter: ",d),log.info("upload zip buffer size: ",u.length),void 0===d&&(d=u.length>5242880),d){log.info("upload by COS: ",d);const e=await(0,cos_upload_1.uploadByCos)(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(!d||i){const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);f[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:e,version:b});const i=(0,pack_1.pack)(f),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 p}catch(e){throw new error_1.CodeError(e.toString(),config_1.UPLOAD_CGI_ERR)}}exports.upload=upload,exports.innerUpload=innerUpload;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.innerUpload=exports.upload=exports.SIGNATURE_FILE_NAME=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");exports.SIGNATURE_FILE_NAME="ci.signature";const MIN_COS_UPLOAD_SIZE=5242880;async function upload(e){var o;const r=await innerUpload(e);return(null===(o=r.respBody)||void 0===o?void 0:o.dev_plugin_id)&&(log.log("Development Version Plugin ID: "+r.respBody.dev_plugin_id),r.devPluginId=r.respBody.dev_plugin_id),{subPackageInfo:r.subPackageInfo,pluginInfo:r.pluginInfo,devPluginId:r.devPluginId}}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}=e,c=(0,progressupdate_1.transProgressUpdate)(e.onProgressUpdate||(e=>{if("object"==typeof e)try{const o=JSON.stringify(e);console.log(o)}catch(e){}console.log(""+e)}));let{useCOS:d}=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 _=await(0,getcompiler_1.getCompiler)(o,r),g=(0,tools_2.formatCISetting)(o,r),f=await _.compile({setting:g,onProgressUpdate:c,resultType:"prod",disableSpreadingUsingComponents:!0}),b=config_1.CI_VERSION,y={codeprotect:r.codeProtect?1:0,type:o.type,appid:o.appid,version:i,desc:t,robot:s},S={scene:e.scene||1011};let P;n&&(S.path=n,y.path=n),l&&(S.query=querystring_1.default.parse(l)),y.debugLaunchInfo=JSON.stringify(S),n&&l&&(y.path+="?"+l),a&&p&&(y.bigPackageSizeSupport=1);let q={};try{P=await o.getFile(o.miniprogramRoot,"ext.json"),q=JSON.parse(P.toString("utf-8"))}catch(e){}if(q&&(q.extEnable&&(y.extAppId=q.extAppid),q.directCommit)){let e="";e=q.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(y)}`;let t,i=!1,n=0;const l=(0,pack_1.pack)(f),u=zlib_1.default.gzipSync(l.buffer);if(log.info("useCOS parameter: ",d),log.info("upload zip buffer size: ",u.length),void 0===d&&(d=u.length>5242880),d){log.info("upload by COS: ",d);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(!d||i){const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);f[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:e,version:b});const i=(0,pack_1.pack)(f),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 p}catch(e){throw new error_1.CodeError(e.toString(),config_1.UPLOAD_CGI_ERR)}}exports.upload=upload,exports.innerUpload=innerUpload;