miniprogram-ci 2.0.10 → 2.1.0

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 (133) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +5 -0
  3. package/dist/@types/ci/build-apk.d.ts +54 -0
  4. package/dist/@types/ci/build-ipa.d.ts +46 -0
  5. package/dist/@types/ci/getcompiler.d.ts +3 -0
  6. package/dist/@types/ci/index.d.ts +4 -0
  7. package/dist/@types/ci/miniapp/androidCloudBuild.d.ts +36 -0
  8. package/dist/@types/ci/miniapp/archive.d.ts +27 -0
  9. package/dist/@types/ci/miniapp/checkBuildArgument.d.ts +21 -0
  10. package/dist/@types/ci/miniapp/iosCloudBuild.d.ts +36 -0
  11. package/dist/@types/ci/miniapp/iosLocalBuild.d.ts +13 -0
  12. package/dist/@types/ci/miniapp/iosTheme.d.ts +4 -0
  13. package/dist/@types/ci/miniapp/miniappPlugin.d.ts +33 -0
  14. package/dist/@types/ci/miniapp/sdkManager.d.ts +5 -0
  15. package/dist/@types/ci/miniapp/upload.d.ts +25 -0
  16. package/dist/@types/ci/miniappattr.d.ts +1 -0
  17. package/dist/@types/ci/upload.d.ts +1 -2
  18. package/dist/@types/ci/utils/ciRequest.d.ts +7 -0
  19. package/dist/@types/ci/utils/progressupdate.d.ts +2 -0
  20. package/dist/@types/ci/utils/tools.d.ts +4 -0
  21. package/dist/@types/ci/utils/unpack.d.ts +3 -0
  22. package/dist/@types/ci/utils/wxvpkg/unpack/config.d.ts +40 -0
  23. package/dist/@types/ci/utils/wxvpkg/unpack/version0.d.ts +15 -0
  24. package/dist/@types/ci/utils/wxvpkg/unpack/version10.d.ts +18 -0
  25. package/dist/@types/ci/utils/wxvpkg/utils.d.ts +3 -0
  26. package/dist/@types/common/code-analyse/index.d.ts +1 -0
  27. package/dist/@types/config/config.d.ts +1 -1
  28. package/dist/@types/config/url.config.d.ts +8 -0
  29. package/dist/@types/index.d.ts +3 -0
  30. package/dist/@types/modules/corecompiler/baseCompiler.d.ts +5 -0
  31. package/dist/@types/modules/corecompiler/originalCompiler.d.ts +1 -0
  32. package/dist/@types/modules/corecompiler/processHandler.d.ts +2 -21
  33. package/dist/@types/modules/corecompiler/summerCompiler.d.ts +4 -1
  34. package/dist/@types/modules/fullcompiler/app/app.d.ts +82 -0
  35. package/dist/@types/modules/fullcompiler/app/contactandlaunch/originalcontactbase64.d.ts +2 -0
  36. package/dist/@types/modules/fullcompiler/app/contactandlaunch/originallaunchbase64.d.ts +2 -0
  37. package/dist/@types/modules/fullcompiler/app/contactandlaunch/updateContactForSubpkg.d.ts +2 -0
  38. package/dist/@types/modules/fullcompiler/app/contactandlaunch/updatecontactandlaunch.d.ts +3 -0
  39. package/dist/@types/modules/index.d.ts +1 -2
  40. package/dist/@types/modules/precompiler/conditioncompile/index.d.ts +3 -2
  41. package/dist/@types/modules/precompiler/index.d.ts +3 -2
  42. package/dist/@types/project/ciProject.d.ts +3 -0
  43. package/dist/@types/types/ci.d.ts +6 -1
  44. package/dist/@types/types/core.d.ts +1 -1
  45. package/dist/@types/types/devtools.d.ts +10 -3
  46. package/dist/@types/types/miniapp/index.d.ts +88 -0
  47. package/dist/@types/types/summer.d.ts +1 -0
  48. package/dist/@types/utils/locales/locales.d.ts +1 -0
  49. package/dist/@types/utils/locales/zh.d.ts +1 -0
  50. package/dist/@types/utils/messageHub.d.ts +2 -2
  51. package/dist/@types/utils/miniAppI18N.d.ts +15 -0
  52. package/dist/@types/utils/miniapp-builder.d.ts +7 -2
  53. package/dist/@types/utils/miniappJson.d.ts +2 -0
  54. package/dist/@types/utils/progressRecorder.d.ts +3 -1
  55. package/dist/@types/utils/report.d.ts +3 -1
  56. package/dist/@types/utils/request.d.ts +2 -0
  57. package/dist/@types/utils/subprocess/processManager.d.ts +4 -1
  58. package/dist/@types/utils/taskstatus.d.ts +3 -3
  59. package/dist/@types/utils/tools.d.ts +1 -0
  60. package/dist/ci/android-miniapp-toolkit/dist/index.js +1 -0
  61. package/dist/ci/android-miniapp-toolkit/lib/apkcert.jar +0 -0
  62. package/dist/ci/android-miniapp-toolkit/lib/apksigner.jar +0 -0
  63. package/dist/ci/android-miniapp-toolkit/lib/libwinpthread-1.dll +0 -0
  64. package/dist/ci/android-miniapp-toolkit/lib/zipalign +0 -0
  65. package/dist/ci/android-miniapp-toolkit/lib/zipalign.exe +0 -0
  66. package/dist/ci/build-apk.js +1 -0
  67. package/dist/ci/build-ipa.js +1 -0
  68. package/dist/ci/getCompiledResult.js +1 -1
  69. package/dist/ci/getcompiler.js +1 -1
  70. package/dist/ci/index.js +1 -1
  71. package/dist/ci/miniapp/androidCloudBuild.js +1 -0
  72. package/dist/ci/miniapp/archive.js +1 -0
  73. package/dist/ci/miniapp/checkBuildArgument.js +1 -0
  74. package/dist/ci/miniapp/iosCloudBuild.js +1 -0
  75. package/dist/ci/miniapp/iosLocalBuild.js +1 -0
  76. package/dist/ci/miniapp/iosTheme.js +1 -0
  77. package/dist/ci/miniapp/miniappPlugin.js +1 -0
  78. package/dist/ci/miniapp/sdkManager.js +1 -0
  79. package/dist/ci/miniapp/upload.js +1 -0
  80. package/dist/ci/miniappattr.js +1 -0
  81. package/dist/ci/upload.js +1 -1
  82. package/dist/ci/utils/ciRequest.js +1 -0
  83. package/dist/ci/utils/progressupdate.js +1 -0
  84. package/dist/ci/utils/tools.js +1 -1
  85. package/dist/ci/utils/unpack.js +1 -0
  86. package/dist/ci/utils/wxvpkg/unpack/config.js +1 -0
  87. package/dist/ci/utils/wxvpkg/unpack/version0.js +1 -0
  88. package/dist/ci/utils/wxvpkg/unpack/version10.js +1 -0
  89. package/dist/ci/utils/wxvpkg/utils.js +1 -0
  90. package/dist/common/code-analyse/index.js +1 -1
  91. package/dist/config/config.js +1 -1
  92. package/dist/config/url.config.js +1 -1
  93. package/dist/index.js +1 -1
  94. package/dist/modules/corecompiler/baseCompiler.js +1 -1
  95. package/dist/modules/corecompiler/original/workerThread/task/minifywxml.js +1 -1
  96. package/dist/modules/corecompiler/processHandler.js +1 -1
  97. package/dist/modules/corecompiler/summer/graph/basegraph.js +1 -1
  98. package/dist/modules/corecompiler/summer/module.js +1 -1
  99. package/dist/modules/corecompiler/summer/plugins/base/javascript.js +1 -1
  100. package/dist/modules/corecompiler/summer/plugins/base/swc.js +1 -1
  101. package/dist/modules/corecompiler/summer/plugins/base/wxss.js +1 -1
  102. package/dist/modules/corecompiler/summer/plugins/terser.js +1 -1
  103. package/dist/modules/corecompiler/summer/plugins/typescript.js +1 -1
  104. package/dist/modules/corecompiler/summer/worker.js +1 -1
  105. package/dist/modules/corecompiler/summerCompiler.js +1 -1
  106. package/dist/modules/fullcompiler/app/app.js +1 -0
  107. package/dist/modules/fullcompiler/app/contactandlaunch/originalcontactbase64.js +1 -0
  108. package/dist/modules/fullcompiler/app/contactandlaunch/originallaunchbase64.js +1 -0
  109. package/dist/modules/fullcompiler/app/contactandlaunch/updateContactForSubpkg.js +1 -0
  110. package/dist/modules/fullcompiler/app/contactandlaunch/updatecontactandlaunch.js +1 -0
  111. package/dist/modules/index.js +1 -1
  112. package/dist/modules/nativecompiler/index.js +1 -1
  113. package/dist/modules/nativecompiler/ios/buildCloud.js +1 -1
  114. package/dist/modules/nativecompiler/ios/index.js +1 -1
  115. package/dist/modules/precompiler/conditioncompile/index.js +1 -1
  116. package/dist/modules/precompiler/index.js +1 -1
  117. package/dist/project/advance/precompileProject.js +1 -1
  118. package/dist/project/ciProject.js +1 -1
  119. package/dist/utils/codesign.js +1 -1
  120. package/dist/utils/cp.js +1 -1
  121. package/dist/utils/locales/en.js +1 -1
  122. package/dist/utils/locales/zh.js +1 -1
  123. package/dist/utils/miniAppI18N.js +1 -0
  124. package/dist/utils/miniapp-builder.js +1 -1
  125. package/dist/utils/miniappJson.js +1 -1
  126. package/dist/utils/progressRecorder.js +1 -1
  127. package/dist/utils/report.js +1 -1
  128. package/dist/utils/request.js +1 -1
  129. package/dist/utils/subprocess/processManager.js +1 -1
  130. package/dist/utils/taskstatus.js +1 -1
  131. package/dist/utils/tools.js +1 -1
  132. package/dist/utils/zip.js +1 -1
  133. package/package.json +5 -4
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateCloudAndroidApk=exports.buildApk=void 0;const tslib_1=require("tslib"),request_1=require("../utils/request"),miniAppI18N_1=tslib_1.__importDefault(require("../utils/miniAppI18N")),checkBuildArgument_1=require("./miniapp/checkBuildArgument"),miniappJson_1=require("../utils/miniappJson"),tools_1=require("../utils/tools"),androidCloudBuild_1=require("./miniapp/androidCloudBuild"),log=tslib_1.__importStar(require("../utils/log")),tools_2=require("./utils/tools"),report_1=require("../utils/report");async function buildApk(e){const r=Date.now();let i;try{if(!e.project)throw new Error("缺少参数 project");const{project:r}=e;await r.miniappAttr();const{buildArchiveOpts:o,cloudBuildInfo:t}=(0,checkBuildArgument_1.transformAndroidBuildArgument)(e);e.disableCache&&((0,tools_2.clearAndroidCacheDir)(),log.info("清除 Apk 构建缓存成功")),i=await generateCloudAndroidApk(e,o,t)}catch(e){log.error("构建 Apk 失败:",e.message),i={success:!1,errmsg:"构建 Apk 失败:"+e.message}}const o=Date.now()-r;return e.project&&(0,report_1.reportAction)("buildApk",i.success?0:-1,i.errmsg,o,e.project),i}async function generateCloudAndroidApk(e,r,i){var o;const{project:t,output:s}=e;let n=!1,d="failed";try{miniAppI18N_1.default.createI18NInfo(t.projectPath);const{useCloudUpload:u,useAab:c,packageVersion:a,packageDesc:l,certificateInfo:p,uploadAppInfo:A}=i,g=Object.assign({},r);u?(g.useCloudSync=!0,g.version=a,g.desc=l):(g.version=A?A.userVersion:"",g.desc=A?A.userDesc:"");const k=(0,miniappJson_1.tryGetAndroidMiniappJson)(t.projectPath);await checkAndroidSdkVersion(k);const m=Object.assign(Object.assign({},e),{resourceDir:(0,tools_2.getMiniappCacheDir)(),robot:e.robot||1});let _="";_=c?await(0,androidCloudBuild_1.getAndroidAabBuild)(m).build(g,s,p.androidCertificate):await(0,androidCloudBuild_1.getAndroidApkBuild)(m).build(g,s,p.androidCertificate),(null===(o=k.channel)||void 0===o?void 0:o.value)&&(_=`${_.slice(0,-4)}-${k.channel.value}${c?".aab":".Apk"}`),log.success("构建 Apk 成功"),n=!0,d="success! output file at "+_}catch(e){n=!1,d=e.message,log.error("构建 Apk 失败:",e.message)}return{success:n,errmsg:d}}async function checkAndroidSdkVersion(e){if(e.sdkVersion&&(null==e?void 0:e.usePluginSdk)){const r="http://dldir1.qq.com/WechatWebDev/donut/android-extended-sdk-version.json";let{body:i}=await(0,request_1.request)({url:r,method:"get"});try{i=JSON.parse(i)}catch(e){}const o=i;if(o){Object.keys(e.usePluginSdk).forEach(r=>{const i=e.usePluginSdk[r];if(!i)return;const t=o[r][i].minMainSdk;if((0,tools_1.compareSemVer)(e.sdkVersion,t)<0)throw new Error("存在主模块 SDK 版本不满足拓展 SDK 使用最小版本情况,请检查")})}}}exports.buildApk=buildApk,exports.generateCloudAndroidApk=generateCloudAndroidApk;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildIpa=void 0;const tslib_1=require("tslib"),log=tslib_1.__importStar(require("../utils/log")),checkBuildArgument_1=require("./miniapp/checkBuildArgument"),miniAppI18N_1=tslib_1.__importDefault(require("../utils/miniAppI18N")),miniappJson_1=require("../utils/miniappJson"),sdkManager_1=require("./miniapp/sdkManager"),tools_1=require("./utils/tools"),iosLocalBuild_1=require("./miniapp/iosLocalBuild"),miniappPlugin_1=require("./miniapp/miniappPlugin"),iosTheme_1=require("./miniapp/iosTheme"),report_1=require("../utils/report"),iosCloudBuild_1=require("./miniapp/iosCloudBuild");async function buildIpa(i){const e=Date.now();let t;try{if(!i.project)throw new Error("缺少参数 project");const{project:e}=i;await e.miniappAttr();const{buildArchiveOpts:o,cloudBuildInfo:a}=(0,checkBuildArgument_1.transformIOSBuildArgument)(i);i.disableCache&&((0,tools_1.clearIOSCacheDir)(),log.info("清除 Ipa 构建缓存成功")),t=await generateCloudIOSIPA(i,o,a)}catch(i){log.error("构建 Ipa 失败:",i.message),t={success:!1,errmsg:"构建 Ipa 失败:"+i.message}}const o=Date.now()-e;return i.project&&(0,report_1.reportAction)("buildIpa",t.success?0:-1,t.errmsg,o,i.project),t}async function generateCloudIOSIPA(i,e,t){var o;const{project:a,output:r}=i;let s=!1,n="failed";try{miniAppI18N_1.default.createI18NInfo(a.projectPath);const{useCloudUpload:p,packageVersion:u,packageDesc:l,useRemoteCloudBuild:c,uploadAppInfo:d}=t;(0,miniappJson_1.autoCompleteIOSPrivacyDesc)(a.projectPath)||log.info("默认隐私信息访问许可描述添加成功");const m=(0,miniappJson_1.tryGetIOSMiniappJson)(a.projectPath),g=m.sdkVersion,{demoIpaPath:I,sdkPath:_}=await(0,sdkManager_1.generateMiniappIOSResources)(a,g,"arm64",!!m.enableIpad);p?(e.useCloudSync=!0,e.version=u,e.desc=l):(e.version=d?d.userVersion:"",e.desc=d?d.userDesc:"");const h=Object.assign(Object.assign({},i),{resourceDir:(0,tools_1.getMiniappCacheDir)(),robot:i.robot||1}),P=(0,miniappPlugin_1.getMiniappPluginManager)(h);await P.downloadPlugin(miniappPlugin_1.OS_TYPE_ENUM.IOS);const f=await P.getPluginDirList(miniappPlugin_1.OS_TYPE_ENUM.IOS),b=await(0,iosTheme_1.getIOSTheme)(a,null===(o=null==m?void 0:m.splashscreen)||void 0===o?void 0:o.customImage),O=await a.miniappAttr()||{},C=(0,tools_1.getMiniappCacheDir)(),S={buildType:"CLOUD",certificateInfo:t.certificateInfo,demoIpaPath:I,sdkPath:_,miniappCacheDirPath:C,bindingInfo:O,output:r,pluginDirList:f,theme:b,i18nInfo:miniAppI18N_1.default.i18nInfo,projectPath:a.projectPath};if(c){const i=(0,iosCloudBuild_1.getIOSCloudBuild)(h);await i.build(e,S,r)}else{S.CILocalBuild=!0;const i=(0,iosLocalBuild_1.getIOSLocalBuild)(h);await i.build(e,S,I)}log.success("构建 Ipa 成功"),s=!0,n="success! output file at "+r}catch(i){s=!1,n=i.message||i,log.error("构建 Ipa 失败:",n)}return{success:s,errmsg:n}}exports.buildIpa=buildIpa;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiledResult=exports.SIGNATURE_FILE_NAME=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"),jszip_1=tslib_1.__importDefault(require("jszip")),path_1=tslib_1.__importDefault(require("path")),filterUnusedFile_1=require("./utils/filterUnusedFile"),getcompiler_1=require("./getcompiler"),tools_1=require("./utils/tools");async function getCompiledResult(e,t){const{test:r,project:i,setting:o={},onProgressUpdate:s=function(e){console.log(""+e)},threads:l=0,includedMap:a=!1,allowIgnoreUnusedFiles:n=!0}=e;if(process.env.COMPILE_THREADS=l.toString(),!i)throw new error_1.CodeError(locales_1.default.config.PARAM_ERROR.format("upload","project"),config_1.PARAM_ERROR);cache_1.cacheManager.clean();const u=await(0,getcompiler_1.getCompiler)(i,o);let _=await u.compile({setting:(0,tools_1.formatCISetting)(i,o),onProgressUpdate:s,resultType:"prod"});!1!==n&&(_=await(0,filterUnusedFile_1.filterUnusedFile)(!!r,i,_));const c={};if(Object.keys(_).sort().forEach(e=>{e.endsWith("js.map")&&!a||(c[e]=_[e])}),t){const e=new jszip_1.default;Object.keys(c).forEach(t=>{e.folder(path_1.default.dirname(t)).file(path_1.default.basename(t),c[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 c}exports.SIGNATURE_FILE_NAME="ci.signature",exports.getCompiledResult=getCompiledResult;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiledResult=exports.SIGNATURE_FILE_NAME=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:o={},onProgressUpdate:s=function(e){console.log(""+e)},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,o),_=await l.compile({setting:(0,tools_1.formatCISetting)(r,o),onProgressUpdate:(0,progressupdate_1.transProgressUpdate)(s),resultType:"prod"}),u={};if(Object.keys(_).sort().forEach(e=>{e.endsWith("js.map")&&!a||(u[e]=_[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.SIGNATURE_FILE_NAME="ci.signature",exports.getCompiledResult=getCompiledResult;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiler=exports.getOriginalCompiler=void 0;const tslib_1=require("tslib"),originalCompiler_1=require("../modules/corecompiler/originalCompiler"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),index_1=require("../modules/index"),precompileProject_1=require("../project/advance/precompileProject"),precompiler_1=require("../modules/precompiler"),tools_1=require("./utils/tools");let compilerInstance;const getOriginalCompiler=async e=>{if(!compilerInstance||!compilerInstance.project||compilerInstance.project.projectPath!==e.projectPath){const r=new precompiler_1.ConditionCompiler(e),o=new precompileProject_1.PreCompileProject(e,r,{targetPlatform:"mini-weixin"});compilerInstance=new originalCompiler_1.OriginalCompiler(o)}return await compilerInstance.ready(),compilerInstance.setLocale(locales_1.default.getLocale()),compilerInstance};async function getBuilder(e){const r=new index_1.Builder(e,{devtoolMessagehub:{showBuildLog:(e,r,o)=>{console.error("msg-"+e,"compile",r,o)}}});return await r.ready(),r}exports.getOriginalCompiler=getOriginalCompiler;const getCompiler=async(e,r)=>{e.setting=(0,tools_1.formatCISetting)(e,r);return(await getBuilder(e)).getCompiler()};exports.getCompiler=getCompiler;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCompiler=exports.getBuilder=exports.getOriginalCompiler=void 0;const tslib_1=require("tslib"),originalCompiler_1=require("../modules/corecompiler/originalCompiler"),locales_1=tslib_1.__importDefault(require("../utils/locales/locales")),index_1=require("../modules/index"),precompileProject_1=require("../project/advance/precompileProject"),precompiler_1=require("../modules/precompiler"),tools_1=require("./utils/tools");let compilerInstance;const getOriginalCompiler=async e=>{if(!compilerInstance||!compilerInstance.project||compilerInstance.project.projectPath!==e.projectPath){const r=new precompiler_1.ConditionCompiler(e,void 0,void 0),i=new precompileProject_1.PreCompileProject(e,r,{targetPlatform:"mini-weixin"});compilerInstance=new originalCompiler_1.OriginalCompiler(i)}return await compilerInstance.ready(),compilerInstance.setLocale(locales_1.default.getLocale()),compilerInstance};async function getBuilder(e,r){const i=new index_1.Builder(e,Object.assign({devtoolMessagehub:{showBuildLog:(e,r,i)=>{console.error("msg-"+e,"compile",r,i)}}},r));return await i.ready(),i}exports.getOriginalCompiler=getOriginalCompiler,exports.getBuilder=getBuilder;const getCompiler=async(e,r)=>{e.setting=(0,tools_1.formatCISetting)(e,r);return(await getBuilder(e)).getCompiler()};exports.getCompiler=getCompiler;
package/dist/ci/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cleanCache=exports.workletVersion=exports.getWhiteExtList=exports.checkCodeQuality=exports.analyseCode=exports.getLatestVersion=exports.uploadJsServer=exports.cloud=exports.getDevSourceMap=exports.proxy=exports.packNpmManually=exports.packNpm=exports.getCompiledResult=exports.preview=exports.upload=exports.Project=void 0;const project_1=require("./project");Object.defineProperty(exports,"Project",{enumerable:!0,get:function(){return project_1.Project}});const upload_1=require("./upload"),preview_1=require("./preview"),getDevSourceMap_1=require("./getDevSourceMap"),packnpm_1=require("../modules/corecompiler/original/npm/packnpm");Object.defineProperty(exports,"packNpm",{enumerable:!0,get:function(){return packnpm_1.packNpm}}),Object.defineProperty(exports,"packNpmManually",{enumerable:!0,get:function(){return packnpm_1.packNpmManually}});const request_1=require("../utils/request");Object.defineProperty(exports,"proxy",{enumerable:!0,get:function(){return request_1.setCiProxy}});const uploadFunction_1=require("./cloud/uploadFunction"),createTimeTrigger_1=require("./cloud/createTimeTrigger"),uploadContainer_1=require("./cloud/uploadContainer"),uploadFile_1=require("./cloud/uploadFile"),report_1=require("../utils/report"),jsserver_1=require("./jsserver");Object.defineProperty(exports,"uploadJsServer",{enumerable:!0,get:function(){return jsserver_1.uploadJsServer}});const code_analyse_1=require("./code-analyse");Object.defineProperty(exports,"analyseCode",{enumerable:!0,get:function(){return code_analyse_1.analyseCode}});const getCompiledResult_1=require("./getCompiledResult");Object.defineProperty(exports,"getCompiledResult",{enumerable:!0,get:function(){return getCompiledResult_1.getCompiledResult}});const getLatestVersion_1=require("./getLatestVersion");Object.defineProperty(exports,"getLatestVersion",{enumerable:!0,get:function(){return getLatestVersion_1.getLatestVersion}});const white_ext_list_1=require("../utils/white_ext_list");Object.defineProperty(exports,"getWhiteExtList",{enumerable:!0,get:function(){return white_ext_list_1.getWhiteExtList}});const checkCodeQuality_1=require("./checkCodeQuality");Object.defineProperty(exports,"checkCodeQuality",{enumerable:!0,get:function(){return checkCodeQuality_1.checkCodeQuality}});const cache_1=require("../utils/cache");function cleanCache(){cache_1.cacheManager.clean()}exports.upload=(0,report_1.wrapReport)("upload",upload_1.upload),exports.preview=(0,report_1.wrapReport)("preview",preview_1.preview),exports.getDevSourceMap=(0,report_1.wrapReport)("getDevSourceMap",getDevSourceMap_1.getDevSourceMap),exports.cloud={uploadFunction:uploadFunction_1.uploadFunction,createTimeTrigger:createTimeTrigger_1.createTimeTrigger,uploadStaticStorage:e=>(0,uploadFile_1.uploadFiles)(e,"staticstorage"),uploadStorage:e=>(0,uploadFile_1.uploadFiles)(e,"storage"),uploadContainer:uploadContainer_1.uploadContainer},exports.workletVersion=require("../utils/babel_plugin_worklet").version,exports.cleanCache=cleanCache;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cleanCache=exports.workletVersion=exports.buildIpa=exports.buildApk=exports.getWhiteExtList=exports.checkCodeQuality=exports.analyseCode=exports.getLatestVersion=exports.uploadJsServer=exports.cloud=exports.getDevSourceMap=exports.proxy=exports.packNpmManually=exports.packNpm=exports.getCompiledResult=exports.preview=exports.upload=exports.Project=void 0;const project_1=require("./project");Object.defineProperty(exports,"Project",{enumerable:!0,get:function(){return project_1.Project}});const upload_1=require("./upload"),preview_1=require("./preview"),getDevSourceMap_1=require("./getDevSourceMap"),packnpm_1=require("../modules/corecompiler/original/npm/packnpm");Object.defineProperty(exports,"packNpm",{enumerable:!0,get:function(){return packnpm_1.packNpm}}),Object.defineProperty(exports,"packNpmManually",{enumerable:!0,get:function(){return packnpm_1.packNpmManually}});const request_1=require("../utils/request");Object.defineProperty(exports,"proxy",{enumerable:!0,get:function(){return request_1.setCiProxy}});const uploadFunction_1=require("./cloud/uploadFunction"),createTimeTrigger_1=require("./cloud/createTimeTrigger"),uploadContainer_1=require("./cloud/uploadContainer"),uploadFile_1=require("./cloud/uploadFile"),report_1=require("../utils/report"),jsserver_1=require("./jsserver");Object.defineProperty(exports,"uploadJsServer",{enumerable:!0,get:function(){return jsserver_1.uploadJsServer}});const code_analyse_1=require("./code-analyse");Object.defineProperty(exports,"analyseCode",{enumerable:!0,get:function(){return code_analyse_1.analyseCode}});const getCompiledResult_1=require("./getCompiledResult");Object.defineProperty(exports,"getCompiledResult",{enumerable:!0,get:function(){return getCompiledResult_1.getCompiledResult}});const getLatestVersion_1=require("./getLatestVersion");Object.defineProperty(exports,"getLatestVersion",{enumerable:!0,get:function(){return getLatestVersion_1.getLatestVersion}});const white_ext_list_1=require("../utils/white_ext_list");Object.defineProperty(exports,"getWhiteExtList",{enumerable:!0,get:function(){return white_ext_list_1.getWhiteExtList}});const checkCodeQuality_1=require("./checkCodeQuality");Object.defineProperty(exports,"checkCodeQuality",{enumerable:!0,get:function(){return checkCodeQuality_1.checkCodeQuality}});const cache_1=require("../utils/cache"),build_apk_1=require("./build-apk");Object.defineProperty(exports,"buildApk",{enumerable:!0,get:function(){return build_apk_1.buildApk}});const build_ipa_1=require("./build-ipa");function cleanCache(){cache_1.cacheManager.clean()}Object.defineProperty(exports,"buildIpa",{enumerable:!0,get:function(){return build_ipa_1.buildIpa}}),exports.upload=(0,report_1.wrapReport)("upload",upload_1.upload),exports.preview=(0,report_1.wrapReport)("preview",preview_1.preview),exports.getDevSourceMap=(0,report_1.wrapReport)("getDevSourceMap",getDevSourceMap_1.getDevSourceMap),exports.cloud={uploadFunction:uploadFunction_1.uploadFunction,createTimeTrigger:createTimeTrigger_1.createTimeTrigger,uploadStaticStorage:e=>(0,uploadFile_1.uploadFiles)(e,"staticstorage"),uploadStorage:e=>(0,uploadFile_1.uploadFiles)(e,"storage"),uploadContainer:uploadContainer_1.uploadContainer},exports.workletVersion=require("../utils/babel_plugin_worklet").version,exports.cleanCache=cleanCache;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAndroidAabBuild=exports.getAndroidApkBuild=void 0;const tslib_1=require("tslib"),tools_1=require("../../utils/tools"),zip_1=require("../../utils/zip"),archive=tslib_1.__importStar(require("./archive")),miniappJson_1=require("../../utils/miniappJson"),android=tslib_1.__importStar(require("../android-miniapp-toolkit/dist/index")),log=tslib_1.__importStar(require("../../utils/log")),urlConfig=tslib_1.__importStar(require("../../config/url.config")),ciRequest_1=require("../utils/ciRequest"),sign_1=require("../../utils/sign"),request_1=require("../../utils/request"),path=require("path"),fs=require("fs-extra"),safeGet=require("licia/safeGet"),find=require("licia/find"),trim=require("licia/trim"),endWith=require("licia/endWith"),clone=require("licia/clone"),isUndef=require("licia/isUndef"),sleep=require("licia/sleep"),now=require("licia/now"),each=require("licia/each"),fileSize=require("licia/fileSize"),promisify=require("licia/promisify"),AdmZip=require("adm-zip"),rmdir=promisify(require("licia/rmdir"));var TaskStatus;!function(i){i[i.Pending=1]="Pending",i[i.Running=2]="Running",i[i.Success=3]="Success",i[i.Fail=4]="Fail"}(TaskStatus||(TaskStatus={}));const waitTimeout=3e5,waitInterval=1e4;class AndroidCloudBuild{constructor(i,t){this.baseDir="",this.infoPath="",this.androidDir="",this.res=Buffer.from([]),this.md5="",this.output="",this.skipCheckRemote=!1,this.packageName="",this.downloadRes=async i=>new Promise((t,e)=>{(0,request_1.simpleRequest)({url:i,method:"get",encoding:null},(i,s,a)=>{if(i)return e(i);t(a)})}),this.aab=i,this.project=t.project,this.ciOpts=t}async build(i,t,e){return await this.init(t),await this.checkBase()||await this.buildBase(),e&&(isUndef(e.keyStore)||""===trim(e.keyStore))&&(e={}),await this.buildCode(i),await this.buildResult(e),this.output}async init(i){const{aab:t,project:e}=this,s=(0,tools_1.generateMD5)(e.projectPath),a=await this.getPackageName();this.androidDir=path.posix.join(this.ciOpts.resourceDir,"android/"+s),this.baseDir=path.posix.join(this.androidDir,t?"aab":"apk"),this.infoPath=path.posix.join(this.androidDir,t?"info-aab.json":"info.json");const r=(0,miniappJson_1.tryGetAndroidMiniappJson)(e.projectPath).version||"",o=`${a}${r?"-"+r:""}.${t?"aab":"apk"}`;this.output=path.posix.join(i,o),this.skipCheckRemote=!1,this.packageName=a,await fs.ensureDir(this.androidDir),this.res=t?await android.pack({configPath:e.projectPath,aab:!0}):await android.pack({configPath:e.projectPath}),this.md5=(0,tools_1.generateMD5)(this.res),log.info(`本地 Android 配置资源打包,大小:${fileSize(this.res.length)} B`)}async buildCode(i){try{const{version:t,desc:e,miniappPkgType:s,remoteDebugEnable:a,useCloudSync:r=!1}=i,o="mini-android",n=this.project,c=path.posix.join(this.baseDir,this.aab?"base/assets/SaaA_embed":"assets/SaaA_embed");fs.existsSync(c)&&await fs.remove(c),await archive.buildProjectArchive(this.ciOpts,{version:t,desc:e,targetPlatform:o,outputDir:c,miniappOptions:{miniappPkgType:s,remoteDebugEnable:a,useCloudSync:r,archVersion:1,needClientJsExtInfo:(0,miniappJson_1.isAndroidNeedClientJsExtInfo)(n.projectPath)}}),log.info("构建项目资源包成功")}catch(i){throw i}}async checkBase(){return await this.checkLocal()||await this.checkRemote()}async checkLocal(){const{infoPath:i}=this;if(!fs.existsSync(i))return log.info("本地未找到基座 APK,需要远程构建"),!1;const t=JSON.parse(await fs.readFile(i,"utf8"));return t.packageName&&t.packageName!==this.packageName?(this.skipCheckRemote=!0,log.info("本地存在基座 APK,但已过期无法使用,需要远程构建"),!1):t.md5===this.md5?(log.info("本地存在符合基座 APK,直接使用"),!0):(log.info("本地存在基座 APK,但已过期无法使用,需要远程构建"),!1)}async checkRemote(){if(this.skipCheckRemote)return!1;const i=await this.waitForRemoteReady();if(i&&i.status===TaskStatus.Success)try{return await this.downloadBase(i.task_id),log.info("远程存在符合基座 APK,直接使用"),!0}catch(i){log.info(i.message)}else log.info("远程不存在基座 APK,需要构建");return!1}async buildBase(){const{infoPath:i}=this,t=await this.createTask();if(!t){if(fs.existsSync(i))return void log.error("该多端应用当周构建次数已用完,本次构建基于本地基座 APK,仅更新小程序代码");throw Error("该多端应用今日构建次数已用完")}log.info("任务创建成功,任务 ID: "+t);const e=await this.waitForRemoteReady();if(e){if(e.status!==TaskStatus.Success)throw e.status===TaskStatus.Fail?Error("基座 APK 构建失败,错误信息:"+e.errmsg):Error("基座 APK 构建超时,请稍候重试");await this.downloadBase(e.task_id)}}async buildResult(i){var t;const e=this.project,s=(0,miniappJson_1.tryGetAndroidMiniappJson)(e.projectPath);(null===(t=s.channel)||void 0===t?void 0:t.value)&&(this.output=`${this.output.slice(0,-4)}-${s.channel.value}${this.aab?".aab":".apk"}`),await this.genZip(),log.info("对 APK 进行签名");try{this.aab?await android.signV1(this.output,i):await android.sign(this.output,i)}catch(i){throw Error("APK 签名失败,请确保证书配置正确,错误信息:"+i.message)}log.info("APK 构建成功,保存位置:"+this.output)}async genZip(){const{baseDir:i,output:t}=this,e=new AdmZip;await e.addLocalFolderPromise(i);const s=clone(e.getEntries());this.aab?each(s,i=>{i.isDirectory&&(Object.defineProperty(i,"isDirectory",{get:()=>!1}),e.deleteFile(i))}):each(s,i=>{"resources.arsc"===i.entryName&&(i.header.method=0)});const a=await e.toBufferPromise();await fs.writeFile(t,a)}async createTask(){const i=this.project.appid,t=await(0,sign_1.getSignature)(this.project.privateKey,i),e=await(0,ciRequest_1.ciCustomRequest)(`${urlConfig.uploadCloudBuildResourcePack}?os_type=2&appid=${i}&signature=${encodeURIComponent(t)}&robot=${this.ciOpts.robot}`,this.res,{"content-type":"application/octet-stream"}),s=e.baseresponse||{errcode:-1e4},a=parseInt(s.errcode,10);if(0===a)return e.task_id;if(10002053===a)return"";throw Error("任务创建失败,错误码:"+a)}async waitForRemoteReady(){const i=now();for(;;){const t=await this.getTask();if(!t||t.status===TaskStatus.Success||t.status===TaskStatus.Fail||now()-i>3e5)return t;t.status===TaskStatus.Pending?log.info("检查任务状态,等待中..."):t.status===TaskStatus.Running&&log.info("检查任务状态,构建中..."),await sleep(1e4)}}async getTask(){const i=await this.getTaskList();return find(i,i=>!0===i.is_self)}async getTaskList(){return(await(0,ciRequest_1.ciSimpleRequest)({privateKey:this.project.privateKey,appid:this.project.appid,cgi:urlConfig.getCloudBuildTaskList+"?os_type=2",robot:this.ciOpts.robot})).list}async downloadBase(i){log.info("下载远程基座 APK,任务 ID:"+i);const{pkgUrl:t,resUrl:e}=await this.getTaskResultUrl(i),s=await this.downloadRes(e),a=(0,tools_1.generateMD5)(s);if(a!==this.md5)throw Error("远程存在基座 APK,但已过期无法使用,需要重新远程构建");await this.downloadPkg(t);const r={taskId:i,packageName:this.packageName,md5:a};await fs.writeFile(this.infoPath,JSON.stringify(r,null,2),"utf8")}downloadPkg(i){const{baseDir:t,infoPath:e}=this,s=path.resolve(this.androidDir,"base.zip"),a=fs.createWriteStream(s,{mode:511});return new Promise((r,o)=>{(0,request_1.simpleRequest)({url:i,method:"get"},i=>{i&&o(i)}).pipe(a),a.on("error",i=>{o(i)}),a.on("close",async()=>{try{fs.existsSync(e)&&await fs.unlink(e),fs.existsSync(t)&&await rmdir(t),await(0,zip_1.unzip)(s,t);const i=path.resolve(t,"META-INF"),a=await fs.readdir(i);for(let t=0,e=a.length;t<e;t++){const e=a[t];if(endWith(e,".RSA")||endWith(e,".SF")){const t=path.resolve(i,e);await fs.unlink(t)}}await fs.unlink(s)}catch(i){return o(i)}r({})})})}async getTaskResultUrl(i){const t=await(0,ciRequest_1.ciSimpleRequest)({cgi:`${urlConfig.getCloudBuildPkgUrl}?task_id=${i}`,privateKey:this.project.privateKey,appid:this.project.appid,robot:this.ciOpts.robot});return{pkgUrl:t.pkg_url,resUrl:t.resource_url}}async getPackageName(){const i=this.project,t=await i.miniappAttr();return safeGet(t,"mobileapp_info.android_package_name")||"com.tencent.weauth"}}const getAndroidApkBuild=i=>new AndroidCloudBuild(!1,i);exports.getAndroidApkBuild=getAndroidApkBuild;const getAndroidAabBuild=i=>new AndroidCloudBuild(!0,i);exports.getAndroidAabBuild=getAndroidAabBuild;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildProjectArchive=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,n,t,s){const{project:a,robot:p}=e,c=await(0,sign_1.getSignature)(a.privateKey,a.appid),l={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:c,robot:p},u=fse.createWriteStream(o,{mode:511});return new Promise((e,o)=>{const r=request({url:`${url_config_1.getPkgWxapkg}?${QueryString.stringify(l)}`,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{setting:p={useProjectConfig:!1},project:c,targetPlatform:l}=this,u=(0,miniappJson_1.getMiniappJson)(c.projectPath,l),g=u.icon,d=u.name,f=(await(0,getcompiler_1.getCompiler)(c,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:n,cpfWxaAttrSyncResponse:t,miniappPkgType:s});fse.ensureDirSync(path.dirname(r)),fse.writeJSONSync(r,_)}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:c}=o,{miniappPkgType:l,useCloudSync:u,needClientJsExtInfo:g}=p;log.info("下载项目资源包中..."),i=path.join(e.resourceDir,"app.wxapkg"),await downloadWxapkg(e,i,a,o.targetPlatform,l,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(c),fse.emptyDirSync(c),d.wxapkgs.forEach(e=>{const o=path.join(c,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(c,"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);(await(0,getcompiler_1.getCompiler)(e.project,e.setting||{useProjectConfig:!1})).destroy()}}exports.buildProjectArchive=buildProjectArchive;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformIOSBuildArgument=exports.transformAndroidBuildArgument=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||(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");if(validateFileExistenceAndExtname("build-apk options","keyStore",o,".jks"),!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 h=o.projectPath,y=(0,miniappJson_1.getRawMiniappJson)(o.projectPath),b=(0,miniappJson_1.tryGetIOSMiniappJson)(h),A=`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 E={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,E.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(E,"profile"),unifyiOSBuildFilePathForWindows(E,"tpnsProfile"),unifyiOSBuildFilePathForWindows(E,"p12"));const e=Buffer.from(E.p12password,"utf8"),r=crypto.publicEncrypt(exports.publicKeyForP12password,e);E.p12passwordEncrypted=r.toString("base64"),y["mini-ios"].buildCloud=E,delete E.p12password,(0,miniappJson_1.writeMiniAppJson)(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||A,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||A,uploadAppInfo:{uploadBetaVersion:c,userVersion:b.version,userDesc:d||A},useRemoteCloudBuild:s||!1,recordInfo:""}}};exports.transformIOSBuildArgument=transformIOSBuildArgument;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getIOSCloudBuild=void 0;const tslib_1=require("tslib"),tools_1=require("../../utils/tools"),miniappJson_1=require("../../utils/miniappJson"),getcompiler_1=require("../getcompiler"),log=tslib_1.__importStar(require("../../utils/log")),packfile_1=require("../utils/packfile"),archive=tslib_1.__importStar(require("./archive")),urlConfig=tslib_1.__importStar(require("../../config/url.config")),ciRequest_1=require("../utils/ciRequest"),sign_1=require("../../utils/sign"),request_1=require("../../utils/request"),zip_1=require("../../utils/zip"),zlib_1=tslib_1.__importDefault(require("zlib")),path=require("path"),fs=require("fs-extra"),safeGet=require("licia/safeGet"),promisify=require("licia/promisify"),fileSize=require("licia/fileSize"),now=require("licia/now"),find=require("licia/find"),sleep=require("licia/sleep"),gzip=promisify(zlib_1.default.gzip);var OSType,TaskStatus;!function(i){i[i.iOS=1]="iOS",i[i.Android=2]="Android"}(OSType||(OSType={})),function(i){i[i.Pending=1]="Pending",i[i.Running=2]="Running",i[i.Success=3]="Success",i[i.Fail=4]="Fail"}(TaskStatus||(TaskStatus={}));const waitTimeout=3e5,waitInterval=1e4,TransformTipsURL="https://web-v2-1g8g0y2x3197301a-1304825656.tcloudbaseapp.com/important_miniapp/MiniAppBuildTips.json?sign=0f07b014a760d699cf2c8a9bb84845bf&t=1724920547";class IOSCloudBuild{constructor(i){this.baseDir="",this.materialDir="",this.iOSDir="",this.iPADir="",this.res=Buffer.from([]),this.md5="",this.output="",this.buildSuccess=!1,this.logAbPath="",this.project=i.project,this.ciOpts=i}async build(i,t,e){return this.cloudBuildOptions=t,await this.init(e),await this.buildMaterial(i),await this.buildBase(),await this.buildResult(),this.output}async init(i){const t=this.project,e=(0,tools_1.generateMD5)(t.projectPath),s=await this.getBundleId();if(this.iOSDir=path.join(this.ciOpts.resourceDir,"iOSCloudBuild/"+e),this.baseDir=path.join(this.iOSDir),this.materialDir=path.join(this.iOSDir,"project"),this.iPADir=path.join(this.iOSDir,"ipa"),i){const e=(0,miniappJson_1.tryGetAndroidMiniappJson)(t.projectPath).version||"",a=this.getFinalIpaName(s,e);this.output=path.posix.join(i,a)}else this.output=path.posix.join(this.iOSDir,"app.ipa");await fs.ensureDir(this.iOSDir),await fs.ensureDir(this.materialDir),await fs.emptyDir(this.materialDir)}async packAllFilesInDir(i){const t=await(0,packfile_1.packFiledir)(i);return await gzip(t.data)}async buildMaterial(i){let t;try{t=await(0,getcompiler_1.getBuilder)(this.project,{devtoolMessagehub:{showBuildLog:(i,t,e)=>{log.info("miniprogram-ci native compile",t,e)}}});const e=await t.getNativeCompiler();await e.packIOSCloudBuildMaterial(Object.assign(Object.assign({},this.cloudBuildOptions),{matrialDistPath:this.materialDir})),await this.buildCode(i),this.res=await this.packAllFilesInDir(this.materialDir),this.md5=(0,tools_1.generateMD5)(this.res),log.info(`本地 iOS 配置资源打包,大小:${fileSize(this.res.length)} B`)}catch(i){throw i}finally{null==t||t.destroy()}}async buildCode(i){try{const{version:t,desc:e,miniappPkgType:s,remoteDebugEnable:a,useCloudSync:r=!1}=i,o="mini-ios",n=path.posix.join(this.materialDir,"__miniappWxapkg");if(fs.existsSync(n)&&await fs.remove(n),await archive.buildProjectArchive(this.ciOpts,{version:t,desc:e,targetPlatform:o,outputDir:n,miniappOptions:{miniappPkgType:s,remoteDebugEnable:a,useCloudSync:r,archVersion:1}}),!fs.existsSync(n))throw new Error("ios cloudbuild failed: cant find buildCode result: "+n);log.info("构建项目资源包成功")}catch(i){throw i}}async buildBase(){const i=await this.createTask();if(!i)throw Error("该多端应用当周构建次数已用完,本次构建基于本地基座 IOS,仅更新小程序代码");log.info("任务创建成功,任务 ID: "+i);const t=await this.waitForRemoteReady();if(t)if(t.status===TaskStatus.Success)this.buildSuccess=!0,await this.downloadBase(t.task_id,!0);else{if(t.status!==TaskStatus.Fail)throw Error("iOS App 远程云构建超时,请稍候重试");this.buildSuccess=!1,log.info("IPA 构建失败,错误信息:"+t.errmsg),await this.downloadBase(t.task_id,!1)}}async buildResult(){if(!this.buildSuccess){log.info("下载日志成功,保存位置:"+this.output);let{body:i}=await(0,request_1.request)({url:TransformTipsURL,method:"get"});try{i=JSON.parse(i)}catch(i){}const t=null==i?void 0:i.ios,e=(fs.readdirSync(this.logAbPath)||[]).find(i=>i.endsWith(".log"));let s=!1;throw e&&t&&fs.readFileSync(path.join(this.logAbPath,e),{encoding:"utf8"}).split("\n").forEach(i=>{const e=Object.keys(t).find(t=>i.includes(t));e&&(s=!0,log.error(`[${t[e].code}] ${t[e].msg} 原信息:${i}`))}),s?new Error("错误详细日志如上"):new Error("IPA 构建失败,请前往社区反馈 https://developers.weixin.qq.com/community/minihome/mixflow/2889188691586351105")}log.info("IPA 构建成功,保存位置:"+this.output)}async createTask(){const i=this.project.appid,t=await(0,sign_1.getSignature)(this.project.privateKey,i),e=await(0,ciRequest_1.ciCustomRequest)(`${urlConfig.uploadCloudBuildResourcePack}?os_type=${OSType.iOS}&appid=${i}&signature=${encodeURIComponent(t)}&robot=${this.ciOpts.robot}`,this.res,{"content-type":"application/octet-stream"}),s=e.baseresponse||{errcode:-1e4},a=parseInt(s.errcode,10);if(0===a)return e.task_id;if(10002053===a)return"";throw Error("任务创建失败,错误码:"+a)}async waitForRemoteReady(){const i=now();for(;;){const t=await this.getTask();if(!t||t.status===TaskStatus.Success||t.status===TaskStatus.Fail||now()-i>3e5)return t;t.status===TaskStatus.Pending?log.info("检查任务状态,等待中..."):t.status===TaskStatus.Running&&log.info("检查任务状态,构建中..."),await sleep(1e4)}}async getTask(){const i=await this.getTaskList();return find(i,i=>!0===i.is_self)}async getTaskList(){return(await(0,ciRequest_1.ciSimpleRequest)({privateKey:this.project.privateKey,appid:this.project.appid,cgi:`${urlConfig.getCloudBuildTaskList}?os_type=${OSType.iOS}`,robot:this.ciOpts.robot})).list}async downloadBase(i,t){t?log.info("下载远程 IPA,任务 ID:"+i):log.info("下载远程日志文件,任务 ID:"+i);const{pkgUrl:e}=await this.getTaskResultUrl(i);await this.downloadIPA(e,i,t)}downloadIPA(i,t,e){const s=path.resolve(this.iOSDir,t+"/resultZip.zip"),a=path.resolve(this.iOSDir,t+"/result");fs.ensureFileSync(s),fs.ensureDirSync(a);const r=fs.createWriteStream(s,{mode:511});return new Promise((t,o)=>{(0,request_1.simpleRequest)({url:i,method:"get"},i=>{i&&o(i+" at iosCloudBuild download ipa request")}).pipe(r),r.on("error",i=>{o(i+" at iosCloudBuild download ipa deststream")}),r.on("close",async()=>{try{await(0,zip_1.unzip)(s,a)}catch(i){return o(e?"failed process zip file":"build failed! (Cant extract log dir)")}try{const i=fs.readdirSync(a);if(!e){const i=path.join(a,"log");if(fs.existsSync(i)){const e=path.parse(this.output),s=path.posix.join(e.dir,e.name+"_log");return fs.copySync(i,s),this.logAbPath=i,this.output=s,t({})}return o("cant find log dir in result")}{const t=i.find(i=>".ipa"===path.extname(i));if(!t)return o("ipa is not in result");fs.copyFileSync(path.join(a,t),this.output)}}catch(i){return o()}t({})})})}async getTaskResultUrl(i){const t=await(0,ciRequest_1.ciSimpleRequest)({cgi:`${urlConfig.getCloudBuildPkgUrl}?task_id=${i}`,privateKey:this.project.privateKey,appid:this.project.appid,robot:this.ciOpts.robot});return{pkgUrl:t.pkg_url,resUrl:t.resource_url}}async getBundleId(){const i=this.project,t=await i.miniappAttr()||{};return safeGet(t,"mobileapp_info.bundle_id")||"com.tencent.weauth"}getFinalIpaName(i,t){return`${i.replace(/[.*]/g,"")}-${t}.ipa`}}const getIOSCloudBuild=i=>new IOSCloudBuild(i);exports.getIOSCloudBuild=getIOSCloudBuild;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getIOSLocalBuild=void 0;const tslib_1=require("tslib"),getcompiler_1=require("../getcompiler"),archive=tslib_1.__importStar(require("./archive")),log=tslib_1.__importStar(require("../../utils/log")),path=require("path"),fse=require("fs-extra");class IOSLocalBuild{constructor(e){this.iosDir="",this.project=e.project,this.ciOpts=e}async buildArchive(e,i){const t=path.join(e,"MiniApp.bundle/module");fse.existsSync(t)&&fse.removeSync(t);const{version:o,desc:r,miniappPkgType:s,remoteDebugEnable:l,useCloudSync:c}=i;await archive.buildProjectArchive(this.ciOpts,{version:o,desc:r,targetPlatform:"mini-ios",outputDir:t,miniappOptions:{miniappPkgType:s,remoteDebugEnable:l,useCloudSync:c,archVersion:1}})}async build(e,i,t){let o;try{await this.buildArchive(t,e),o=await(0,getcompiler_1.getBuilder)(this.project,{devtoolMessagehub:{showBuildLog:(e,i,t)=>{log.info("miniprogram-ci native compile",i,t)}}});const r=await o.getNativeCompiler();await r.buildIOSIPA(i)}catch(e){throw e}finally{null==o||o.destroy()}}}const getIOSLocalBuild=e=>new IOSLocalBuild(e);exports.getIOSLocalBuild=getIOSLocalBuild;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getIOSTheme=void 0;const Jimp=require("jimp"),fse=require("fs-extra"),path=require("path"),getIOSWaterMarkRGBVal=async(e,t=375,a=812,r=64)=>{if(!fse.existsSync(e))throw new Error(`iOS 启动页 ${e} 不存在`);const i=await Jimp.read(e);i.resize(t,a);const o=Math.floor(t/2),l=a-r,s=i.getPixelColor(o,l);let{r:n,g:p,b:c}=Jimp.intToRGBA(s);const h=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4;n=h(n/255),p=h(p/255),c=h(c/255);const u=.2126*n+.7152*p+.0722*c;return u<=.1?"Light":u>.1&&u<=.16?"LightSpecial":u>.16&&u<.25?"DarkSpecial":"Dark"},getIOSTheme=async(e,t)=>{var a;const r=await e.miniappAttr()||{};let i="Dark";return(null===(a=null==r?void 0:r.cpa_package_info)||void 0===a?void 0:a.enable_remove_watermark)?i="Default":t&&(path.isAbsolute(t)||(t=path.join(null==e?void 0:e.projectPath,t)),i=await getIOSWaterMarkRGBVal(t)),t&&(path.isAbsolute(t)||(t=path.join(null==e?void 0:e.projectPath,t)),i=await getIOSWaterMarkRGBVal(t)),i};exports.getIOSTheme=getIOSTheme;
@@ -0,0 +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 a=[],p=path_1.default.join(this.ciOpts.resourceDir,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios"));fs_extra_1.default.ensureDirSync(p);const l=fs_extra_1.default.readdirSync(p,{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),a.push({plugin_id:e.plugin_id,version:e.user_version})):t.name!==n+e.commit_time&&(this.removePluginDir(i,e.plugin_id),a.push({plugin_id:e.plugin_id,version:e.user_version})):a.push({plugin_id:e.plugin_id,version:e.user_version})}),!a.length)return;log.info("多端插件下载中...");const u=await this.downloadMiniAppPlugin({pluginList:a,osType:i});if(u.baseresponse)throw new Error(`多端插件下载失败,错误代码:${u.baseresponse.errcode}, 错误描述: ${u.baseresponse.errmsg}`);log.info("多端插件下载完成");const d=await(0,unpack_1.default)(u),g=Object.keys(d)[0];await(0,unpack_1.default)(d[Object.keys(d)[0]],path_1.default.join(p,g.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 a=path_1.default.join(this.WeappMiniApp,"miniapp-plugin/"+(i===OS_TYPE_ENUM.ANDROID?"android":"ios"));fs_extra_1.default.ensureDirSync(a);const p=fs_extra_1.default.readdirSync(a,{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(a,i.name),pluginId:i.name.split("-")[0]}));if(s.length!=p.length)throw new Error("多端插件下载列表失败,请重新构建");return p}}const getMiniappPluginManager=i=>new MiniappPluginManager(i);exports.getMiniappPluginManager=getMiniappPluginManager;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateMiniappIOSResources=void 0;const tslib_1=require("tslib"),zip_1=require("../../utils/zip"),request_1=require("../../utils/request"),tools_1=require("../../utils/tools"),log=tslib_1.__importStar(require("../../utils/log")),tools_2=require("../utils/tools"),fse=require("fs-extra"),path=require("path"),CDN_PREFIX="https://dldir1.qq.com/WechatWebDev/";class SDKVersionManager{constructor(e){this.project=e,this.iosBaseDir=(0,tools_2.getMiniappIOSCacheDir)(),this.downloadBigFile=async(e,s)=>{const i=fse.createWriteStream(s,{mode:511});return new Promise((s,o)=>{(0,request_1.simpleRequest)({url:""+e,method:"get"},e=>{e&&o(e)}).pipe(i),i.on("error",e=>{o(e)}),i.on("close",()=>{s({})})})},this.downloadMiniappIOSResources=async(e,s=!1)=>{log.info("Download ios resources...");const i=path.join(this.iosBaseDir,"v2-ipa",e);fse.existsSync(i)||(fse.emptyDirSync(path.dirname(i)),fse.ensureDirSync(i));const o=["x86.zip","arm64.zip",`WeAppSDK-${e}.zip`];s&&(o.push("x86_ipad.zip"),o.push("arm64_ipad.zip"));try{const s=[];o.forEach(o=>{const r=`${CDN_PREFIX}donut/ios/${e}/${o}`,t=path.join(i,o);fse.existsSync(t)||s.push(this.downloadBigFile(r,t))}),await Promise.all(s),log.info("Download ios resources successfully")}catch(e){throw fse.removeSync(i),new Error(`download ios resources resources failed: ${e.message}. Network issue or SDK Version may not suitable for IPad beta`)}return i},this.generateMiniappIOSResources=async(e,s,i=!1,o=!1)=>{try{log.info((i?"is":"not")+" using iPad Beta");const o=await this.downloadMiniappIOSResources(e,i);log.info("Archive ios resources...");let r="";r=i?path.join(o,"arm64"===s?"arm64_ipad.zip":"x86_ipad.zip"):path.join(o,"arm64"===s?"arm64.zip":"x86.zip");const t=path.join(o,`WeAppSDK-${e}.zip`),a=path.join(this.iosBaseDir,"v2-ipa",e,`ipa-${s}${i?"-iPad":""}-${(0,tools_1.generateMD5)(this.project.projectPath)}/Payload`);fse.existsSync(a)||await(0,zip_1.unzip)(r,a);const n=path.join(this.iosBaseDir,"v2-ipa",e,"sdk-"+(0,tools_1.generateMD5)(this.project.projectPath));return fse.existsSync(n)||await(0,zip_1.unzip)(t,n),log.info("Archive ios resources successfully"),{demoIpaPath:path.join(a,"demo.app"),sdkPath:n}}catch(r){const t=path.join(this.iosBaseDir,"v2-ipa",e);if(fse.existsSync(t)&&fse.removeSync(t),o){log.info(`Start retry, Process resources failed: ${r.message}.`);return await this.generateMiniappIOSResources(e,s,i,!1)}throw log.error("Archive ios resources failed, please retry and check whether your network is running smoothly..."),new Error("Download and unzip the ios resources failed: "+r.message)}},this.project=e}}async function generateMiniappIOSResources(e,s,i,o=!1){return await new SDKVersionManager(e).generateMiniappIOSResources(s,i,o,!0)}exports.generateMiniappIOSResources=generateMiniappIOSResources;
@@ -0,0 +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,r,o,t;const s=(0,moment_1.default)(new Date).format("YYYY-MM-DD-HH-mm-ss"),n={gzip:1,cross_platform_app:1,"user-version":encodeURIComponent(e.version||"miniapp-release-d-"+s),"user-desc":encodeURIComponent(e.desc||"miniapp-release-d-"+s),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===(r=e.miniappOptions)||void 0===r?void 0:r.useCloudSync)&&(n.use_cloud_sync=1),(null===(o=e.miniappOptions)||void 0===o?void 0:o.archVersion)&&(n.arch_version=null===(t=e.miniappOptions)||void 0===t?void 0:t.archVersion),n}async function upload(e){const{project:i,setting:r={useProjectConfig:!1},robot:o="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,r),a=(0,tools_1.formatCISetting)(i,r),p=await n.compile({setting:a,onProgressUpdate:s,resultType:"prod"}),u=config_1.CI_VERSION,l=encodeURIComponent(JSON.stringify(getMiniappBuildQuery(e))),c={appid:i.appid,robot:o,miniapparchivequery:l};try{const e=new taskstatus_1.TaskStatus(locales_1.default.config.UPLOAD.toString());s(e);const r=`${url_config_1.miniappUpload}?${querystring_1.default.stringify(c)}`,o=await(0,sign_1.getSignature)(i.privateKey,i.appid);p[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:o,version:u});const t=(0,pack_1.pack)(p),n=zlib_1.default.gzipSync(t.buffer);log.info("request url:",r);const a=(await(0,request_1.request)({url:r,method:"post",body:n})).body.toString(),l=(0,jsonParse_1.jsonRespParse)(a,r);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;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMiniappAttr=void 0;const tslib_1=require("tslib"),request_1=require("../utils/request"),sign_1=require("../utils/sign"),log=tslib_1.__importStar(require("../utils/log")),url_config_1=require("../config/url.config"),jsonParse_1=require("../utils/jsonParse"),testCache={};async function getMiniappAttr(e,t){try{if(global.useAttrCache&&testCache[t])return testCache[t];const r=await(0,sign_1.getSignature)(e,t),{body:i}=await(0,request_1.request)({url:url_config_1.getSdkIntInfo,method:"post",body:JSON.stringify({appid:t,signature:r}),headers:{"content-type":"application/json"}}),s=(0,jsonParse_1.jsonRespParse)(i,url_config_1.getSdkIntInfo);if(0===s.errCode)return global.useAttrCache&&(testCache[t]=s.data),s.data;log.error(`get ${t} project miniapp attr fail errCode: ${s.errCode}, errMsg: ${s.errMsg}`)}catch(e){throw log.error(`get ${t} project miniapp attr fail ${e}`),e}}exports.getMiniappAttr=getMiniappAttr;
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")),url_config_1=require("../config/url.config"),jsonParse_1=require("../utils/jsonParse"),cache_1=require("../utils/cache"),cos_upload_1=require("./cos-upload"),filterUnusedFile_1=require("./utils/filterUnusedFile"),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 t=await innerUpload(e);return(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),{subPackageInfo:t.subPackageInfo,pluginInfo:t.pluginInfo,devPluginId:t.devPluginId}}async function innerUpload(e){const{project:o,setting:t={useProjectConfig:!1},desc:r=`robot ${e.robot||"1"} use miniprogram-ci to upload at ${(0,tools_1.formatTime)(new Date)}`,version:i="",robot:s="1",onProgressUpdate:n=function(e){if("object"==typeof e)try{const o=JSON.stringify(e);return void console.log(o)}catch(e){}console.log(""+e)},test:l,pagePath:a,searchQuery:u,threads:p=0,bigPackageSizeSupport:c,allowIgnoreUnusedFiles:d=!0}=e;let{useCOS:_}=e;if(process.env.COMPILE_THREADS=p.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,t),f=(0,tools_2.formatCISetting)(o,t);let b=await g.compile({setting:f,onProgressUpdate:n,resultType:"prod"});!1!==d&&(b=await(0,filterUnusedFile_1.filterUnusedFile)(!!l,o,b));const y=config_1.CI_VERSION,S={codeprotect:t.codeProtect?1:0,type:o.type,appid:o.appid,version:i,desc:r,robot:s},q={scene:e.scene||1011};let P;a&&(q.path=a,S.path=a),u&&(q.query=querystring_1.default.parse(u)),S.debugLaunchInfo=JSON.stringify(q),a&&u&&(S.path+="?"+u),l&&c&&(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());n(e);const t=`${l?url_config_1.TEST_SOURCE_URL:url_config_1.UPLOAD_URL}?${querystring_1.default.stringify(S)}`;let r,i=!1,a=0;const u=(0,pack_1.pack)(b),p=zlib_1.default.gzipSync(u.buffer);if(log.info("useCOS parameter: ",_),log.info("upload zip buffer size: ",p.length),void 0===_&&(_=p.length>5242880),_){log.info("upload by COS: ",_);const e=await(0,cos_upload_1.uploadByCos)(p,t,o,s);e.fallback?(i=e.fallback,log.info("upload by COS failed, fallback to http way")):(r={body:e.body},a=e.uploadCOSCostTime)}if(!_||i){const e=await(0,sign_1.getSignature)(o.privateKey,o.appid);b[exports.SIGNATURE_FILE_NAME]=JSON.stringify({signature:e,version:y});const i=(0,pack_1.pack)(b),s=zlib_1.default.gzipSync(i.buffer);log.info("request url:",t);const n=(await(0,request_1.request)({url:t,method:"post",body:s})).body.toString();if(r=(0,jsonParse_1.jsonRespParse)(n,t),0!==r.errCode)throw new Error(n)}e.done(),n(e);const c={respBody:r.body};if(Array.isArray(r.body.subpackage_info)){const e=r.body.subpackage_info;c.subPackageInfo=e}if(Array.isArray(r.body.ext_plugin_info)){const e=r.body.ext_plugin_info;c.pluginInfo=e.map(e=>({pluginProviderAppid:e.provider,version:e.version,size:e.size}))}return c}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:_}=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 d=await(0,getcompiler_1.getCompiler)(o,r),g=(0,tools_2.formatCISetting)(o,r),f=await d.compile({setting:g,onProgressUpdate:c,resultType:"prod"}),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: ",_),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.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(!_||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;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ciCustomRequest=exports.ciSimpleRequest=void 0;const request_1=require("../../utils/request"),sign_1=require("../../utils/sign"),jsonParse_1=require("../../utils/jsonParse");async function ciSimpleRequest({privateKey:e,appid:r,cgi:t,robot:s},o={}){let i;try{const a=await(0,sign_1.getSignature)(e,r),{body:n}=await(0,request_1.request)({url:t,method:"post",body:JSON.stringify(Object.assign({appid:r,signature:a,robot:s},o)),headers:{"content-type":"application/json"}});i=(0,jsonParse_1.jsonRespParse)(n,t)}catch(e){throw new Error(`${t} fail ${e}`)}if(0===i.errCode)return i.data;throw new Error(`${t} fail errCode: ${i.errCode}, errMsg: ${i.errMsg}`)}async function ciCustomRequest(e,r,t){const s=await(0,request_1.request)({url:e,method:"post",body:r,headers:t||{"content-type":"application/json"}});let o;try{o=JSON.parse(s.body)}catch(r){throw new Error(`request ${e} failed: resp body is not a valid json`)}if(0!==o.errCode)throw new Error(`request failed, errCode: ${o.errCode}, errMsg: ${o.errMsg}`);return o.data}exports.ciSimpleRequest=ciSimpleRequest,exports.ciCustomRequest=ciCustomRequest;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transProgressUpdate=void 0;const transProgressUpdate=s=>e=>{const r=e.status,t={id:e.id,message:e.message,status:{success:"done",error:"fail",doing:"doing",warn:"warn",info:"info"}[r]||"info"};s(t)};exports.transProgressUpdate=transProgressUpdate;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatCISetting=exports.isUndefined=exports.checkIsUseCompilerPlugins=exports.isGameApp=exports.CompileSettingsKeysInProjectConfig=void 0;const types_1=require("../../types"),projectconfig_1=require("../../modules/corecompiler/original/json/projectconfig");function isGameApp(i){return i.type===types_1.EProjectType.miniGame||i.type===types_1.EProjectType.miniGamePlugin}exports.CompileSettingsKeysInProjectConfig=["es6","es7","enhance","minified","minify","codeProtect","uglifyFileName","postcss","minifyJS","minifyWXML","minifyWXSS","autoPrefixWXSS","disableUseStrict","compileWorklet"],exports.isGameApp=isGameApp;const checkIsUseCompilerPlugins=i=>{var e,n,t;return!isGameApp(i)||(null===(e=i.setting)||void 0===e?void 0:e.condition)||((null===(n=i.setting)||void 0===n?void 0:n.useCompilerPlugins)||[]).length>0||(null===(t=i.setting)||void 0===t?void 0:t.swc)};function isUndefined(i){return void 0===i}function formatCISetting(i,e){var n,t,s,o,d,f,r,l,c;const m=(0,projectconfig_1.getProjectConfigJSON)(i);if(e.useProjectConfig)return Object.assign(Object.assign({},m.setting),{minifyWXSS:!1!==e.minifyWXSS&&(!!e.minify||(isUndefined(e.minifyWXSS)?null===(n=m.setting)||void 0===n?void 0:n.minifyWXSS:!!e.minifyWXSS)),minifyWXML:!1!==e.minifyWXML&&(!!e.minify||(isUndefined(e.minifyWXML)?null===(t=m.setting)||void 0===t?void 0:t.minifyWXML:!!e.minifyWXML)),minified:!1!==e.minifyJS&&(!!e.minify||(isUndefined(e.minifyJS)?null===(s=m.setting)||void 0===s?void 0:s.minified:!!e.minifyJS)),postcss:isUndefined(e.autoPrefixWXSS)?null===(o=m.setting)||void 0===o?void 0:o.postcss:!!e.autoPrefixWXSS,disableUseStrict:isUndefined(e.disableUseStrict)?null===(d=m.setting)||void 0===d?void 0:d.disableUseStrict:!!e.disableUseStrict,compileWorklet:isUndefined(e.compileWorklet)?null===(f=m.setting)||void 0===f?void 0:f.compileWorklet:!!e.compileWorklet,uglifyFileName:isUndefined(e.codeProtect)?null===(r=m.setting)||void 0===r?void 0:r.uglifyFileName:!!e.codeProtect,es6:isUndefined(e.es6)&&isUndefined(e.es7)?null===(l=m.setting)||void 0===l?void 0:l.es6:!!e.es6||!!e.es7,enhance:isUndefined(e.es6)&&isUndefined(e.es7)?null===(c=m.setting)||void 0===c?void 0:c.enhance:!!e.es6||!!e.es7});const p=Object.assign({},m.setting);for(const i in p)exports.CompileSettingsKeysInProjectConfig.indexOf(i)>-1&&delete p[i];return Object.assign(Object.assign({},p),{minifyWXSS:!1!==e.minifyWXSS&&(e.minify||!!e.minifyWXSS),minifyWXML:!1!==e.minifyWXML&&(e.minify||!!e.minifyWXML),minified:!1!==e.minifyJS&&(e.minify||!!e.minifyJS),postcss:!!e.autoPrefixWXSS,disableUseStrict:!!e.disableUseStrict,compileWorklet:!!e.compileWorklet,uglifyFileName:!!e.codeProtect,es6:!!e.es6||!!e.es7,enhance:!!e.es6||!!e.es7})}exports.checkIsUseCompilerPlugins=checkIsUseCompilerPlugins,exports.isUndefined=isUndefined,exports.formatCISetting=formatCISetting;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.clearAndroidCacheDir=exports.clearIOSCacheDir=exports.getMiniappIOSCacheDir=exports.getMiniappCacheDir=exports.formatCISetting=exports.isUndefined=exports.checkIsUseCompilerPlugins=exports.isGameApp=exports.CompileSettingsKeysInProjectConfig=void 0;const types_1=require("../../types"),projectconfig_1=require("../../modules/corecompiler/original/json/projectconfig"),path=require("path"),os=require("os"),fse=require("fs-extra");function isGameApp(i){return i.type===types_1.EProjectType.miniGame||i.type===types_1.EProjectType.miniGamePlugin}exports.CompileSettingsKeysInProjectConfig=["es6","es7","enhance","minified","minify","codeProtect","uglifyFileName","postcss","minifyJS","minifyWXML","minifyWXSS","autoPrefixWXSS","disableUseStrict","compileWorklet"],exports.isGameApp=isGameApp;const checkIsUseCompilerPlugins=i=>{var e,n,t;return!isGameApp(i)||(null===(e=i.setting)||void 0===e?void 0:e.condition)||((null===(n=i.setting)||void 0===n?void 0:n.useCompilerPlugins)||[]).length>0||(null===(t=i.setting)||void 0===t?void 0:t.swc)};function isUndefined(i){return void 0===i}function formatCISetting(i,e){var n,t,s,o,r,c,p,d,a;const f=(0,projectconfig_1.getProjectConfigJSON)(i);if(e.useProjectConfig)return Object.assign(Object.assign({},f.setting),{minifyWXSS:!1!==e.minifyWXSS&&(!!e.minify||(isUndefined(e.minifyWXSS)?null===(n=f.setting)||void 0===n?void 0:n.minifyWXSS:!!e.minifyWXSS)),minifyWXML:!1!==e.minifyWXML&&(!!e.minify||(isUndefined(e.minifyWXML)?null===(t=f.setting)||void 0===t?void 0:t.minifyWXML:!!e.minifyWXML)),minified:!1!==e.minifyJS&&(!!e.minify||(isUndefined(e.minifyJS)?null===(s=f.setting)||void 0===s?void 0:s.minified:!!e.minifyJS)),postcss:isUndefined(e.autoPrefixWXSS)?null===(o=f.setting)||void 0===o?void 0:o.postcss:!!e.autoPrefixWXSS,disableUseStrict:isUndefined(e.disableUseStrict)?null===(r=f.setting)||void 0===r?void 0:r.disableUseStrict:!!e.disableUseStrict,compileWorklet:isUndefined(e.compileWorklet)?null===(c=f.setting)||void 0===c?void 0:c.compileWorklet:!!e.compileWorklet,uglifyFileName:isUndefined(e.codeProtect)?null===(p=f.setting)||void 0===p?void 0:p.uglifyFileName:!!e.codeProtect,es6:isUndefined(e.es6)&&isUndefined(e.es7)?null===(d=f.setting)||void 0===d?void 0:d.es6:!!e.es6||!!e.es7,enhance:isUndefined(e.es6)&&isUndefined(e.es7)?null===(a=f.setting)||void 0===a?void 0:a.enhance:!!e.es6||!!e.es7});const l=Object.assign({},f.setting);for(const i in l)exports.CompileSettingsKeysInProjectConfig.indexOf(i)>-1&&delete l[i];return Object.assign(Object.assign({},l),{minifyWXSS:!1!==e.minifyWXSS&&(e.minify||!!e.minifyWXSS),minifyWXML:!1!==e.minifyWXML&&(e.minify||!!e.minifyWXML),minified:!1!==e.minifyJS&&(e.minify||!!e.minifyJS),postcss:!!e.autoPrefixWXSS,disableUseStrict:!!e.disableUseStrict,compileWorklet:!!e.compileWorklet,uglifyFileName:!!e.codeProtect,es6:!!e.es6||!!e.es7,enhance:!!e.es6||!!e.es7})}function getMiniappCacheDir(){return path.join(os.tmpdir(),"miniapp")}function getMiniappIOSCacheDir(){return path.join(getMiniappCacheDir(),"ios")}function clearIOSCacheDir(){["ios","iOSCloudBuild","miniapp-plugin"].forEach(i=>{const e=path.join(getMiniappCacheDir(),i);fse.existsSync(e)&&fse.removeSync(e)})}function clearAndroidCacheDir(){["android"].forEach(i=>{const e=path.join(getMiniappCacheDir(),i);fse.existsSync(e)&&fse.removeSync(e)})}exports.checkIsUseCompilerPlugins=checkIsUseCompilerPlugins,exports.isUndefined=isUndefined,exports.formatCISetting=formatCISetting,exports.getMiniappCacheDir=getMiniappCacheDir,exports.getMiniappIOSCacheDir=getMiniappIOSCacheDir,exports.clearIOSCacheDir=clearIOSCacheDir,exports.clearAndroidCacheDir=clearAndroidCacheDir;
@@ -0,0 +1 @@
1
+ "use strict";const tslib_1=require("tslib"),version0_1=tslib_1.__importDefault(require("./wxvpkg/unpack/version0")),version10_1=tslib_1.__importDefault(require("./wxvpkg/unpack/version10")),utils_1=require("./wxvpkg/utils"),UNPACK_FUNC={0:version0_1.default,10:version10_1.default},unpack=(e,r)=>{const i=(0,utils_1.getVersion)(e),t=UNPACK_FUNC[i];if(!t)throw new Error("wxvpkg unrecognized version: "+i);return t(e,r)};module.exports=unpack;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConfigV10=exports.ConfigV0=exports.ConfigCommon=void 0,exports.ConfigCommon={SPECIAL_START_BEGIN:0,SPECIAL_START_END:1,VERSION_BEGIN:1,VERSION_END:5,INFO_LENGTH_BEGIN:5,INFO_LENGTH_END:9},exports.ConfigV0=Object.assign(Object.assign({},exports.ConfigCommon),{FILE_LENGTH_BEGIN:9,FILE_LENGTH_END:13,SPECIAL_END_BEGIN:13,SPECIAL_END_END:14,FILE_COUNT_BEGIN:14,FILE_COUNT_END:18,FILF_INFO_BEGIN:18}),exports.ConfigV10=Object.assign(Object.assign({},exports.ConfigCommon),{INDEX_LENGTH_BEGIN:9,INDEX_LENGTH_END:13,FILE_LENGTH_BEGIN:13,FILE_LENGTH_END:17,SPECIAL_END_BEGIN:17,SPECIAL_END_END:18,FILE_COUNT_BEGIN:18,FILE_COUNT_END:22,FILF_INFO_BEGIN:22});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileInfo=exports.getFileCount=exports.getFileContentLength=exports.getFileInfoLength=void 0;const config_1=require("./config"),fs=require("fs"),path=require("path"),mkdir=require("mkdir-p"),{INFO_LENGTH_BEGIN:INFO_LENGTH_BEGIN,INFO_LENGTH_END:INFO_LENGTH_END,FILE_LENGTH_BEGIN:FILE_LENGTH_BEGIN,FILE_LENGTH_END:FILE_LENGTH_END,FILE_COUNT_BEGIN:FILE_COUNT_BEGIN,FILE_COUNT_END:FILE_COUNT_END,FILF_INFO_BEGIN:FILF_INFO_BEGIN}=config_1.ConfigV0;function getFileInfoLength(e){return e.slice(INFO_LENGTH_BEGIN,INFO_LENGTH_END).readInt32BE(0)}function getFileContentLength(e){return e.slice(FILE_LENGTH_BEGIN,FILE_LENGTH_END).readInt32BE(0)}function getFileCount(e){return e.slice(FILE_COUNT_BEGIN,FILE_COUNT_END).readInt32BE(0)}function getFileInfo(e){const t=getFileCount(e),n=[];let o=FILF_INFO_BEGIN;for(let r=0;r<t;r++){const t=e.slice(o,o+4).readInt32BE(0);o+=4;const r=e.slice(o,o+t).toString();o+=t;const E=e.slice(o,o+4).readInt32BE(0);o+=4;const i=e.slice(o,o+4).readInt32BE(0);o+=4,n.push({name:r,offset:E,length:i})}return n}function unpack(e,t){try{const n=getFileInfo(e),o={};for(const r of n){const{name:n,offset:E,length:i}=r;if(o[n]=e.slice(E,E+i),t){const e=path.join(t,n);mkdir.sync(path.dirname(e)),fs.writeFileSync(e,o[n])}}return o}catch(e){throw new Error("unpack wxvpkg catch error "+e)}}exports.getFileInfoLength=getFileInfoLength,exports.getFileContentLength=getFileContentLength,exports.getFileCount=getFileCount,exports.getFileInfo=getFileInfo,exports.default=unpack;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileInfo=exports.getFileCount=exports.getFileContentLength=exports.getFileIndexLength=exports.getFileInfoLength=void 0;const config_1=require("./config"),fs=require("fs"),path=require("path"),mkdir=require("mkdir-p"),{INFO_LENGTH_BEGIN:INFO_LENGTH_BEGIN,INFO_LENGTH_END:INFO_LENGTH_END,INDEX_LENGTH_BEGIN:INDEX_LENGTH_BEGIN,INDEX_LENGTH_END:INDEX_LENGTH_END,FILE_LENGTH_BEGIN:FILE_LENGTH_BEGIN,FILE_LENGTH_END:FILE_LENGTH_END,FILE_COUNT_BEGIN:FILE_COUNT_BEGIN,FILE_COUNT_END:FILE_COUNT_END,FILF_INFO_BEGIN:FILF_INFO_BEGIN}=config_1.ConfigV10;function getFileInfoLength(e){return e.slice(INFO_LENGTH_BEGIN,INFO_LENGTH_END).readInt32BE(0)}function getFileIndexLength(e){return e.slice(INDEX_LENGTH_BEGIN,INDEX_LENGTH_END).readInt32BE(0)}function getFileContentLength(e){return e.slice(FILE_LENGTH_BEGIN,FILE_LENGTH_END).readInt32BE(0)}function getFileCount(e){return e.slice(FILE_COUNT_BEGIN,FILE_COUNT_END).readInt32BE(0)}function getFileInfo(e){const t=getFileCount(e),n=[];let E=FILF_INFO_BEGIN;for(let o=0;o<t;o++){const t=e.slice(E,E+4).readInt32BE(0);E+=4;const o=e.slice(E,E+t).toString();E+=t;const I=e.slice(E,E+1).readIntBE(0,1,!1);E+=1;const N=e.slice(E,E+2).readIntBE(0,2,!1);E+=2;const i=e.slice(E,E+4).readInt32BE(0);E+=4;const r=e.slice(E,E+4).readInt32BE(0);E+=4,n.push({name:o,encType:I,mode:N,offset:i,length:r})}return n}function unpack(e,t){try{const n=getFileInfo(e),E={},o=18+getFileInfoLength(e)+getFileIndexLength(e);for(const I of n){const{name:n,offset:N,length:i,mode:r}=I;if(E[n]=e.slice(N+o,N+o+i),t){const e=path.join(t,n);mkdir.sync(path.dirname(e)),fs.writeFileSync(e,E[n],{mode:r.toString(8)})}}return E}catch(e){throw new Error("unpack wxvpkg catch error "+e)}}exports.getFileInfoLength=getFileInfoLength,exports.getFileIndexLength=getFileIndexLength,exports.getFileContentLength=getFileContentLength,exports.getFileCount=getFileCount,exports.getFileInfo=getFileInfo,exports.default=unpack;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getVersionByFD=exports.getVersion=void 0;const fs=require("fs"),VERSION_BEGIN=1,VERSION_END=5,getVersion=e=>{let r=e.slice(1,5).readInt32BE(0);if(1===r){const t=e.slice(13,14);14!==t[0]&&237!==t[0]||(r=0)}return r};exports.getVersion=getVersion;const getVersionByFD=e=>{const r=Buffer.alloc(4);fs.readSync(e,r,0,4,1);let t=r.readInt32BE(0);if(1===t){const r=Buffer.alloc(1);fs.readSync(e,r,0,1,13),14!==r[0]&&237!==r[0]||(t=0)}return t};exports.getVersionByFD=getVersionByFD;