@taobao-minigame/cli 0.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/demo.tar +0 -0
- package/lib/bin.js +2 -0
- package/lib/commander/app/index.js +1 -0
- package/lib/commander/config.js +1 -0
- package/lib/commander/index.js +1 -0
- package/lib/commander/login.js +1 -0
- package/lib/commander/preview/index.js +1 -0
- package/lib/commander/preview/miniapp_preview.js +1 -0
- package/lib/commander/preview/minigame_preview.js +1 -0
- package/lib/commander/preview/standard_preview.js +1 -0
- package/lib/commander/preview/webapp_preview.js +1 -0
- package/lib/commander/preview/widget_preview.js +1 -0
- package/lib/commander/upload/index.js +1 -0
- package/lib/commander/upload/miniapp_upload.js +1 -0
- package/lib/commander/upload/minigame_upload.js +1 -0
- package/lib/commander/upload/standard_upload.js +1 -0
- package/lib/commander/upload/webapp_upload.js +1 -0
- package/lib/commander/upload/widget_upload.js +1 -0
- package/lib/constants.js +1 -0
- package/lib/core/config.js +1 -0
- package/lib/core/index.js +1 -0
- package/lib/core/pipeline.js +1 -0
- package/lib/core/provider.js +1 -0
- package/lib/core/requst.js +1 -0
- package/lib/core/user.js +1 -0
- package/lib/global.js +1 -0
- package/lib/index.js +1 -0
- package/lib/pipelines/checkVersion.js +1 -0
- package/lib/pipelines/collect.js +1 -0
- package/lib/pipelines/index.js +1 -0
- package/lib/pipelines/registerCommand.js +1 -0
- package/lib/pipelines/remoteConfig.js +1 -0
- package/lib/pipelines/tips.js +1 -0
- package/lib/process/state.js +1 -0
- package/lib/sdk.js +1 -0
- package/lib/types/index.js +1 -0
- package/lib/utils/api.js +1 -0
- package/lib/utils/apis/index.js +1 -0
- package/lib/utils/apis/miniapp_api.js +1 -0
- package/lib/utils/apis/minigame_api.js +1 -0
- package/lib/utils/apis/standard_api.js +1 -0
- package/lib/utils/apis/webapp_api.js +0 -0
- package/lib/utils/apis/widget_api.js +0 -0
- package/lib/utils/cliProgress.js +1 -0
- package/lib/utils/common.js +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/logger.js +1 -0
- package/lib/utils/project.js +1 -0
- package/lib/utils/projects/index.js +1 -0
- package/lib/utils/projects/miniapp/MiniApp.js +1 -0
- package/lib/utils/projects/minigame/MemorySourcePackager.js +1 -0
- package/lib/utils/projects/minigame/buildCache.js +1 -0
- package/lib/utils/projects/minigame/builderFs.js +1 -0
- package/lib/utils/projects/minigame/devTools.js +1 -0
- package/lib/utils/projects/minigame/devToolsWaiter.js +1 -0
- package/lib/utils/projects/minigame/openDevtools.js +1 -0
- package/lib/utils/projects/minigame/pack.js +1 -0
- package/lib/utils/projects/minigame/qrCodeDecorator.js +1 -0
- package/lib/utils/projects/minigame/renderMode.js +1 -0
- package/lib/utils/projects/standard/getProject.js +1 -0
- package/lib/utils/projects/standard/getProjectSize.js +1 -0
- package/lib/utils/projects/standard/index.js +1 -0
- package/lib/utils/projects/standard/loadFileConfig.js +1 -0
- package/lib/utils/projects/standard/zipBuilder.js +1 -0
- package/lib/utils/store.js +1 -0
- package/package.json +54 -0
- package/resources/client.tar +0 -0
- package/resources/plugin.tar +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# @taobao-minigame/cli
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install my-project with npm
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install my-project
|
|
11
|
+
cd my-project
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Environment Variables
|
|
15
|
+
|
|
16
|
+
To run this project, you will need to add the following environment variables to your .env file
|
|
17
|
+
|
|
18
|
+
`API_KEY`
|
|
19
|
+
|
|
20
|
+
`ANOTHER_API_KEY`
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Documentation
|
|
24
|
+
|
|
25
|
+
[Documentation](https://<your documentation link>)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Authors
|
|
29
|
+
|
|
30
|
+
- [@<you>](<how ot contact you>)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Contributing
|
|
34
|
+
|
|
35
|
+
Contributions are always welcome!
|
|
36
|
+
|
|
37
|
+
See `contributing.md` for ways to get started.
|
|
38
|
+
|
|
39
|
+
Please adhere to this project's `code of conduct`.
|
package/demo.tar
ADDED
|
Binary file
|
package/lib/bin.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__importDefault(require("path"));global.IS_CLI=!0,global.WEBPACK_MODE=!0,global.demoTarPath=path_1.default.join(__dirname,"..","demo.tar"),require("./index");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_app=commander_app;const commander_1=__importDefault(require("commander")),utils_1=require("../../utils"),apis_1=require("../../utils/apis"),logger=(0,utils_1.getLogger)("app");function commander_app(){try{commander_1.default.command("app").description("获取开放平台的应用的基础信息").option("-a, --appId <appId>","指定应用appId").allowUnknownOption().action((0,apis_1.withCmdTrack)("app",async e=>{const{appId:p}=e;if((0,utils_1.goldlog)("app"),p){if(p){const e=await(0,apis_1.getAppInfo)(p);logger.debug("appInfo",e),logger.success(`当前应用名称: ${e?.name} 最新线上版本: ${e?.latestVersion}`)}}else logger.error("当前路径没有绑定 appId ,可以通过 --appId 指定")}))}catch(e){logger.error(e)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_config=commander_config;const commander_1=__importDefault(require("commander")),core_1=require("../core"),utils_1=require("../utils"),apis_1=require("../utils/apis"),constants_1=require("../constants"),logger=(0,utils_1.getLogger)("commander_config");function commander_config(){commander_1.default.command("config <options...>").description("设置当前工具的配置").usage(`\n 设置值${constants_1.CLI_COMMAND_NAME} config set [key] [value] e.g. ${constants_1.CLI_COMMAND_NAME} config set key1 value1\n 获取值${constants_1.CLI_COMMAND_NAME} config get [key] e.g. ${constants_1.CLI_COMMAND_NAME} config get key1\n 显示所有值 ${constants_1.CLI_COMMAND_NAME} config show\n `).allowUnknownOption().action((0,apis_1.withCmdTrack)("config",async e=>{if((0,utils_1.goldlog)("config"),Array.isArray(e)&&e.length){const o=e[0],n=(0,core_1.getProvider)().getCliConfig();if("set"===o&&3===e.length){const o=e[1],t=e[2];if(o===constants_1.StoreKey.ENV){const e=Object.keys(constants_1.ENV_HOST);if(!e.includes(t))return void logger.error(`无效的环境值 "${t}",仅支持: ${e.join(" / ")}`)}return n.set(o,t),void logger.success("设置成功")}if("get"===o&&2===e.length){const o=e[1];return void logger.info(`${o}的值为: ${n.get(o)}`)}if("show"===o&&1===e.length)return void n.showConfig();logger.error("请按照规定传入指定命令")}else logger.error("请按照规定传入指定命令")}))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&!("get"in i?!r.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./preview"),exports),__exportStar(require("./config"),exports),__exportStar(require("./upload"),exports),__exportStar(require("./login"),exports),__exportStar(require("./app"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_login=commander_login;const commander_1=__importDefault(require("commander")),constants_1=require("../constants"),core_1=require("../core"),utils_1=require("../utils"),apis_1=require("../utils/apis"),logger=(0,utils_1.getLogger)("login");function commander_login(){commander_1.default.command("login").description("获取淘宝登录态").allowUnknownOption().action((0,apis_1.withCmdTrack)("login",async()=>{(0,utils_1.goldlog)("login");const e=(0,core_1.getProvider)().getCliConfig(),o=e.get(constants_1.StoreKey.PUPPETEER_PATH),t=await(0,utils_1.loginForToken)(o),n=await(0,utils_1.tbTokenToIdeToken)(e.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV),t.token);e.set("token",n),e.set("nick",t.nick),logger.success("登录成功")}))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_buildPreview=commander_buildPreview;const commander_1=__importDefault(require("commander")),cli_table3_1=__importDefault(require("cli-table3")),chalk_1=__importDefault(require("chalk")),core_1=require("../../core"),utils_1=require("../../utils"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),constants_1=require("../../constants"),miniapp_preview_1=require("./miniapp_preview"),minigame_preview_1=require("./minigame_preview"),widget_preview_1=require("./widget_preview"),standard_preview_1=require("./standard_preview"),webapp_preview_1=require("./webapp_preview"),logger=(0,utils_1.getLogger)("preview");function commander_buildPreview(e=!1){commander_1.default.command("preview").description("生成预览链接/二维码").option("-i, --input <input>","应用根目录 mini.project.json或者app.json/package.json的根目录",process.cwd()).option("-a, --appId <appId>","指定应用appId").option("-t, --type <open_type>",`指定应用类型 ${JSON.stringify(constants_1.SCENE_PLUGIN_SUITE)}`).option("-d, --debug","是否开启真机调试",!1).option("-c, --cloud","是否开启云构建",!1).option("--pagePath <pagePath>","指定访问首页").option("--pageQuery <pageQuery>",'页面参数,e.g. "a=1&b=2"').option("--query <query>","全局query").option("--copy","复制预览码到剪贴板",!1).option("--renderMode <mode>","小游戏渲染模式: highPerformance | normal(默认 highPerformance,显式 normal 关闭)").option("--noBuild","跳过云构建,使用本地缓存的上一次构建结果生成二维码(无缓存时报错)",!1).option("--autoOpenDevtools","拿到 DevTools 地址后自动用本地 Chrome 打开(路径取 PUPPETEER_PATH,无则使用系统默认 Chrome)",!1).allowUnknownOption().action((0,apis_1.withCmdTrack)("preview",async e=>{const t=(0,core_1.getProvider)().getProcessState();t.setState(state_1.EProcessStateName.PARSE_ARV,e);const{appId:a,type:_}=t.getState(state_1.EProcessStateName.PARSE_ARV);if(a){if(!_||!Object.values(constants_1.SCENE_PLUGIN_SUITE).includes(_)){const e=new cli_table3_1.default({head:[chalk_1.default.magenta("应用类型"),chalk_1.default.red("对应指定的type")],style:{"padding-left":1,"padding-right":1},colWidths:[20,20]});return e.push([chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.miniapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小程序)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.widget),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小部件)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.minigame),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小游戏)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.standardizedApp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.标准化应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.isvCMS),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.商家后台应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.webapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.配置应用)]),console.log(e.toString()),void logger.error("当前路径未指定正确的应用类型 ,可以通过 --type 指定")}switch((0,utils_1.goldlog)("preview",_),_){case constants_1.SCENE_PLUGIN_SUITE.小程序:await(0,miniapp_preview_1.miniapp_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小部件:await(0,widget_preview_1.widget_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小游戏:await(0,minigame_preview_1.minigame_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.标准化应用:case constants_1.SCENE_PLUGIN_SUITE.商家后台应用:await(0,standard_preview_1.standard_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.配置应用:await(0,webapp_preview_1.webapp_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV))}}else logger.error("当前路径没有绑定 appId,可以通过 --appId 指定")},e=>e[0]?.type))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var i=Object.getOwnPropertyDescriptor(t,a);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,i)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var a={};if(null!=t)for(var r=e(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(a,t,r[i]);return __setModuleDefault(a,t),a}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_preview=void 0;const minidev_1=__importStar(require("minidev")),query_string_1=__importDefault(require("query-string")),fs_extra_1=__importDefault(require("fs-extra")),path_1=__importDefault(require("path")),utils_1=require("../../utils"),core_1=require("../../core"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),utils_2=require("../../utils");var MINIAPP_BIZTYPE;async function createDebugParams(e){const t=e.getState(state_1.EProcessStateName.PARSE_ARV),{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s}=await(0,apis_1.fetchDebugParams)(t);e.setState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT,{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s})}function do_tyro_inject(e,t){const{appId:a}=e;let{tyroId:r,channelId:i}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT);if(!r||!i)throw logger.error("调试 id 获取出错"),new Error("调试 id 获取出错");const s=JSON.parse(e.extraInfo);return logger.info("开始生成远程调试码"),s.uuid=r,s.channelId=i,s.isRemoteX=!0,s.appId=a,s.scene="DEBUG",s.syncToOffline=!1,e.extraInfo=JSON.stringify(s),e}async function generatePushParams(e,t,a,r){const i=fs_extra_1.default.readJsonSync(path_1.default.join(a,"mini.built.json")),{packageInfo:s}=i,{mainUrl:n,extendInfo:o,extraInfo:u,subUrl:l}=s;let c="";e.isPlugin||(c=await(0,utils_1.uploadFileToOSS)(t.tarFilePath));let p,_,g="";e.isPlugin&&(g=await(0,utils_1.uploadFileToOSS)(t.plugin.tarFilePath),c=await(0,utils_1.uploadFileToOSS)(t.client.tarFilePath)),e.appxNg&&(_=c,p=g);const d=i.appId,P=(i.packageInfo.pluginList||[]).map(e=>({pluginId:e.pluginId||e.provider,pluginVersion:e.version})),I=JSON.parse(o),{launchParams:m}=I,S={...m,...r,ignoreHttpReqPermission:!0,appxRouteFramework:e.appxNg?"independent":"NO"};return{appId:d,mainUrl:n,clientType:"taobao",extendInfo:JSON.stringify({...I,launchParams:S}),idePreviewType:"muti",openDebugSwitch:'{"enableBugme":true}',extraInfo:u,pluginOssKey:g,debugType:"MINI",subUrl:l,pluginList:P,ossKey:c,appType:"tinyApp",channelId:r.channelId,packageName:"dist.tar",newOssKey:_,newPluginOssKey:p}}async function generateLocalPreviewSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{channelId:i,tyroId:s,remoteDebugUUID:n}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT),o=await generatePushParams(e.getLocalMiniAppInfo(),a,r,{channelId:i,tyroId:s,remoteDebugUUID:n});logger.debug("localPreviewSubmitParams",o),t.setState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS,o)}async function generatePreviewCloudSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{appId:i,input:s,debug:n,cloud:o}=t.getState(state_1.EProcessStateName.PARSE_ARV);logger.debug("buildResult",a);const u=await(0,utils_1.getMiniAppBuildParams)(s,i),l=e.getLocalMiniAppInfo(),{isPlugin:c,appxNg:p}=l,_=fs_extra_1.default.readJsonSync(path_1.default.join(r,"mini.built.json")),{packageInfo:g}=_,{mainUrl:d,subUrl:P}=g,{zipFile:I}=await runSourcePack(e);let m={appId:i,extendInfo:u.extendInfo,extraInfo:u.extraInfo,isPlugin:c,appx2:p,filepath:I};n&&(m=do_tyro_inject(m,t)),logger.debug("params",m),logger.debug("buildParams",u);const{taskId:S}=await(0,apis_1.doCloudBuild)(m),{pkgUrl:f,pluginUrl:E,subPackages:b,newPkgUrl:y,newPluginUrl:N}=await(0,apis_1.getCloudBuildResult)(S),w={appId:i,pkgUrl:f,pluginUrl:E,newPkgUrl:y,newPluginUrl:N,mainUrl:d,extendInfo:m.extendInfo,pluginList:u?.pluginList,subPackages:b?.map(e=>({type:e.type,path:e.path,buildPackageUrl:e.tarFilePath}))};logger.debug("cloudBuiltPackageParams",w),t.setState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS,w)}async function pushPreview(e){const t=e.getState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS),{appId:a,cloud:r}=e.getState(state_1.EProcessStateName.PARSE_ARV),{deployVersion:i}=r?await(0,apis_1.pushCloudPreview)(t):await(0,apis_1.pushLocalPreview)(t),s=await(0,apis_1.getPreviewInfo)({appId:a,deployVersion:i});e.setState(state_1.EProcessStateName.PUSH_PREVIEW_RESULT,{qrCode:s.qrCode,deployVersion:i})}function generatePreviewUrl(e){const t=e.getProcessState(),{qrCode:a}=t.getState(state_1.EProcessStateName.PUSH_PREVIEW_RESULT),{debug:r,cloud:i,pagePath:s,pageQuery:n,query:o}=t.getState(state_1.EProcessStateName.PARSE_ARV),{tyroId:u,channelId:l,remoteDebugUUID:c,devtoolUrl:p}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT);let _={};s&&(_={..._,page:`${s}${n?`?${n}`:""}`}),o&&(_={..._,query:o}),i&&r?_={..._,tyroId:u,channelId:l,isRemoteX:!0}:r&&(_={..._,channelId:c});const g=`${a}&${query_string_1.default.stringify(_)}`;logger.debug(`qrCode:${a} qrCodeParams:${query_string_1.default.stringify(_)}`),r&&logger.info("在线调试面板:",p),t.setState(state_1.EProcessStateName.GENERATE_PREVIEW_URL,{qrCodeUrl:g})}!function(e){e[e.TAOJIMU=14]="TAOJIMU"}(MINIAPP_BIZTYPE||(MINIAPP_BIZTYPE={}));const runSourcePack=async e=>{const t=e.getProcessState(),{input:a}=t.getState(state_1.EProcessStateName.PARSE_ARV);return await minidev_1.default.pack({project:a})},runLocalBuild=async e=>{const t=e.getProcessState(),{appId:a,input:r,debug:i}=t.getState(state_1.EProcessStateName.PARSE_ARV),s=(0,utils_2.getTmpDir)(),n=await minidev_1.default.build({project:r,output:s,appId:a,buildTarget:i?minidev_1.EBuildTarget.RemoteBoatman:minidev_1.EBuildTarget.Preview});return t.setState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD,{output:s,buildResult:n.result}),n.result},logger=(0,utils_1.getLogger)("miniapp_preview"),miniapp_preview=async e=>{try{const{appId:t,input:a,debug:r,cloud:i,copy:s}=e;if(!1===(0,utils_1.validateProject)(a))return void logger.error("不是合规的小程序项目目录,请检查");const n=(0,core_1.getProvider)(),o=n.getProcessState();o.setState(state_1.EProcessStateName.PARSE_ARV,e),await runLocalBuild(n),r&&await createDebugParams(o),logger.success("本地构建产物包成功,开始推送"),i?await generatePreviewCloudSubmitParams(n):await generateLocalPreviewSubmitParams(n),await pushPreview(o),generatePreviewUrl(n);const{qrCodeUrl:u}=o.getState(state_1.EProcessStateName.GENERATE_PREVIEW_URL);logger.success("小程序二维码地址:",u),s&&((0,utils_1.clipText)(u),logger.success("已复制二维码到剪切板")),(0,utils_1.showQrCode)(u)}catch(e){logger.error(e)}};exports.miniapp_preview=miniapp_preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_preview=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),qrCodeDecorator_1=require("../../utils/projects/minigame/qrCodeDecorator"),devToolsWaiter_1=require("../../utils/projects/minigame/devToolsWaiter"),minigame_api_1=require("../../utils/apis/minigame_api"),buildCache_1=require("../../utils/projects/minigame/buildCache"),openDevtools_1=require("../../utils/projects/minigame/openDevtools");require("colors");const logger=(0,utils_1.getLogger)("minigame_preview"),getAppInfo=async e=>{const o=(0,provider_1.getProvider)().getRequest();return await o.post("ide/api/appInfo",{appId:e})},minigame_preview=async e=>{const{appId:o,input:t,debug:n,cloud:s,copy:i,renderMode:r,noBuild:a,autoOpenDevtools:l}=e,g=!!n,_=g?constants_1.DEBUG_LOG:constants_1.PREVIEW_LOG,c=g?"调试":"预览";(0,utils_1.goldlog)(_.START,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),logger.debug("入参",e);const d=(0,provider_1.getProvider)(),u=d.getProcessState(),p=d.getCliConfig(),E=p.get(constants_1.StoreKey.TB_TOKEN),m=p.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV),I=m===constants_1.EEnv.DAILY?constants_1.EEnv.DAILY:m===constants_1.EEnv.PREPUB||"pre"===m?constants_1.EEnv.PREPUB:constants_1.EEnv.PROD;try{if(!E)throw new Error(`无账号信息,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 登录`);if(a)return await runNoBuild({isDebug:g,appId:o,env:m,input:t,token:E,copy:i,action:c,sdkEnv:I,autoOpenDevtools:l,puppeteerPath:p.get(constants_1.StoreKey.PUPPETEER_PATH)}),void(0,utils_1.goldlog)(_.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await getAppInfo(o);logger.debug("appInfo",e);const{latestVersion:n,relateGamePluginId:d}=e,P=g?state_1.EProcessStateName.MINIGAME_DO_DEBUG:state_1.EProcessStateName.MINIGAME_DO_PREVIEW;u.setState(P,{latestVersion:n,cloud:s,input:t});const C=await(0,utils_1.getMiniGameInfo)(t);logger.debug("gameInfo",C);const w=await(0,renderMode_1.setHighPerformanceMode)({appId:o,gameRoot:t,env:I,userSelectRenderMode:r});if(logger.debug("highPerformanceMode",w),g&&!w)throw new Error("普通模式暂不支持生成调试二维码,请在 game.json 中开启高性能模式(highPerformanceMode: true)后重试");let U;if(C.plugins){if(!d)throw(0,utils_1.goldlog)(_.USE_GAME_PLUGIN_ERROR,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),new Error("检测到项目引入了游戏引擎插件,目前小游戏不支持,请关闭。(Cocos关闭引擎分离,Laya关闭启用插件)");{(0,utils_1.goldlog)(_.PLUGIN_PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!0,isUpload:!1});(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.PLUGIN_DEBUG:constants_1.PREVIEW_LOG.PLUGIN_PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const o={appId:d,gameAmrPath:e.amrPath,pluginList:[],isPlugin:!0,input:t,highPerformanceMode:w},{deployVersion:n}=g?await(0,minigame_api_1.debugCloud)(o):await(0,minigame_api_1.previewCloud)(o);U=n,(0,utils_1.goldlog)(_.PLUGIN_FINISH,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}}(0,utils_1.goldlog)(_.PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const v=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!1,pluginVersion:U,isUpload:!1});logger.success("runPack succeed".bgGreen,v),(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.DEBUG:constants_1.PREVIEW_LOG.PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const S={appId:o,gameAmrPath:v.amrPath,pluginList:v.pluginList,input:t,highPerformanceMode:w};if(g){const{qrCode:e,tyroId:n,channelId:s,deployVersion:r,debuggerUrl:a}=await(0,minigame_api_1.debugCloud)(S);(0,buildCache_1.writeDebugCache)(o,m,{qrCodeRaw:e,deployVersion:r,ts:Date.now()});const g=await(0,qrCodeDecorator_1.attachThemisWebDebugParams)(e,s,t,I,E);u.setState(state_1.EProcessStateName.MINIGAME_DEBUG_RESULT,{qrCode:g,tyroId:n,channelId:s,deployVersion:r,debuggerUrl:a}),logger.success(`${c}二维码地址:`,g),logger.debug(`tyroId: ${n}`),logger.debug(`channelId: ${s}`),a&&logger.info(`debuggerUrl: ${a}`),i&&((0,utils_1.clipText)(g),logger.info("已复制调试码到剪贴板")),(0,utils_1.showQrCode)(g),logger.info("请用手机淘宝扫描上方二维码(Ctrl+C 退出)".yellow.bold);const _=await(0,devToolsWaiter_1.waitDevToolsUrl)({userToken:E,channelId:s,input:t,env:I});logger.success("DevTools 地址:",_),l&&(0,openDevtools_1.openDevtoolsInBrowser)(_,p.get(constants_1.StoreKey.PUPPETEER_PATH))}else{const{qrCode:e,deployVersion:t}=await(0,minigame_api_1.previewCloud)(S);(0,buildCache_1.writePreviewCache)(o,m,{qrCode:e,deployVersion:t,ts:Date.now()}),u.setState(state_1.EProcessStateName.MINIGAME_PREVIEW_RESULT,{qrCode:e,deployVersion:t}),logger.success(`${c}二维码地址:`,e),i&&((0,utils_1.clipText)(e),logger.info("已复制预览码到剪贴板")),(0,utils_1.showQrCode)(e)}(0,utils_1.goldlog)(_.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}catch(e){logger.error(`${c} 命令执行失败`,e),(0,utils_1.goldlog)(_.FAIL,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}};async function runNoBuild(e){const{isDebug:o,appId:t,env:n,input:s,token:i,copy:r,action:a,sdkEnv:l,autoOpenDevtools:g,puppeteerPath:_}=e;if(o){const e=(0,buildCache_1.readDebugCache)(t,n);if(!e)throw new Error("暂无包体缓存,需要重新构建(去掉 --noBuild 重跑一次完整调试构建)");logger.info(`使用 ${new Date(e.ts).toLocaleString()} 的调试缓存(deployVersion=${e.deployVersion})`);const o=(0,minigame_api_1.genHex16)(),c=(0,minigame_api_1.genHex16)(),d=await(0,qrCodeDecorator_1.attachThemisWebDebugParams)(e.qrCodeRaw,c,s,l,i);logger.success(`${a}二维码地址:`,d),logger.debug(`tyroId: ${o}`),logger.debug(`channelId: ${c}`),r&&((0,utils_1.clipText)(d),logger.info("已复制调试码到剪贴板")),(0,utils_1.showQrCode)(d),logger.info("请用手机淘宝扫描上方二维码(Ctrl+C 退出)".yellow.bold);const u=await(0,devToolsWaiter_1.waitDevToolsUrl)({userToken:i,channelId:c,input:s,env:l});logger.success("DevTools 地址:",u),g&&(0,openDevtools_1.openDevtoolsInBrowser)(u,_)}else{const e=(0,buildCache_1.readPreviewCache)(t,n);if(!e)throw new Error("暂无包体缓存,需要重新构建(去掉 --noBuild 重跑一次完整预览构建)");logger.info(`使用 ${new Date(e.ts).toLocaleString()} 的预览缓存(deployVersion=${e.deployVersion})`),logger.success(`${a}二维码地址:`,e.qrCode),r&&((0,utils_1.clipText)(e.qrCode),logger.info("已复制预览码到剪贴板")),(0,utils_1.showQrCode)(e.qrCode)}}exports.minigame_preview=minigame_preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.standard_preview=void 0;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),utils_1=require("../../utils"),constants_1=require("../../constants"),getProject_1=require("../../utils/projects/standard/getProject"),zipBuilder_1=require("../../utils/projects/standard/zipBuilder");async function getStandardAppBuildTaskId(e){const{appId:t,webAppOssKey:a}=e,i={appId:t,webAppOssKey:a},{taskId:s}=await(0,utils_1.doStandardizedAppBuild)(i);return s}async function do_preview_with_local_build(e){const{appId:t,appJson:a,webAppOssKey:i="",ossKey:s,isWebApp:p=!0,standardizedBuildUrl:r=null,webAppNewAppConfigJSON:d=null,subPackagesConfig:o}=e,l={appId:t,ossKey:s,isWebApp:p,webAppBuildedUrl:r,webAppOssKey:i,webAppConfig:a,subPackages:o,multiSectionAppConfig:d,multiSectionApp:!!d},{deployVersion:u}=await(0,utils_1.pushLocalPreview)(l);return await(0,utils_1.getPreviewInfo)({deployVersion:u,appId:t,webAppBuildedUrl:r})}const logger=(0,utils_1.getLogger)("standard_preview"),standard_preview=async e=>{try{const t=global.demoTarPath;if(!fs_extra_1.default.existsSync(t))return void logger.error("cli 工具 npm 包中的 demo.tar 文件缺失,无法完成后续流程");const{appId:a,input:i,debug:s,type:p,cloud:r,copy:d}=e,o=(0,getProject_1.getBuildProjectPath)(i),l=fs_extra_1.default.realpathSync(path_1.default.join((0,utils_1.getTmpDir)())),u=await fs_extra_1.default.readJson(`${o}/app.json`),n=await(0,utils_1.getAppInfo)(a),_=[".git",".tea",".svn",".vscode"];s&&logger.warn(`${constants_1.SCENE_PLUGIN_TYPE[p]} 在当前环境无真机调试,将跳过此配置`),logger.warn(`${constants_1.SCENE_PLUGIN_TYPE[p]} 在当前环境无本地预览,将默认启用云构建生成预览链接\n`);const c=await(0,zipBuilder_1.doBuildZip)({projectPath:o,bstandardizeBuildType:n?.bstandardizeBuildType,ignoreList:_,buildDistPath:l,logger:logger}),g=await(0,utils_1.uploadFileToOSS)(t),w=await(0,utils_1.uploadFileToOSS)(c),f={filepath:c,appId:a,demoFilePath:t,webAppOssKey:w},b=await getStandardAppBuildTaskId(f),y=await(0,utils_1.get_standardizedApp_cloud_build_info)({taskId:b,logger:logger,...f}),{qrCode:A}=await do_preview_with_local_build({isWebApp:!0,appId:a,appJson:u,webAppOssKey:w,ossKey:g,...y});logger.success("预览地址: ",A),d&&((0,utils_1.clipText)(A),logger.success("已复制预览地址到剪切板"))}catch(e){logger.error(e)}};exports.standard_preview=standard_preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.webapp_preview=void 0;const utils_1=require("../../utils"),logger=(0,utils_1.getLogger)("webapp_preview"),webapp_preview=e=>{logger.warn("暂未实现,敬请期待")};exports.webapp_preview=webapp_preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.widget_preview=void 0;const utils_1=require("../../utils"),logger=(0,utils_1.getLogger)("widget_preview"),widget_preview=e=>{logger.warn("暂未实现,敬请期待")};exports.widget_preview=widget_preview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_upload=commander_upload;const commander_1=__importDefault(require("commander")),cli_table3_1=__importDefault(require("cli-table3")),chalk_1=__importDefault(require("chalk")),utils_1=require("../..//utils"),apis_1=require("../../utils/apis"),constants_1=require("../../constants"),core_1=require("../../core"),state_1=require("../../process/state"),miniapp_upload_1=require("./miniapp_upload"),widget_upload_1=require("./widget_upload"),minigame_upload_1=require("./minigame_upload"),standard_upload_1=require("./standard_upload"),webapp_upload_1=require("./webapp_upload"),logger=(0,utils_1.getLogger)("[upload]");function commander_upload(e=!1){commander_1.default.command("upload").description("上传发布应用").option("-i, --input <input>","应用根目录 mini.project.json或者app.json/package.json的根目录",process.cwd()).option("-a, --appId <appId>","指定应用 appId").option("-t, --type <open_type>",`指定应用类型: ${JSON.stringify(constants_1.SCENE_PLUGIN_SUITE)}`).option("-v, --version <version>","指定应用上传版本").option("--renderMode <mode>","(小游戏)渲染模式: highPerformance | normal(默认 highPerformance,显式 normal 关闭)").allowUnknownOption().action((0,apis_1.withCmdTrack)("upload",async e=>{const a=(0,core_1.getProvider)().getProcessState();a.setState(state_1.EProcessStateName.PARSE_ARV,e);const{appId:t,type:_}=a.getState(state_1.EProcessStateName.PARSE_ARV);if(t){if(!_||!Object.values(constants_1.SCENE_PLUGIN_SUITE).includes(_)){const e=new cli_table3_1.default({head:[chalk_1.default.magenta("应用类型"),chalk_1.default.red("对应指定的type")],style:{"padding-left":1,"padding-right":1},colWidths:[20,20]});return e.push([chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.miniapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小程序)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.widget),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小部件)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.minigame),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小游戏)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.standardizedApp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.标准化应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.isvCMS),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.商家后台应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.webapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.配置应用)]),console.log(e.toString()),void logger.error("当前路径未指定正确的应用类型 ,可以通过 --type 指定")}switch((0,utils_1.goldlog)("upload",_),_){case constants_1.SCENE_PLUGIN_SUITE.小程序:await(0,miniapp_upload_1.miniapp_upload)(a.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小部件:await(0,widget_upload_1.widget_upload)(a.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小游戏:await(0,minigame_upload_1.minigame_upload)(a.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.标准化应用:case constants_1.SCENE_PLUGIN_SUITE.商家后台应用:await(0,standard_upload_1.standard_upload)(a.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.配置应用:await(0,webapp_upload_1.webapp_upload)(a.getState(state_1.EProcessStateName.PARSE_ARV))}}else logger.error("当前路径没有绑定 appId,可以通过 --appId 指定")},e=>e[0]?.type))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_upload=void 0;const{minidev:minidev}=eval("require('minidev')"),core_1=require("../../core"),state_1=require("../../process/state"),utils_1=require("../../utils"),runSourcePack=async e=>{const i=e.getProcessState(),{input:t}=i.getState(state_1.EProcessStateName.PARSE_ARV);return await minidev.pack({project:t})};async function getUploadResult(e,i){for(let t=0;t<300;t++){const a=await(0,utils_1.queryUploadStatus)(e),o=JSON.parse(decodeURIComponent(a.buildInfo)),r=JSON.parse(o.detail);if(i.info(`第${t+1}次查询中...`),"2"===a.buildStatus)return i.info(r.log),void i.success("上传开放平台成功,","版本号为:",e.buildVersion);if("3"===a.buildStatus)throw i.error(`${a.buildStatus} 构建失败 ${r.log}`),new Error("构建失败");await(0,utils_1.sleep)(3e3)}throw new Error("轮询超时")}const logger=(0,utils_1.getLogger)("miniapp_upload"),miniapp_upload=async e=>{const{appId:i,input:t,debug:a,cloud:o,version:r}=e;let s,u=await(0,utils_1.getAppInfo)(i);if(r||(logger.debug(`当前应用版本:${u.latestVersion}`),s=(0,utils_1.autoAddVersion)(u.latestVersion||"0.0.0")),!s)return void logger.error("指定 appId 时,需要指定的version");const l=await(0,utils_1.getMiniAppBuildParams)(t,i,"upload"),n=(0,core_1.getProvider)(),{zipFile:p}=await runSourcePack(n),d={appId:i,ossKey:await(0,utils_1.uploadFileToOSS)(p),version:s,mainUrl:l?.mainUrl,filepath:p,pluginList:l?.pluginList,packageName:"dist.amr",extendInfo:l?.extendInfo,extraInfo:l?.extraInfo};logger.debug("uploadParams",d),logger.info("开始上传小程序到开放平台");const{buildVersion:c,buildPackageId:g}=await(0,utils_1.uploadApp)(d);await getUploadResult({appId:i,buildVersion:c,buildPackageId:g},logger)};exports.miniapp_upload=miniapp_upload;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_upload=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),minigame_api_1=require("../../utils/apis/minigame_api"),logger=(0,utils_1.getLogger)("minigame_upload"),getAppInfo=async e=>{const o=(0,provider_1.getProvider)().getRequest();return await o.post("ide/api/appInfo",{appId:e})},isValidVersion=e=>"string"==typeof e&&/^\d+\.\d+\.\d+$/.test(e),minigame_upload=async e=>{(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.START,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const{appId:o,input:t,debug:n,cloud:s,version:i,renderMode:a}=e;logger.debug("入参",e);const r=(0,provider_1.getProvider)(),_=r.getProcessState(),g=r.getCliConfig(),u=g.get(constants_1.StoreKey.TB_TOKEN),c=g.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV);try{if(!u)throw new Error(`无账号信息,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 登录`);const t=await getAppInfo(o);logger.debug("appInfo",t);const{latestVersion:n,relateGamePluginId:r}=t;let g;if(i||(logger.debug(`当前应用版本:${n}`),g=(0,utils_1.autoAddVersion)(n||"0.0.0")),!g)throw new Error("指定 appId 时,需要指定的version");_.setState(state_1.EProcessStateName.MINIGAME_DO_UPLOAD,{latestVersion:n,targetVersion:g,cloud:s,input:e?.input});const l=await(0,utils_1.getMiniGameInfo)(e?.input);logger.debug("gameInfo",l);const p=c===constants_1.EEnv.DAILY?constants_1.EEnv.DAILY:c===constants_1.EEnv.PREPUB||"pre"===c?constants_1.EEnv.PREPUB:constants_1.EEnv.PROD,d=await(0,renderMode_1.setHighPerformanceMode)({appId:o,gameRoot:e?.input,env:p,userSelectRenderMode:a});let m;if(logger.debug("highPerformanceMode",d),l.plugins){if(!r)throw(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.USE_GAME_PLUGIN_ERROR,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),new Error("检测到项目引入了游戏引擎插件,目前小游戏不支持,请关闭。(Cocos关闭引擎分离,Laya关闭启用插件)");{(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const o=await(0,pack_1.runPack)({input:e?.input,cloud:s,isPlugin:!0,pluginVersion:g,isUpload:!0});(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_UPLOAD,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const{deployVersion:t}=await(0,minigame_api_1.upload)({targetVersion:g,appId:r,amrPath:o.amrPath,pluginList:[],highPerformanceMode:d,input:e?.input});m=t,(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_FINISH,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}}(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const E=await(0,pack_1.runPack)({input:e?.input,cloud:s,isPlugin:!1,pluginVersion:m,isUpload:!0});logger.success("runPack succeed".bgGreen,E),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.UPLOAD,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const P=await(0,minigame_api_1.upload)({targetVersion:g,appId:o,amrPath:E.amrPath,pluginList:E.pluginList,highPerformanceMode:d,input:e?.input});return logger.debug("upload task result",P),isValidVersion(P?.version)?(logger.success("upload done".bgGreen,P),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),{success:!0,version:P.version}):(logger.error("upload 失败: 服务端返回的 version 非法或缺失",P?.version),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.FAIL,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),{success:!1})}catch(e){return logger.error("upload 命令执行失败",e),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.FAIL,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),{success:!1}}};function showDebugInfo(e){throw new Error("Function not implemented.")}exports.minigame_upload=minigame_upload;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.standard_upload=void 0;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),getProject_1=require("../../utils/projects/standard/getProject"),utils_1=require("../../utils"),zipBuilder_1=require("../../utils/projects/standard/zipBuilder"),constants_1=require("../../constants");async function getStandardAppBuildTaskId(e){const{appId:t,webAppOssKey:a}=e,i={appId:t,webAppOssKey:a},{taskId:r}=await(0,utils_1.doStandardizedAppBuild)(i);return r}const logger=(0,utils_1.getLogger)("standard_upload"),standard_upload=async e=>{try{const t=global.demoTarPath;if(!fs_extra_1.default.existsSync(t))return void logger.error("cli 工具 npm 包中的 demo.tar 文件缺失,无法完成后续流程");const{appId:a,input:i,debug:r,cloud:d,version:s,type:o}=e,p=(0,getProject_1.getBuildProjectPath)(i),l=fs_extra_1.default.realpathSync(path_1.default.join((0,utils_1.getTmpDir)())),u=await fs_extra_1.default.readJson(`${p}/app.json`),n=await(0,utils_1.getAppInfo)(a),g=[".git",".tea",".svn",".vscode"],_=await(0,zipBuilder_1.doBuildZip)({projectPath:p,bstandardizeBuildType:n?.bstandardizeBuildType,ignoreList:g,buildDistPath:l,logger:logger}),c=await(0,utils_1.uploadFileToOSS)(t),f={filepath:_,appId:a,demoFilePath:t,webAppOssKey:await(0,utils_1.uploadFileToOSS)(_)},b=await getStandardAppBuildTaskId(f),P=await(0,utils_1.get_standardizedApp_cloud_build_info)({taskId:b,logger:logger,...f});let A;if(s||(logger.debug(`当前应用版本:${n.latestVersion}`),A=(0,utils_1.autoAddVersion)(n.latestVersion||"0.0.0")),!A)return void logger.error("指定 appId 时,需要指定的version");const w={appId:a,ossKey:c,mainUrl:"/index",version:A,extraInfo:JSON.stringify({standardizedAppFilePath:P.standardizedBuildUrl}),webApp:!0,webAppConfig:u,subPackages:P.subPackagesConfig,buildPackageSize:P.standardizedAppBuildPackageSize,multiSectionAppConfig:P.webAppNewAppConfigJSON,multiSectionApp:!!P.webAppNewAppConfigJSON};logger.debug("uploadParams",w),logger.info(`开始上传${constants_1.SCENE_PLUGIN_TYPE[o]}到开放平台`);const{buildVersion:S,buildPackageId:I}=await(0,utils_1.uploadApp)(w);S&&logger.success(`${constants_1.SCENE_PLUGIN_TYPE[o]}上传到开放平台成功,版本号为: ${S}`)}catch(e){logger.error(e)}};exports.standard_upload=standard_upload;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.webapp_upload=void 0;const utils_1=require("../../utils"),logger=(0,utils_1.getLogger)("webapp_upload"),webapp_upload=e=>{logger.warn("暂未实现,敬请期待")};exports.webapp_upload=webapp_upload;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.widget_upload=void 0;const utils_1=require("../../utils"),logger=(0,utils_1.getLogger)("widget_upload"),widget_upload=e=>{logger.warn("暂未实现,敬请期待")};exports.widget_upload=widget_upload;
|
package/lib/constants.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var UPLOAD_LOG,PREVIEW_LOG,DEBUG_LOG,StoreKey,EEnv;Object.defineProperty(exports,"__esModule",{value:!0}),exports.AUTO_MATOR_RENDER_TOP_CODE_URL=exports.AUTO_MATOR_WORK_TOP_CODE_URL=exports.BUILD_CONFIG_FILENAME=exports.SIMULATOR_BASE_URL=exports.EXPRESS_PROXY_PORT=exports.CHROME_REMOTE_DEBUG_PORT=exports.ENV_HOST=exports.EEnv=exports.DEFAULT_ENV=exports.StoreKey=exports.SCENE_PLUGIN_TYPE=exports.DEBUG_LOG=exports.PREVIEW_LOG=exports.UPLOAD_LOG=exports.SCENE_PLUGIN_SUITE=exports.CLI_COMMAND_NAME=void 0,exports.CLI_COMMAND_NAME="tbgame",exports.SCENE_PLUGIN_SUITE={"小程序":"miniapp","小部件":"widget","小游戏":"minigame","标准化应用":"standardizedApp","商家后台应用":"isvCMS","配置应用":"webapp"},function(_){_.START="UPLOAD_START",_.SUCCESS="UPLOAD_SUCCESS",_.FAIL="UPLOAD_FAIL",_.PLUGIN_PACK="UPLOAD_PLUGIN_PACK",_.PLUGIN_UPLOAD="UPLOAD_PLUGIN_UPLOAD",_.PLUGIN_FINISH="UPLOAD_PLUGIN_FINISH",_.USE_GAME_PLUGIN_ERROR="UPLOAD_USE_GAME_PLUGIN_ERROR",_.PACK="UPLOAD_PACK",_.UPLOAD="UPLOAD_UPLOAD"}(UPLOAD_LOG||(exports.UPLOAD_LOG=UPLOAD_LOG={})),function(_){_.START="PREVIEW_START",_.SUCCESS="PREVIEW_SUCCESS",_.FAIL="PREVIEW_FAIL",_.PLUGIN_PACK="PREVIEW_PLUGIN_PACK",_.PLUGIN_PREVIEW="PREVIEW_PLUGIN_PREVIEW",_.PLUGIN_FINISH="PREVIEW_PLUGIN_FINISH",_.USE_GAME_PLUGIN_ERROR="PREVIEW_USE_GAME_PLUGIN_ERROR",_.PACK="PREVIEW_PACK",_.PREVIEW="PREVIEW_PREVIEW"}(PREVIEW_LOG||(exports.PREVIEW_LOG=PREVIEW_LOG={})),function(_){_.START="DEBUG_START",_.SUCCESS="DEBUG_SUCCESS",_.FAIL="DEBUG_FAIL",_.PLUGIN_PACK="DEBUG_PLUGIN_PACK",_.PLUGIN_DEBUG="DEBUG_PLUGIN_DEBUG",_.PLUGIN_FINISH="DEBUG_PLUGIN_FINISH",_.USE_GAME_PLUGIN_ERROR="DEBUG_USE_GAME_PLUGIN_ERROR",_.PACK="DEBUG_PACK",_.DEBUG="DEBUG_DEBUG"}(DEBUG_LOG||(exports.DEBUG_LOG=DEBUG_LOG={})),exports.SCENE_PLUGIN_TYPE=Object.fromEntries(Object.entries(exports.SCENE_PLUGIN_SUITE).map(([_,E])=>[E,_])),function(_){_.PUPPETEER_PATH="PUPPETEER_PATH",_.LOCAL_APP_LINKS="$_app_links_$",_.ENV="env",_.TB_TOKEN="token",_.NICK="nick"}(StoreKey||(exports.StoreKey=StoreKey={})),exports.DEFAULT_ENV="prod",function(_){_.DAILY="daily",_.PREPUB="prepub",_.PROD="prod"}(EEnv||(exports.EEnv=EEnv={})),exports.ENV_HOST={prod:{IDE_MAIN_HOST:"https://core-snipcode.taobao.com",LOGIN_HOST:"https://miniapp-cloud.taobao.com",SHOP_HOST:"https://isv-siteadmin.taobao.com"},pre:{IDE_MAIN_HOST:"https://pre-core-snipcode.taobao.com",LOGIN_HOST:"https://pre-miniapp-cloud.taobao.com",SHOP_HOST:"https://pre-isv-siteadmin.taobao.com"},daily:{IDE_MAIN_HOST:"https://core-snipcode.daily.taobao.net",LOGIN_HOST:"https://pre-miniapp-cloud.taobao.com",SHOP_HOST:"https://isv-siteadmin.daily.taobao.com"}},exports.CHROME_REMOTE_DEBUG_PORT=9212,exports.EXPRESS_PROXY_PORT=9213,exports.SIMULATOR_BASE_URL="http://market.m.taobao.com/app/polygon/simulator-web/index.html",exports.BUILD_CONFIG_FILENAME="taobaodev.config.json",exports.AUTO_MATOR_WORK_TOP_CODE_URL="https://unpkg.alibaba-inc.com/@ali/tinybugme-packages-test@0.0.1-beta.9/dist/debug/worker-remote.js",exports.AUTO_MATOR_RENDER_TOP_CODE_URL="https://unpkg.alibaba-inc.com/@ali/tinybugme-packages-test@0.0.1-beta.9/dist/debug/render-uniweb.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CliConfig=void 0;const constants_1=require("./../constants"),utils_1=require("../utils"),logger=(0,utils_1.getLogger)(""),APPLINKS=constants_1.StoreKey.LOCAL_APP_LINKS,keepInsideKeys=[APPLINKS];class CliConfig{set(e,t,s=!0){if(s&&-1!==keepInsideKeys.indexOf(e))throw`不支持设置${e}`;const i=(0,utils_1.getConfig)();(0,utils_1.saveConfig)(Object.assign({},i,{[e]:t}))}get(e,t){return(0,utils_1.getConfig)()[e]||t}showConfig(){const e=(0,utils_1.getConfig)();logger.info("当前本地配置"),logger.log(JSON.stringify(e,(e,t)=>{if(!keepInsideKeys.includes(e))return t},3))}bindApp(e,t){const s=this.get(constants_1.StoreKey.LOCAL_APP_LINKS)||{};s[e]=t,this.set(constants_1.StoreKey.LOCAL_APP_LINKS,s,!1)}getBindApp(e){return(this.get(constants_1.StoreKey.LOCAL_APP_LINKS)||{})[e]}}exports.CliConfig=CliConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,o)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./provider"),exports),__exportStar(require("./pipeline"),exports),__exportStar(require("./config"),exports),__exportStar(require("./requst"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Pipeline=void 0;class Pipeline{pipeLineFunctions;constructor(){this.pipeLineFunctions=[]}addPipeline(i){return this.pipeLineFunctions.unshift(i),this}async run(){let i=this.pipeLineFunctions.pop();for(;void 0!==i;)try{await i(),i=this.pipeLineFunctions.pop()}catch(i){throw i}}}exports.Pipeline=Pipeline;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Provider=void 0,exports.getProvider=getProvider;class Provider{cliconfig;localMiniAppInfo;request;userInfo;processState;setCliConfig(e){this.cliconfig=e}getCliConfig(){return this.cliconfig}setLocalMiniAppInfo(e){this.localMiniAppInfo=e}getLocalMiniAppInfo(){return this.localMiniAppInfo}getRequest(){return this.request}setReqeust(e){this.request=e}setUserInfo(e){this.userInfo=e}getUserInfo(){return this.userInfo}setProcessState(e){this.processState=e}getProcessState(){return this.processState}}let provider;function getProvider(){return provider||(provider=new Provider),provider}exports.Provider=Provider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TbRequest=void 0;const request_1=__importDefault(require("request")),utils_1=require("../utils"),provider_1=require("./provider"),fs_extra_1=__importDefault(require("fs-extra")),constants_1=require("../constants"),state_1=require("../process/state"),logger=(0,utils_1.getLogger)("[api]"),tryParseJSON=e=>{try{return JSON.parse(e)}catch{return e}};class TbRequest{headers={};cliconfig;host;constructor(e=!1){const t=(0,provider_1.getProvider)().getCliConfig();this.cliconfig=t;const r=this.cliconfig.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV),s=constants_1.ENV_HOST[r]||constants_1.ENV_HOST[constants_1.DEFAULT_ENV];constants_1.ENV_HOST[r]||logger.warn(`未知的环境配置 "${r}",已回退到默认环境 "${constants_1.DEFAULT_ENV}"。可用值: ${Object.keys(constants_1.ENV_HOST).join(", ")}`),this.headers={"Content-Type":"application/json","x-tbtoken":t.get("token"),"x-client-type":global.IS_CLI?"CLI":"IDE"},this.host=s[e?"SHOP_HOST":"IDE_MAIN_HOST"]}setToken(e){this.headers={...this.headers,"x-tbtoken":e}}resolveAppId(e){if(e)return String(e);try{const e=(0,provider_1.getProvider)().getProcessState().getState(state_1.EProcessStateName.PARSE_ARV);return e?.appId?String(e.appId):void 0}catch{return}}post(e,t,r,s){const o=t,g=this.resolveAppId(t?.appId),a={...this.headers,...g?{"x-app-id":g}:{}};return new Promise((g,n)=>{(0,request_1.default)(`${this.host}/${e}`,{headers:r?{"x-tbtoken":this.headers["x-tbtoken"]}:a,body:JSON.stringify(t),method:"POST",strictSSL:!1,form:r,...s},(t,s,d)=>{logger.debug("request url",`${this.host}/${e}`),logger.debug("request body",o),logger.debug("request form",r),logger.debug("request headers",r?{"x-tbtoken":this.headers["x-tbtoken"]}:a),logger.debug("response status",s&&s.statusCode),logger.debug("response headers",s&&s.headers),logger.debug("response body",tryParseJSON(d)),t&&(logger.debug(t),logger.debug(s)),t&&n(t),s&&200!==s.statusCode&&n(s.body);const{success:u,model:i,errMessage:l,errorMessage:h,errorCode:_,totalCount:p}=JSON.parse(d);u?(void 0!==p&&g({totalCount:p,model:i}),g(i)):"online_plugin_waiting"===_?g(_):("need login"===l&&logger.error(`登录态过期,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 刷新登录态`),n(new Error(l||h)))})})}get(e,t={}){const r=this.resolveAppId(t?.qs?.appId),s={...this.headers,...r?{"x-app-id":r}:{}};return new Promise((r,o)=>{(0,request_1.default)({baseUrl:this.host,url:e,headers:s,strictSSL:!1,...t,method:"GET"},(g,a,n)=>{if(logger.debug("request url",`${this.host}/${e}`),logger.debug("request qs",t.qs),logger.debug("request headers",s),logger.debug("response status",a&&a.statusCode),logger.debug("response headers",a&&a.headers),logger.debug("response body",tryParseJSON(n)),g&&(logger.debug(g),logger.debug(a),o(g)),"text"===t.responseType)return r(n);const{success:d,model:u,errMessage:i,errorMessage:l,errorCode:h}=JSON.parse(n);d?r(u):"online_plugin_waiting"===h?r(h):o(new Error(i||l))})})}upload(e,t,r){return new Promise((s,o)=>{this.headers["x-tbtoken"];(0,request_1.default)(e,{headers:this.headers,method:"POST",formData:{...r,file:fs_extra_1.default.createReadStream(t)}},(t,r,g)=>{logger.debug("request url",e),logger.debug("request headers",this.headers),logger.debug("response status",r&&r.statusCode),logger.debug("response headers",r&&r.headers),logger.debug("response body",tryParseJSON(g)),t&&o(t),r&&200!==r.statusCode&&o(r.body),s(g)})})}}exports.TbRequest=TbRequest;
|
package/lib/core/user.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UserInfo=void 0;const constants_1=require("../constants"),provider_1=require("./provider");class UserInfo{userInfo;userNick;tbtoken;constructor(){this.readToken()}readToken(){const e=(0,provider_1.getProvider)().getCliConfig();this.tbtoken=e.get(constants_1.StoreKey.TB_TOKEN)}getUserInfo(){const e=(0,provider_1.getProvider)().getCliConfig();this.userNick=e.get(constants_1.StoreKey.NICK)}}exports.UserInfo=UserInfo;
|
package/lib/global.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var IS_CLI,demoTarPath;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const core_1=require("./core"),pipelines_1=require("./pipelines"),utils_1=require("./utils"),apis_1=require("./utils/apis"),commander_1=__importDefault(require("commander")),state_1=require("./process/state"),constants_1=require("./constants"),pkg=require("../package.json"),logger=(0,utils_1.getLogger)("main");async function main(){process.argv.includes("--showProcess")&&(0,utils_1.showDebug)();const e=(0,core_1.getProvider)();e.setProcessState((0,state_1.createProcessState)()),e.setCliConfig(new core_1.CliConfig),e.setReqeust(new core_1.TbRequest),(0,apis_1.goldlogCli)("launch",(0,apis_1.collectLaunchParams)());const s=new core_1.Pipeline;s.addPipeline(pipelines_1.checkVersion).addPipeline(pipelines_1.showTips).addPipeline(pipelines_1.collect).addPipeline(pipelines_1.registerCommand).addPipeline(pipelines_1.remoteConfig),await s.run(),commander_1.default.usage(`使用帮助,可以通过${constants_1.CLI_COMMAND_NAME} -h 或者 ${constants_1.CLI_COMMAND_NAME} [command] -h 获取`),commander_1.default.version(pkg.version),commander_1.default.parse(process.argv)}global.WEBPACK_MODE&&(process.env.__MINICODE_COMPILE_PACKAGE_ROOT__=__dirname),main(),process.on("unhandledRejection",e=>{if(e&&e.message)return logger.error("发生错误:",e.message),void logger.warn("执行命令上携带--showProcess 显示更多日志");console.error(e)});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";async function checkVersion(){}Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkVersion=checkVersion;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.collect=collect;const fs_extra_1=__importDefault(require("fs-extra")),utils_1=require("../utils"),path_1=__importDefault(require("path")),core_1=require("../core"),constants_1=require("../constants"),logger=(0,utils_1.getLogger)("[collect info]");async function set_miniapp_project_config(t){const e=(0,utils_1.getMiniProjectInfo)(t),o="plugin"===e.compileType,i=path_1.default.join(t,e.miniprogramRoot||""),n=path_1.default.join(t,e.pluginRoot||"");(0,core_1.getProvider)().setLocalMiniAppInfo({localPath:t,isPlugin:o,pluginRoot:n,miniprogramRoot:i,projectInfo:e,appxNg:!!e.enableAppxNg})}async function collect(){const t=process.argv;let e=process.cwd();const o=-1!==t.indexOf("--input")?t.indexOf("--input"):t.indexOf("-i"),i=-1!==t.indexOf("--type")?t.indexOf("--type"):t.indexOf("-t");-1!==t.indexOf("-h")||t.indexOf("--help");if(-1!==t.indexOf("--showProcess")&&(0,utils_1.showDebug)(),-1!==o&&t.length>o+1){const i=path_1.default.resolve(e,t[o+1]);if(fs_extra_1.default.pathExistsSync(i)){fs_extra_1.default.statSync(i).isDirectory()&&(e=i)}}if(-1!==i&&t.length>i+1){switch(t[i+1]){case constants_1.SCENE_PLUGIN_SUITE.小程序:await set_miniapp_project_config(e);case constants_1.SCENE_PLUGIN_SUITE.小部件:case constants_1.SCENE_PLUGIN_SUITE.小游戏:case constants_1.SCENE_PLUGIN_SUITE.标准化应用:case constants_1.SCENE_PLUGIN_SUITE.商家后台应用:case constants_1.SCENE_PLUGIN_SUITE.配置应用:}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&!("get"in i?!r.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./checkVersion"),exports),__exportStar(require("./tips"),exports),__exportStar(require("./registerCommand"),exports),__exportStar(require("./collect"),exports),__exportStar(require("./remoteConfig"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.registerCommand=registerCommand;const commander_1=require("../commander");async function registerCommand(){(0,commander_1.commander_buildPreview)(),(0,commander_1.commander_config)(),(0,commander_1.commander_upload)(-1!==process.argv.indexOf("--inner")),(0,commander_1.commander_login)(),(0,commander_1.commander_app)()}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.remoteConfig=remoteConfig;const superagent_1=__importDefault(require("superagent")),constants_1=require("../constants");async function remoteConfig(){const t=await superagent_1.default.get(`https://hudong.alicdn.com/api/data/v2/9de69e8aa0f747c588e6de67989ff4dc.js?t=${Date.now()}`);if(t&&t.body){const e=t.body;if(!e.toolEnable)throw new Error(`${constants_1.CLI_COMMAND_NAME} 暂停服务`);e.tips&&(console.log(e.tips),console.log("\n"))}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";async function showTips(){}Object.defineProperty(exports,"__esModule",{value:!0}),exports.showTips=showTips;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var EProcessStateName;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProcessState=exports.EProcessStateName=void 0,exports.createProcessState=createProcessState,function(e){e.PARSE_ARV="parse_argv",e.MINIAPP_LOCAL_BUILD="miniapp_local_build",e.MINIAPP_DEBUG_INJECT="miniapp_debug_inject",e.MINIAPP_GENERATE_PREVIEW_PARAMS="miniapp_generate_preview_params",e.LOCAL_WIDGET_BUILD="local_widget_build",e.PUSH_PREVIEW_RESULT="push_preview_result",e.GENERATE_PREVIEW_URL="generate_preview_url",e.MINIGAME_DO_UPLOAD="minigame_do_upload",e.MINIGAME_UPLOAD_RESULT="minigame_upload_result",e.MINIGAME_DO_PREVIEW="minigame_do_preview",e.MINIGAME_PREVIEW_RESULT="minigame_preview_result",e.MINIGAME_DO_DEBUG="minigame_do_debug",e.MINIGAME_DEBUG_RESULT="minigame_debug_result"}(EProcessStateName||(exports.EProcessStateName=EProcessStateName={}));class ProcessState{state={};hooks=new Map;setState(e,t){const s=this.invokeHook(e,t);this.state[e]?Object.assign(this.state[e],s):this.state[e]=s}invokeHook(e,t){if(this.hooks.has(e)){const s=this.hooks.get(e);let a=t;return s.forEach(e=>{a=e(a)}),a}return t}getState(e){return this.state[e]||{}}hasState(e){return!!this.state[e]}addHook(e,t){this.hooks.has(e)||this.hooks.set(e,[]),this.hooks.get(e).push(t)}}function createProcessState(){return new ProcessState}exports.ProcessState=ProcessState;
|
package/lib/sdk.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";async function main(){console.log("aaaasss")}Object.defineProperty(exports,"__esModule",{value:!0}),main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
package/lib/utils/api.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setDevPlugin=void 0,exports.getUserInfo=getUserInfo;const core_1=require("../core"),logger_1=require("./logger"),superagent_1=__importDefault(require("superagent")),logger=(0,logger_1.getLogger)("[api]");async function getUserInfo(){const e=(0,core_1.getProvider)().getRequest();return await e.post("ide/api/currentUserInfo",{})}const setDevPlugin=async(e,t,r)=>{logger.info("set dev",e,t,r);const o=await superagent_1.default.post("https://miniapp-inner.alibaba-inc.com/api/v2/setPluginDev").send({developId:e,pluginId:t,version:r});logger.info("set dev res",o.body)};exports.setDevPlugin=setDevPlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o);var a=Object.getOwnPropertyDescriptor(t,o);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,a)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]}),__exportStar=this&&this.__exportStar||function(e,t){for(var o in e)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||__createBinding(t,e,o)},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.goldlogCli=goldlogCli,exports.collectCommonParams=collectCommonParams,exports.collectLaunchParams=collectLaunchParams,exports.withCmdTrack=withCmdTrack,exports.goldlog=goldlog,exports.getAppInfo=getAppInfo,exports.pushLocalPreview=pushLocalPreview,exports.pushCloudPreview=pushCloudPreview,exports.getPreviewInfo=getPreviewInfo,exports.uploadApp=uploadApp,exports.uploadFileToOSS=uploadFileToOSS,exports.queryUploadStatus=queryUploadStatus,exports.submitGameCloudBuild=submitGameCloudBuild,exports.getGameCloudBuildStatus=getGameCloudBuildStatus;const request_1=__importDefault(require("request"));require("colors");const constants_1=require("../../constants"),core_1=require("../../core"),logger_1=require("../logger"),logger=(0,logger_1.getLogger)("[api]"),goldlogLogger=(0,logger_1.getLogger)("[goldlog]"),GOLDLOG_TAG="[goldlog]".cyan,pkg=require("../../../package.json"),NONE="(none)",ANON="anonymous",CHANNEL=String(pkg.name).startsWith("@ali/")?"inner":"public";function goldlogCli(e,t={}){try{const o={};for(const[e,r]of Object.entries(t))o[e]=null==r||""===r?NONE:r;o.t=Date.now();const r=Object.entries(o).map(([e,t])=>`${e}=${encodeURIComponent(String(t))}`).join("&");goldlogLogger.debug(GOLDLOG_TAG,`上报 tbopen.cli.${e}`,o),(0,request_1.default)(`https://gm.mmstat.com/tbopen.cli.${e}?${r}`)}catch(e){}}function collectCommonParams(){const e=(0,core_1.getProvider)().getCliConfig()?.get(constants_1.StoreKey.NICK);return{cliVer:pkg.version,channel:CHANNEL,nick:e||ANON}}function collectLaunchParams(){return{...collectCommonParams(),nodeVer:process.version,platform:process.platform,arch:process.arch,cmd:process.argv[2]||NONE}}function withCmdTrack(e,t,o){return async(...r)=>{const a=o&&o(r)||NONE,n=Date.now();goldlogCli(e,{...collectCommonParams(),status:"start",appType:a,durationMs:0,errMsg:NONE,errStage:NONE});try{const o=await t(...r);return goldlogCli(e,{...collectCommonParams(),status:"success",appType:a,durationMs:Date.now()-n,errMsg:NONE,errStage:NONE}),o}catch(t){throw goldlogCli(e,{...collectCommonParams(),status:"fail",appType:a,durationMs:Date.now()-n,errMsg:String(t?.message||t).slice(0,200),errStage:t?.errStage||"unknown"}),t}}}function goldlog(e,t,o="tbopen-data.use_command"){try{const r=(0,core_1.getProvider)().getCliConfig(),a={action:e,app_type:t,nick:encodeURIComponent(r.get("nick"))},n=`https://gm.mmstat.com/tbopen.${o}?${Object.keys(a).map(e=>`${e}=${a[e||""]}`).join("&")}&t=${Date.now()}`;(0,request_1.default)(n)}catch(e){console.log("goldlog 埋点失败"+e.message)}}async function getAppInfo(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/appInfo",{appId:e})}async function pushLocalPreview(e){const t=(0,core_1.getProvider)().getRequest();return{deployVersion:(await t.post("ide/api/upload/previewPackage",e)).deployVersion}}async function pushCloudPreview(e){const t=(0,core_1.getProvider)().getRequest();return{deployVersion:(await t.post("ide/api/upload/cloudBuiltPackage",e)).deployVersion}}async function getPreviewInfo(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/getDeployVersionInfo",e)}async function uploadApp(e){const t=(0,core_1.getProvider)().getRequest();try{return await t.post("ide/api/upload/versionPackage",e)}catch(e){return logger.error("上传失败,请先确认是否指定了正确的应用"),logger.error(e),e.message}}async function uploadFileToOSS(e){const t=(0,core_1.getProvider)(),o=t.getRequest(),r=t.getCliConfig().get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV);let a=await o.post("ide/api/upload/getOssUploadConfig",{}),{host:n}=a;return a.OSSAccessKeyId=a.accessKeyId,a.success_action_status="200",await o.upload(`${["pre","daily"].includes(r)?"http":"https"}://${n}`,e,a),a.key}async function queryUploadStatus(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/upload/queryUploadStatus",e)}async function submitGameCloudBuild(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/submitCloudBuild",e)}async function getGameCloudBuildStatus(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/checkCloudBuildStatus",e)}__exportStar(require("./miniapp_api"),exports),__exportStar(require("./standard_api"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.fetchChannelId=fetchChannelId,exports.fetchTyroId=fetchTyroId,exports.fetchDebugParams=fetchDebugParams,exports.doCloudBuild=doCloudBuild,exports.getCloudBuildResult=getCloudBuildResult;const fs_1=__importDefault(require("fs")),superagent_1=__importDefault(require("superagent")),form_data_1=__importDefault(require("form-data")),node_fetch_1=__importDefault(require("node-fetch")),querystring_1=require("querystring"),constants_1=require("../../constants"),core_1=require("../../core"),logger_1=require("../logger"),project_1=require("../project"),common_1=require("../common"),logger=(0,logger_1.getLogger)("[miniapp_api]"),PARAMS=["--color","--limitation","--allowPrecompile","--enableDistFileMinify","--sourceMap","false","--ADAPTOR_NAME","taobao","--injectCode","{}","--preview","--scriptName","buildpack"],ENV={DEBUG_ENV:1,importModule:1,InternalSwicher:JSON.stringify({include:!0}),ADAPTOR_NAME:"taobao"};async function fetchChannelId(e={}){const{text:t}=await superagent_1.default.get("https://openchannel.alipay.com/group/apply.do").query({...e,scene:"tinyAppDebug",roleType:"IDE",source:"taobao"});return t}async function fetchTyroId(){const{text:e}=await superagent_1.default.get("https://hpmweb.alipay.com/tyro/uuid");return e}async function fetchDebugParams(e){const{debug:t,cloud:a}=e,[r,o]=await Promise.all([fetchChannelId(),fetchTyroId()]),n=(0,project_1.generateUUId)();logger.debug(`channelId: ${r}`),logger.debug(`tyroId: ${o}`),logger.debug(`remoteDebugUUID: ${n}`);const s="pre"===(0,core_1.getProvider)().getCliConfig().get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV)?"render-pre.alipay.com":"render.alipay-eco.com",i=new URL(`https://${s}/p/s/devtools-web/index.html`);i.search=(0,querystring_1.stringify)({ch1:n,ch2:n,boat:1});let u=i.toString();return a&&t&&(u=`https://${s}/p/s/devtools-web/index.html?ch1=${o}&ch2=${r}&chInfo=${constants_1.CLI_COMMAND_NAME}`),{devtoolUrl:u,tyroId:o,channelId:r,remoteDebugUUID:n}}async function doCloudBuild(e){const{filepath:t,extraInfo:a,appId:r,isPlugin:o}=e,n=[],s=JSON.parse(a),{uuid:i,isRemoteX:u}=s;u&&n.push({key:"tyro",options:{uuid:i,fast:!0}},{key:"bugmeng",options:{tinybugme:!0,ignoreWorker:!1,preview:!1}});const l=[...PARAMS];l.push("--appId"),l.push(r),o&&(l.push("--pluginId"),l.push(r));const g=new form_data_1.default;g.append("file",fs_1.default.createReadStream(t)),g.append("params",JSON.stringify(l)),g.append("extraInfo",JSON.stringify(s)),g.append("env",JSON.stringify(ENV)),g.append("plugins",JSON.stringify(n)),console.log(g,"formData");const c=await(0,node_fetch_1.default)("https://hpmweb.alipay.com/tinyApp/cloudBuild/execute",{method:"POST",body:g}),p=await c.json();return logger.info("小程序云构建..."),logger.info(`小程序云构建参数: ${JSON.stringify(g,null,2)}`),{taskId:p?.data?.taskId}}async function queryCloudResult(e){try{const t=await(0,node_fetch_1.default)(`https://hpmweb.alipay.com/tinyApp/cloudBuild/result?taskId=${e}`),a=await t.json();if(!0===a.success&&"COMPLETE"===a.status){const e={pkgUrl:a.data.zipFile,success:!0,plugin:"",status:"COMPLETE"};return a?.data?.packageInfo?.ngPackageInfo?.artifactUrl&&(e.newPkgUrl=a?.data?.packageInfo?.ngPackageInfo?.artifactUrl),a.data.plugin&&a.data.plugin.artifactUrl&&(e.plugin=a.data.plugin.artifactUrl),a?.data?.packageInfo?.ngPackageInfo?.plugin?.artifactUrl&&(e.newPluginUrl=a?.data?.packageInfo?.ngPackageInfo?.plugin?.artifactUrl),a.data.subPackages&&a.data.subPackages.length>0&&(e.subPackages=a.data.subPackages),e}return a}catch(e){throw e}}async function getCloudBuildResult(e){for(let t=0;t<100;t++){const t=await queryCloudResult(e);if(logger.info(`taskId: ${e}`),!0===t.success&&"COMPLETE"===t.status)return logger.info("构建成功..."),logger.info(`产物包地址: ${t.pkgUrl}`),t.plugin&&logger.info(`产物插件包地址:${t.plugin}`),t.subPackages&&logger.info(`分包产物:${JSON.stringify(t.subPackages)}`),{pkgUrl:t.pkgUrl,newPkgUrl:t.newPkgUrl,pluginUrl:t.plugin,newPluginUrl:t.newPluginUrl,subPackages:t.subPackages};if(!0===t.success&&"BUILDING"===t.status&&logger.info("构建中..."),!1===t.success)throw logger.error(`构建失败: ${t.msg}`),new Error(t.msg);await(0,common_1.sleep)(2e3)}throw new Error("轮询超时")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),a=0;a<i.length;a++)"default"!==i[a]&&__createBinding(r,t,i[a]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.debugCloud=exports.genHex16=exports.previewCloud=exports.upload=void 0;const project_1=require("../project"),logger_1=require("../logger"),path=__importStar(require("path")),fs=__importStar(require("fs")),index_1=require("./index"),common_1=require("../common"),cliProgress_1=require("../cliProgress");require("colors");const logger=(0,logger_1.getLogger)("minigame_api"),logError=e=>{logger.error(e?.title?.bgRed,e.params)},logInfo=e=>{logger.info(e?.title?.bgGreen,e.params)},getPreloadInfo=e=>{const t=(0,project_1.getMiniProjectInfo)(e);if(null===t)return null;const r="CLOUDAPP"===t?.cloud?.type?.toUpperCase?.();let i=t?.pluginRoot||"";r&&""===i&&(i="widget");const a=path.join(e,i,"preload.json");try{return fs.existsSync(a)?JSON.parse(fs.readFileSync(a,{encoding:"utf-8"})):null}catch(e){return console.log("getPreloadInfo error",e.message),null}},insertPreloadParams=(e,t)=>{const r=getPreloadInfo(e);if(!r)return t;try{const e=JSON.parse(t);return e.launchParams=e.launchParams||{},e.launchParams.preloadConfig=r,JSON.stringify(e)}catch(e){return t}},getDeviceOrientation=e=>{try{return(0,project_1.getMiniGameInfo)(e).deviceOrientation}catch(e){return""}},findMatchingString=e=>{const t=(e||"").match(/加签打包完成|开始加签打包/);return t?t[0]:null},findMatchStatsUrl=e=>{if(e&&e.indexOf("获取打包文件信息")>-1)return e.split("获取打包文件信息:")[1]},getGameUploadResult=async e=>{const t=[],r=(0,cliProgress_1.startCliProgress)("小游戏构建中",logger);try{for(let i=0;i<300;i++){const a=await(0,index_1.queryUploadStatus)(e),n=JSON.parse(decodeURIComponent(a.buildInfo)),o=JSON.parse(n.detail);let l="compile";try{o?.extInfo&&(l=JSON.parse(o.extInfo)?.type??"compile")}catch(e){l="compile"}r.update({label:"compile"===l&&"1"===a.buildStatus?"小游戏构建中":"构建结果拉取中",attempt:i+1});const s=o.log;if(s&&t[t.length-1]!==s&&(t.push(s),r.withLog(()=>{logger.info(`flow tick ${s}`);const e=/taskId:(\d*)/.exec(s);e&&"string"==typeof e[1]&&logInfo({$2:e[1]});const t=findMatchingString(s);t&&logInfo({title:t,description:t});const r=findMatchStatsUrl(s);r&&logInfo({title:"打包文件信息",params:r,description:"pack-stats-url"})})),"2"===a.buildStatus)return r.withLog(()=>{logInfo({title:"上传日志",params:t,description:"terminal-log"})}),void r.succeed("小游戏构建完成");if("5"===a.buildStatus)throw new Error("构建成功,但上传失败");if("6"===a.buildStatus)throw new Error("加签失败");if("3"===a.buildStatus)throw new Error("构建失败");if("4"===a.buildStatus)throw new Error("构建超时");await(0,common_1.sleep)(2e3)}throw new Error("轮询超时")}catch(e){throw r.fail("小游戏构建失败",e instanceof Error?e.message:String(e)),e}},upload=async e=>{const{appId:t,amrPath:r,targetVersion:i,pluginList:a=[],highPerformanceMode:n,input:o}=e,l={mainUrl:"/index.html#pages/index/index",extraInfo:`{"appId":"${t}","doneCommand":"pack","client":"IDE","fileFormat":"tar","scene":"DEBUG","syncToOffline":false,"tinycliName":"tiny-cli","tinycliVersion":"6.2.11","adaptorName":"taobao"}`,clientType:"taobao",appType:"tinyApp",extendInfo:'{"launchParams":{"enableTabBar":"NO","enableJSC":"YES","page":"pages/index/index","enableKeepAlive":"YES","enableWK":"YES","appxRouteFramework":"independent"}}',compileType:"plugin"};l.extendInfo=insertPreloadParams(o,l.extendInfo),logger.debug("build params",l),logInfo({title:"开始上传",params:{appId:t,version:i},paramsDesciption:"上传参数"});const s={appId:t,ossKey:await(0,index_1.uploadFileToOSS)(r),version:i,mainUrl:l.mainUrl,extraInfo:l.extraInfo,extendInfo:l.extendInfo,deviceOrientation:getDeviceOrientation(o),highPerformanceMode:n,pluginList:a,packageName:"dist.amr",buildType:"GAME"},d=await(0,index_1.uploadApp)(s);if(!d||!d.buildVersion)throw new Error(`上传失败(versionPackage 未返回 buildVersion): ${JSON.stringify(d)}`);const{buildVersion:p,buildPackageId:u}=d;return await getGameUploadResult({appId:t,buildVersion:p,buildPackageId:u,buildType:"GAME"}),{deployVersion:p,version:i,appId:t}};exports.upload=upload;const getResourcesDir=()=>path.join(__dirname,"..","..","..","resources"),buildMiniGameRequestBase=(e,t)=>{const r={mainUrl:"/index.html#pages/index/index",extraInfo:`{"appId":"${e}","doneCommand":"pack","client":"IDE","fileFormat":"tar","scene":"DEBUG","syncToOffline":false,"tinycliName":"tiny-cli","tinycliVersion":"6.2.11","adaptorName":"taobao"}`,clientType:"taobao",appType:"tinyApp",extendInfo:'{"launchParams":{"enableTabBar":"NO","enableJSC":"YES","page":"pages/index/index","enableKeepAlive":"YES","enableWK":"YES","appxRouteFramework":"independent"}}',compileType:"plugin"};r.extendInfo=insertPreloadParams(t,r.extendInfo);const i=getResourcesDir(),a=path.join(i,"client.tar"),n=path.join(i,"plugin.tar");if(!fs.existsSync(a))throw new Error(`内嵌资源缺失: ${a}`);if(!fs.existsSync(n))throw new Error(`内嵌资源缺失: ${n}`);return{buildParams:r,filepath:a,pluginFilepath:n,deviceOrientation:getDeviceOrientation(t)}},runGameCloudBuild=async(e,t,r)=>{const{taskId:i,version:a}=await(0,index_1.submitGameCloudBuild)({appId:e,ossKey:t,isDebug:r,buildType:"GAME"});logger.info(`提交构建成功, taskId:${i} version:${a}, 开始轮询构建结果`);const n=(0,cliProgress_1.startCliProgress)("小游戏构建中",logger);try{for(let t=0;t<=200;t++){if(200===t)throw new Error("构建小游戏超时");const r=await(0,index_1.getGameCloudBuildStatus)({appId:e,taskId:i,version:a,buildType:"GAME"});if(r?.log&&n.withLog(()=>logger.info(`[云构建日志] ${r.log}`)),r&&1===r.status){let e={};try{e=r?.extInfo?JSON.parse(r.extInfo):{}}catch(t){e={}}n.update({label:"compile"===e?.type?"小游戏构建中":"构建结果拉取中",attempt:t+1}),"end"===e?.type&&n.withLog(()=>logger.info("获取打包文件信息:"+e?.distFilesUrl)),await(0,common_1.sleep)(3e3);continue}if(r&&0===r.status){let e={};try{e=r?.extInfo?JSON.parse(r.extInfo):{}}catch(t){e={}}return"end"===e?.type&&n.withLog(()=>{logger.info(e?.des),logger.info("获取打包文件信息:"+e?.distFilesUrl)}),n.succeed("小游戏构建完成"),{gameJsBuildUrl:r.packageUrl,gameByteBuildUrl:r.bytePackageUrl,sourceMapUrl:r.sourceMapUrl,subPackagesCloud:r.subBuildPackages||[]}}throw new Error("构建小游戏失败")}throw new Error("构建小游戏超时")}catch(e){throw n.fail("小游戏构建失败",e instanceof Error?e.message:String(e)),e}},buildLocalPreviewData=e=>{const{appId:t,buildParams:r,deviceOrientation:i,highPerformanceMode:a,pluginList:n,isPlugin:o,build:l}=e,s={appId:t,extendInfo:r.extendInfo,highPerformanceMode:a,buildType:"GAME",gameJsBuildUrl:l.gameJsBuildUrl,gameByteBuildUrl:l.gameByteBuildUrl,sourceMapUrl:l.sourceMapUrl,pluginList:n};return o?s:{...s,deviceOrientation:i,mainUrl:r.mainUrl,subPackages:(l.subPackagesCloud||[]).map(e=>({...e,ossKey:"",byteOssKey:""}))}},previewCloud=async e=>{const{appId:t,gameAmrPath:r,isPlugin:i,pluginList:a=[],input:n,highPerformanceMode:o}=e,{buildParams:l,deviceOrientation:s}=buildMiniGameRequestBase(t,n);logger.debug("preview build params",l),logInfo({title:"开始预览",params:{appId:t},paramsDesciption:"预览参数"});const d=await(0,index_1.uploadFileToOSS)(r),p=await runGameCloudBuild(t,d,!1),u=buildLocalPreviewData({appId:t,buildParams:l,deviceOrientation:s,highPerformanceMode:o,pluginList:a,isPlugin:i,build:p}),{deployVersion:c}=await(0,index_1.pushLocalPreview)(u);return{qrCode:(await(0,index_1.getPreviewInfo)({deployVersion:c,appId:t,buildType:"GAME"})).qrCode,deployVersion:c}};exports.previewCloud=previewCloud;const genHex16=()=>require("crypto").randomBytes(8).toString("hex");exports.genHex16=genHex16;const debugCloud=async e=>{const{appId:t,gameAmrPath:r,isPlugin:i,pluginList:a=[],input:n,highPerformanceMode:o}=e,l=(0,exports.genHex16)(),s=(0,exports.genHex16)(),{buildParams:d,deviceOrientation:p}=buildMiniGameRequestBase(t,n);logger.debug("debug build params",d);const u=JSON.parse(d.extendInfo);u.launchParams=u.launchParams||{},u.launchParams.channelId=s,u.launchParams.isRemoteX=!0,u.launchParams.tyroId=l;const c={...d,extendInfo:JSON.stringify(u)};logInfo({title:"开始调试",params:{appId:t},paramsDesciption:"调试参数"});const g=await(0,index_1.uploadFileToOSS)(r),m=await runGameCloudBuild(t,g,!0),f=buildLocalPreviewData({appId:t,buildParams:c,deviceOrientation:p,highPerformanceMode:o,pluginList:a,isPlugin:i,build:m}),{deployVersion:h}=await(0,index_1.pushLocalPreview)(f);return{qrCode:`${`${(await(0,index_1.getPreviewInfo)({deployVersion:h,appId:t,buildType:"GAME"})).qrCode}&channelId=${s}&tyroId=${l}&isRemoteX=true`}&boat=true`,tyroId:l,channelId:s,deployVersion:h,debuggerUrl:`https://tools.antfin-inc.com/devtools_app/devtools_app.html?wss=hpmweb.alipay.com/tyro/devtools/${l}&channel=${s}`}};exports.debugCloud=debugCloud;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAppRuntimeExtraConfig=void 0,exports.doStandardizedAppBuild=doStandardizedAppBuild,exports.getStandardizedAppBuild=getStandardizedAppBuild,exports.get_standardizedApp_cloud_build_info=get_standardizedApp_cloud_build_info;const core_1=require("../../core"),common_1=require("../common");async function doStandardizedAppBuild(t){const e=(0,core_1.getProvider)().getRequest();try{return await e.post("ide/api/submitWebAppBuild",t)}catch(t){console.error(t)}}async function getStandardizedAppBuild(t){const{appId:e,taskId:a}=t,d=(0,core_1.getProvider)().getRequest();try{return await d.post("/ide/api/checkWebAppBuild",t)}catch(t){console.error(t)}}const getAppRuntimeExtraConfig=t=>{let e=t;return e=Array.isArray(t)?{tabBar:e}:t,e};async function get_standardizedApp_cloud_build_info(t){const{appId:e,demoFilePath:a,taskId:d,logger:i}=t;i.info(`提交构建成功,taskId ${d},开始轮训构建结果`);for(let t=0;t<200;t++){const t=await getStandardizedAppBuild({appId:e,taskId:d});if((t?.data?.log||t?.data?.logDetail)&&i.info(`[云构建日志] ${t.data.logDetail}`||t.data.log),!(t&&t.isSuccess&&t.data&&1===t.data.status)){if(t&&t.isSuccess&&t.data&&0===t.data.status){let e=null;try{if(t.data.newAppConfigJSON){const a=JSON.parse(t.data.newAppConfigJSON);e=(0,exports.getAppRuntimeExtraConfig)(a)}}catch(e){i.error(`newAppConfigJSON 转换失败: 原始数据 ${t.data.newAppConfigJSON}`)}return i.info("B端应用构建成功"),{filePath:a,standardizedBuildUrl:t.data.cdnURL,subPackagesConfig:t.data.subPackages,webAppNewAppConfigJSON:e||"",standardizedAppBuildPackageSize:t.data.buildPackageSize||"1"}}throw new Error("B端应用云构建失败")}i.info("B端应用构建中..."),await(0,common_1.sleep)(3e3)}}exports.getAppRuntimeExtraConfig=getAppRuntimeExtraConfig;
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.startCliProgress=void 0,require("colors");const SPINNER_FRAMES=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],DEFAULT_LOG_INTERVAL_MS=3e4,startCliProgress=(e,t,r={})=>{const s=!!process.stdout.isTTY&&!process.env.CI,o=r.logIntervalMs??3e4,l=Date.now(),a=()=>Math.round((Date.now()-l)/1e3);let n,c,i=e,$=0,u=!1;const d=()=>{s&&process.stdout.write("\r[K")},p=()=>{s&&!u&&($=($+1)%SPINNER_FRAMES.length,process.stdout.write(`\r[K${SPINNER_FRAMES[$]} ${((e=!0)=>{const t=e&&n?` · 第 ${n} 次检查`:"",r=c?` · ${c}`:"";return`${i} ${a()}s${t}${r}`})()}`))},g=(e,r,s)=>{if(u)return;u=!0,clearInterval(I),d();const o=s?` · ${s}`:"";t.log(`${e} ${r} ${a()}s${o}`)},I=setInterval(()=>{s?p():t.info(`${i},已等待 ${a()}s`)},s?100:o);return s&&p(),{elapsedSec:a,update:(e={})=>{e.label&&(i=e.label),"number"==typeof e.attempt&&(n=e.attempt),void 0!==e.detail&&(c=e.detail),n&&t.debug(`${i}:第${n}次检查,已等待${a()}s`),p()},withLog:e=>{d();const t=e();return p(),t},succeed:(e,t)=>g("✓".green,e,t),fail:(e,t)=>g("✗".red,e,t),stop:()=>{u||(u=!0,clearInterval(I),d())}}};exports.startCliProgress=startCliProgress;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.tbTokenToIdeToken=exports.loginForToken=exports.getDefaultChromePath=void 0,exports.downRemoteFile=downRemoteFile,exports.downloadRemoteZip=downloadRemoteZip,exports.addExecuteAccess=addExecuteAccess,exports.getLocalPort=getLocalPort,exports.getAppJson=getAppJson,exports.autoAddVersion=autoAddVersion,exports.showQrCode=showQrCode,exports.getMd5=getMd5,exports.loopFn=loopFn,exports.sleep=sleep,exports.clipText=clipText;const fs_extra_1=__importDefault(require("fs-extra")),path_1=__importDefault(require("path")),https_1=__importDefault(require("https")),unzipper_1=__importDefault(require("unzipper")),get_port_1=__importDefault(require("get-port")),logger_1=require("./logger"),puppeteer_core_1=__importDefault(require("puppeteer-core")),query_string_1=__importDefault(require("query-string")),request_1=__importDefault(require("request")),http_1=__importDefault(require("http")),qr_image_1=__importDefault(require("qr-image")),clipboardy_1=__importDefault(require("clipboardy")),child_process_1=require("child_process");require("console-png").attachTo(console);const constants_1=require("../constants"),logger=(0,logger_1.getLogger)("utils");function downRemoteFile(e){return new Promise(t=>{http_1.default.get(e,e=>{e.setEncoding("utf8");let o="";e.on("data",function(e){o+=e}),e.on("end",function(){t(o)})})})}function downloadRemoteZip(e,t){return new Promise(async o=>{fs_extra_1.default.emptyDirSync(t);const r=unzipper_1.default.Extract({path:t});https_1.default.get(e,function(e){e.pipe(r),r.on("close",()=>{o("end")})})})}function addExecuteAccess(e){return new Promise((t,o)=>{fs_extra_1.default.chmod(e,755,e=>{e&&o(e),t("")})})}const getDefaultChromePath=()=>"win32"===process.platform?"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";async function getLocalPort(){return await(0,get_port_1.default)({port:[8e3,8001,8002,8003,8004,8005]})}function getAppJson(e,t=!1){const o=path_1.default.join(e,"app.json");try{return fs_extra_1.default.readJsonSync(o)}catch(e){if(t)throw"小程序的appJson不合法";return{}}}exports.getDefaultChromePath=getDefaultChromePath;const loginForToken=e=>new Promise(async t=>{logger.info("开始登录"),logger.debug("chrome path",`${e||(0,exports.getDefaultChromePath)()}`);const o=await puppeteer_core_1.default.launch({executablePath:`${e||(0,exports.getDefaultChromePath)()}`,headless:!1,args:["--test-type","--no-sandbox","--disable-setuid-sandbox"]}),r=await o.newPage();await r.goto("https://login.taobao.com/member/qrcode.htm?from=tbmp_ide&qrversion=2211&pcRedirectURL=https://market.m.taobao.com/app/polygon/adaptor-taobao/router.html"),o.on("targetchanged",async e=>{const r=e.url();if(r&&r.indexOf("adaptor-taobao/router.html")){const e=query_string_1.default.parseUrl(r);e&&e.query&&e.query.token&&e.query.nick&&(logger.success("登录成功账号用户名:",e.query.nick),await o.close(),t({token:e.query.token,nick:e.query.nick}))}})});exports.loginForToken=loginForToken;const tbTokenToIdeToken=(e,t)=>new Promise((o,r)=>{(0,request_1.default)(`${constants_1.ENV_HOST[e].LOGIN_HOST}/dologin`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({st:t})},(e,t,n)=>{let a=JSON.parse(n);a.success?o(a.result):r(n)})});function autoAddVersion(e){return e.replace(/\.(\d+)$/,function(e,t){return`.${parseInt(t,10)+1}`})}function showQrCode(e){const t=qr_image_1.default.imageSync(e,{size:1,margin:2});console.png(t)}function getMd5(e){var t=require("crypto"),o=require("fs").readFileSync(e),r=t.createHash("md5");return r.update(o),r.digest("hex")}async function loopFn(e,t,o,r){let n=1;for(;;){if(!r(n,await e()))break;if(n++>o)break;await sleep(t)}}function sleep(e){return new Promise(t=>{setTimeout(()=>{t("")},e)})}function clipText(e){try{-1!==process.platform.indexOf("darwin")?clipboardy_1.default.writeSync(e):(0,child_process_1.exec)("clip").stdin.end(e)}catch(e){logger.error("clip text error",e)}}exports.tbTokenToIdeToken=tbTokenToIdeToken;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&!("get"in i?!r.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./store"),exports),__exportStar(require("./common"),exports),__exportStar(require("./logger"),exports),__exportStar(require("./apis"),exports),__exportStar(require("./project"),exports),__exportStar(require("./projects"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.showDebug=showDebug,exports.getLogger=getLogger,require("colors");let showDebugInfo=!1;function showDebug(){showDebugInfo=!0}const $console={log:console.log,warn:console.warn,error:console.error};function porcessArgs(...o){return o.map(o=>"function"==typeof o?o():o)}function getLogger(o){return{log(...o){const e=o.map(o=>"function"==typeof o?o():o);$console.log(...e)},info(...o){this.log("[info]",...o)},error(...o){process.env.DEBUG?$console.error(new Date,"[error]".red,...porcessArgs(...o)):$console.error("[error]".red,...porcessArgs(...o))},warn(...o){this.log("[warn]".yellow,...o)},debug(...o){showDebugInfo&&this.log("[DEBUG]".bgYellow,...o)},success(...o){this.log("[success]".green,...o)},verbose(...o){showDebugInfo&&this.log("[verbos]",...o)}}}console.log=function(...o){showDebugInfo&&$console.log(...o)},console.warn=function(...o){showDebugInfo&&$console.warn(...o)},console.error=function(...o){showDebugInfo&&$console.error(...o)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateProject=exports.getMiniProjectJsonPath=void 0,exports.getMiniProjectInfo=getMiniProjectInfo,exports.getMiniAppBuildParams=getMiniAppBuildParams,exports.generateUUId=generateUUId,exports.getMiniGameInfo=getMiniGameInfo,exports.getMiniGamePluginInfo=getMiniGamePluginInfo;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),uuid_1=require("uuid"),MiniApp_1=require("./projects/miniapp/MiniApp");function getMiniProjectInfo(t){const e=path_1.default.join(t,"mini.project.json");if(fs_extra_1.default.pathExistsSync(e)){return fs_extra_1.default.readJsonSync(e,{throws:!1})||{}}return{}}const getMiniProjectJsonPath=t=>path_1.default.join(t,"mini.project.json");function insertAppx2independent(t){try{const e=JSON.parse(t);return e.launchParams=e.launchParams||{},e.launchParams.appxRouteFramework="independent",JSON.stringify(e)}catch(e){return t}}async function getMiniAppBuildParams(t,e,n){const i=new MiniApp_1.MiniApp(t),a=await i.getBuildParams({appId:e});if("string"==typeof a.pluginList&&(a.pluginList=JSON.parse(a.pluginList)),"upload"!==n){const e=new MiniApp_1.MiniApp(t).getMiniProjectJson();if(e?.debugOptions?.enable){const t=a.pluginList,n=e?.debugOptions?.plugins;t.forEach(t=>{"object"==typeof n&&Object.keys(n).indexOf(t.pluginId)>=0&&(t.pluginVersion=n[t.pluginId].version)}),a.pluginList=t}}return a.extendInfo=insertAppx2independent(a.extendInfo),a}exports.getMiniProjectJsonPath=getMiniProjectJsonPath;const getAppJsonPath=t=>path_1.default.join(t,"app.json"),getSchemaJsonPath=t=>path_1.default.join(t,"schema.json"),getPackageJsonPath=t=>path_1.default.join(t,"package.json"),validateProject=t=>fs_extra_1.default.existsSync((0,exports.getMiniProjectJsonPath)(t))||fs_extra_1.default.existsSync(getAppJsonPath(t))||fs_extra_1.default.existsSync(getSchemaJsonPath(t));function generateUUId(){return(0,uuid_1.v4)()}function getMiniGameInfo(t){const e=path_1.default.join(t,"game.json");if(fs_extra_1.default.pathExistsSync(e)){return fs_extra_1.default.readJsonSync(e,{throws:!1})||{}}return{}}function getMiniGamePluginInfo(t){try{return getMiniGameInfo(t).plugins}catch(t){return{}}}exports.validateProject=validateProject;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);i&&!("get"in i?!e.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var n=t(e),i=0;i<n.length;i++)"default"!==n[i]&&__createBinding(r,e,n[i]);return __setModuleDefault(r,e),r}}(),__exportStar=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||__createBinding(e,t,r)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getTmpDir=getTmpDir;const os=__importStar(require("os")),fse=__importStar(require("fs-extra")),path=__importStar(require("path"));function getTmpDir(){const t=os.tmpdir();return fse.mkdtempSync(path.join(t,"tbapp-"))}__exportStar(require("./standard"),exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MiniApp=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),child_process_1=require("child_process"),lodash_1=require("lodash");class MiniApp{miniappDir;miniProjectJson;appJson;logger;constructor(t,e=console.log){this.miniappDir=t,this.logger=e;const i=path_1.default.join(t,"mini.project.json");if(fs_1.default.existsSync(i)){const t=fs_1.default.readFileSync(i,"utf8");try{this.miniProjectJson=JSON.parse(t)}catch(t){this.miniProjectJson={},console.error("failed to parse mini.project.json")}}else this.miniProjectJson={};this.miniProjectJson.cloud&&!this.miniProjectJson.miniprogramRoot&&(this.miniProjectJson.miniprogramRoot="client",fs_1.default.existsSync(path_1.default.join(t,this.miniProjectJson.miniprogramRoot))||(this.miniProjectJson.miniprogramRoot=""));const s=path_1.default.join(t,this.miniProjectJson.miniprogramRoot||"","app.json");if(fs_1.default.existsSync(s)){const t=fs_1.default.readFileSync(s,"utf8");try{this.appJson=JSON.parse(t)}catch(t){console.error("failed to parse app.json")}}else console.error("cannot find app.json")}getMiniProjectJson(){return this.miniProjectJson}getAppJson(){return this.appJson}getClientRoot(){return(this.isPluginProject()||this.isCloudProject())&&""===(0,lodash_1.get)(this.miniProjectJson,"miniprogramRoot","")?"client":this.miniProjectJson.miniprogramRoot||"."}getPluginRoot(){return this.isPluginProject()&&""===(0,lodash_1.get)(this.miniProjectJson,"pluginRoot","")?"plugin":this.miniProjectJson.pluginRoot||"."}getClientAbsoluteRoot(){return path_1.default.join(this.miniappDir,this.getClientRoot())}getPluginAbsoluteRoot(){return path_1.default.join(this.miniappDir,this.getPluginRoot())}getMiniProgramRoot(){return this.miniProjectJson.miniprogramRoot||"."}getMainUrl(){return"/index.html#"+this.getFirstPage()}getFirstPage(){return this.appJson.pages&&this.appJson.pages[0]||"pages/index/index"}getShopSchemaStr(){const t=path_1.default.join(this.miniappDir,"schema.json");if(!fs_1.default.existsSync(t))return"";{const e=fs_1.default.readFileSync(t,"utf8");try{return JSON.stringify(JSON.parse(e))}catch(t){return console.error("failed to parse schema.json"),""}}}getPreloadJson(){const t=path_1.default.join(this.miniappDir,"preload.json");if(!fs_1.default.existsSync(t))return"";{const e=fs_1.default.readFileSync(t,"utf8");try{return JSON.stringify(JSON.parse(e))}catch(t){return console.error("failed to parse preload.json"),""}}}isTabBarEnable(){const t=this.appJson.tabBar,e=this.getFirstPage();return!(!t||!t.items)&&t.items.filter(t=>t.pagePath===e).length>0}getExtendInfo(){return this.getExtendInfoStr()}getExtendInfoStr(){return JSON.stringify(this.getExtendInfoObj())}getExtendInfoObj(){return{launchParams:{enableTabBar:this.isTabBarEnable()?"YES":"NO",enableJSC:"YES",page:this.getFirstPage(),enableKeepAlive:"YES",enableWK:"YES"}}}isPluginProject(){return"plugin"===(0,lodash_1.get)(this.miniProjectJson,"compileType")}getCompileType(){return(0,lodash_1.get)(this.miniProjectJson,"compileType","mini")}isCloudProject(){return"CLOUDAPP"===(0,lodash_1.get)(this.miniProjectJson,"cloud.type","").toUpperCase()}getBeforePreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforePreBuild")}getPreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.preBuild")}getBeforeUploadScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforeUpload")}getAfterPreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.afterPreBuild")}getBeforeInstallProdScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforeInstallProd")}getAfterInstallProdScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.afterInstallProd")}async getBuildParams(t={}){const{appId:e=""}=t,i=this.getExtendInfoObj(),s=this.getPreloadJson();s&&(i.launchParams.preloadConfig=s);const n={mainUrl:this.getMainUrl(),extraInfo:this.getExtraInfoStr(e),pluginList:JSON.stringify(this.getPluginList()),clientType:"taobao",appType:"tinyApp",extendInfo:JSON.stringify(i),projectJson:JSON.stringify(this.miniProjectJson)};this.miniProjectJson.compileType&&(n.compileType=this.miniProjectJson.compileType);const o=this.getShopSchemaStr();return o&&(n.shopSchema=o,n.formSchema=o),n}getExtraInfoStr(t){return JSON.stringify(this.getExtraInfoObj(t))}getExtraInfoObj(t){return{appId:t,doneCommand:this.getSubPackages().length>0?"buildpacksub":"pack",client:"IDE",fileFormat:"tar",scene:"DEBUG",syncToOffline:!1,tinycliName:"tiny-cli",tinycliVersion:"6.3.2",adaptorName:"taobao"}}getCloudBuildParams(t){const e=[];e.push("--color"),e.push("--limitation"),e.push("false"),e.push("--allowPrecompile"),e.push("--appId"),e.push(t.toString()),this.isPluginProject()&&(e.push("--compileType"),e.push("plugin")),e.push("--enableDistFileMinify"),e.push("--sourceMap"),e.push("false"),e.push("--ADAPTOR_NAME"),e.push("taobao"),this.isPluginProject()&&(e.push("--pluginId"),e.push(t.toString())),e.push("--injectCode"),e.push("{}"),e.push("--preview"),e.push("--scriptName"),this.getSubPackages().length>0?e.push("buildpacksub"):e.push("buildpack");try{!0===this.getMiniProjectJson().enableAppxNg&&(e.push("--project-config-json"),e.push(encodeURIComponent(JSON.stringify({enableAppxNg:!0}))))}catch(t){console.log("获取enableAppxNg报错: ",t.message)}return e}getCloudBuildPluginParams(){return!0===this.getMiniProjectJson().enableAppxNg?[{key:"bugmeng",options:{tinybugme:!0,ignoreWorker:!1,preview:!0}}]:[{key:"tinybugme"}]}getPluginList(){return this.appJson&&this.appJson.plugins?Object.keys(this.appJson.plugins).map(t=>{const e=this.appJson.plugins[t];return{pluginId:e.provider,pluginVersion:e.version}}).filter(t=>"{{currentPluginId}}"!==t.pluginId):[]}getSubPackages(){return this.appJson&&this.appJson.subPackages?this.appJson.subPackages:[]}npmInstall(t=!0){if(fs_1.default.existsSync(path_1.default.join(this.miniappDir,"package.json")))try{(0,child_process_1.execSync)("npm install --registry=https://registry.anpm.alibaba-inc.com "+(t?"--production":""),{cwd:this.miniappDir,encoding:"utf8"})}catch(t){this.logger("failed to install npm dependencies")}else this.logger("仓库中不存在package.json, 跳过安装依赖")}}exports.MiniApp=MiniApp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MemorySourcePackager=void 0;const archiver_1=__importDefault(require("archiver")),fs_extra_1=__importDefault(require("fs-extra")),graceful_fs_1=__importDefault(require("graceful-fs")),path_1=__importDefault(require("path"));var EWalkType;!function(i){i[i.Cache=0]="Cache",i[i.Pack=1]="Pack"}(EWalkType||(EWalkType={}));class MemorySourcePackager{static MEMORY_LIMIT=1073741824;files={};version=1;appendFiles=[];doing=0;fileNumber=0;fileTotalSize=0;taskLock=!1;runMemoryWarm(i){const{input:e}=i;return new Promise(async(i,t)=>{try{await fs_extra_1.default.rmdir(path_1.default.join(e,"node_modules",".cache"))}catch(i){}this.cacheProject(e,()=>{i()},i=>{t(new Error(i))})})}runPackSource(i){const{input:e,output:t,fileName:s,noGzip:o=!1,isPlugin:a,pluginPath:r}=i;return new Promise(async(i,n)=>{const h=path_1.default.join(t,s||(o?"dist.tar":"dist.tar.gz"));await fs_extra_1.default.ensureDir(t),this.packProject(e,h,o,()=>{i(h)},i=>{n(new Error(i))},a,r)})}cacheProject(i,e,t){if(this.taskLock)return void setTimeout(()=>{this.cacheProject(i,e,t)},1e3);this.taskLock=!0,this.clear(),this.version+=1;(new Date).getTime();this.walk(EWalkType.Cache,i,"",()=>{this.taskLock=!1,e()},t)}packProject(i,e,t,s,o,a,r){if(this.taskLock)return void setTimeout(()=>{this.packProject(i,e,t,s,o,a,r)},1e3);this.taskLock=!0,this.clear(),this.version+=1;(new Date).getTime();this.walk(EWalkType.Pack,i,"",()=>{this.pack(e,t,s),this.taskLock=!1},o,a,r)}clear(){this.appendFiles=[],this.doing=0,this.fileNumber=0,this.fileTotalSize=0}walk(i,e,t,s,o,a,r){this.doing+=1,graceful_fs_1.default.readdir(path_1.default.join(e,t),(n,h)=>{if(this.doing-=1,n)throw 0===this.doing&&(this.taskLock=!1),n;h.forEach(n=>{if(".git"!==n&&".tea"!==n&&".svn"!==n&&".bin"!==n&&".node"!==n&&a?n===r:n!==r){const a=path_1.default.join(t,n),r=path_1.default.join(e,a);this.doing+=1,fs_extra_1.default.lstat(r,(t,n)=>{if(this.doing-=1,t)throw 0===this.doing&&(this.taskLock=!1),t;if(n.isSymbolicLink());else if(n.isDirectory())this.walk(i,e,a,s,o);else if(n.isFile()){const i=Number(n.mtime),e=this.files[a],t=n.size;if(this.fileNumber+=1,this.fileTotalSize+=t,this.fileTotalSize>=MemorySourcePackager.MEMORY_LIMIT)return 0===this.doing&&(this.taskLock=!1),void o(`预热文件总大小 ${this.fileTotalSize} 超过限制 ${MemorySourcePackager.MEMORY_LIMIT},打包失败`);e&&e.mtime===i?(e.version=this.version,0===this.doing&&s()):(this.doing+=1,graceful_fs_1.default.readFile(r,(e,o)=>{if(this.doing-=1,e)throw 0===this.doing&&(this.taskLock=!1),e;const r=t>0?o:Buffer.alloc(0);this.files[a]={buffer:r,mtime:i,version:this.version},this.appendFiles.push(a),0===this.doing&&s()}))}})}}),0===this.doing&&s()})}walkPlugin(i,e,t,s,o){this.doing+=1,graceful_fs_1.default.readdir(path_1.default.join(e,t),(a,r)=>{if(this.doing-=1,a)throw 0===this.doing&&(this.taskLock=!1),a;r.forEach(a=>{if(".git"!==a&&".tea"!==a&&".svn"!==a&&".bin"!==a&&".node"!==a&&"cocos-js"===a){const r=path_1.default.join(t,a),n=path_1.default.join(e,r);this.doing+=1,fs_extra_1.default.lstat(n,(t,a)=>{if(this.doing-=1,t)throw 0===this.doing&&(this.taskLock=!1),t;if(a.isSymbolicLink())return 0===this.doing&&(this.taskLock=!1),void o(`打包目录存在软链接 ${n},打包失败,请尝试使用 npm 安装依赖,或手动移除项目内软链`);if(a.isDirectory())this.walkPlugin(i,e,r,s,o);else if(a.isFile()){const i=Number(a.mtime),e=this.files[r],t=a.size;if(this.fileNumber+=1,this.fileTotalSize+=t,this.fileTotalSize>=MemorySourcePackager.MEMORY_LIMIT)return 0===this.doing&&(this.taskLock=!1),void o(`预热文件总大小 ${this.fileTotalSize} 超过限制 ${MemorySourcePackager.MEMORY_LIMIT},打包失败`);e&&e.mtime===i?(e.version=this.version,0===this.doing&&s()):(this.doing+=1,graceful_fs_1.default.readFile(n,(e,o)=>{if(this.doing-=1,e)throw 0===this.doing&&(this.taskLock=!1),e;const a=t>0?o:Buffer.alloc(0);this.files[r]={buffer:a,mtime:i,version:this.version},this.appendFiles.push(r),0===this.doing&&s()}))}})}}),0===this.doing&&s()})}pack(i,e,t){(new Date).getTime();const s=fs_extra_1.default.createWriteStream(i),o=(0,archiver_1.default)("tar",{gzip:!e,gzipOptions:{}});s.on("close",()=>{t()}),o.on("warning",i=>{}),o.on("error",i=>{throw i}),o.pipe(s);for(const i in this.files){const e=this.files[i];e.version===this.version&&o.append(e.buffer,{name:i})}o.finalize()}}exports.MemorySourcePackager=MemorySourcePackager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var a=Object.getOwnPropertyDescriptor(r,t);a&&!("get"in a?!r.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,a)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var i=e(r),a=0;a<i.length;a++)"default"!==i[a]&&__createBinding(t,r,i[a]);return __setModuleDefault(t,r),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.writeDebugCache=exports.writePreviewCache=exports.readDebugCache=exports.readPreviewCache=void 0;const fs=__importStar(require("fs")),path=__importStar(require("path")),store_1=require("../../store"),logger_1=require("../../logger"),logger=(0,logger_1.getLogger)("buildCache"),getCacheFilePath=()=>path.join((0,store_1.getHomeDir)(),"lastBuild.json"),readCacheFile=()=>{const e=getCacheFilePath();try{if(!fs.existsSync(e))return{};const r=fs.readFileSync(e,{encoding:"utf-8"});return JSON.parse(r)||{}}catch(e){return logger.warn("读取构建缓存失败,视为空:",e?.message),{}}},writeCacheFile=e=>{try{fs.writeFileSync(getCacheFilePath(),JSON.stringify(e,null,2),{encoding:"utf-8"})}catch(e){logger.warn("写入构建缓存失败:",e?.message)}},getAppEntry=(e,r,t)=>{const i=e[r];return i&&i.env===t?i:{env:t}},readPreviewCache=(e,r)=>{const t=readCacheFile()[e];return t&&t.env===r&&t.preview?t.preview:null};exports.readPreviewCache=readPreviewCache;const readDebugCache=(e,r)=>{const t=readCacheFile()[e];return t&&t.env===r&&t.debug?t.debug:null};exports.readDebugCache=readDebugCache;const writePreviewCache=(e,r,t)=>{const i=readCacheFile(),a=getAppEntry(i,e,r);a.preview=t,i[e]=a,writeCacheFile(i)};exports.writePreviewCache=writePreviewCache;const writeDebugCache=(e,r,t)=>{const i=readCacheFile(),a=getAppEntry(i,e,r);a.debug=t,i[e]=a,writeCacheFile(i)};exports.writeDebugCache=writeDebugCache;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n=e(t),o=0;o<n.length;o++)"default"!==n[o]&&__createBinding(r,t,n[o]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getWorkspaceBuildDest=exports.BUILD_CACHE_DIRNAME=void 0;const os=__importStar(require("os")),path=__importStar(require("path"));exports.BUILD_CACHE_DIRNAME=".WIDGET_BUILDS";const getBuildCacheDir=()=>{const e=os.tmpdir();return path.join(e,exports.BUILD_CACHE_DIRNAME)},getWorkspaceBuildDest=e=>{const t=getBuildCacheDir();let r;return r=e?path.basename(e):path.basename(process.cwd()),path.join(t,`${r}#${Math.random().toString(36).substring(2)}`)};exports.getWorkspaceBuildDest=getWorkspaceBuildDest;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDevToolsJson=void 0;const node_fetch_1=__importDefault(require("node-fetch")),constants_1=require("../../../constants"),logger_1=require("../../logger"),logger=(0,logger_1.getLogger)("devTools"),getDevToolsJson=async(e,o)=>{const t=o===constants_1.EEnv.PREPUB?"pre":"online",r=`https://hudong.alicdn.com/mt3/v2/api/${t}/config/e27e49d30b7a46718613205dd2630d71.js`,s=await(0,node_fetch_1.default)(r),n=await s.text();let l;try{l=JSON.parse(n)}catch{throw new Error(`解析 devtools.json CDN 响应失败: ${r}`)}const a=l?.[t];if(!a||!a.watchKernelStatusUrl||!a.debugServerUrlPrefix)throw new Error(`devtools.json 缺关键字段(watchKernelStatusUrl / debugServerUrlPrefix),env=${t}`);return logger.info("使用 CDN devtools.json"),a};exports.getDevToolsJson=getDevToolsJson;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.waitDevToolsUrl=void 0;const ws_1=__importDefault(require("ws")),devTools_1=require("./devTools"),logger_1=require("../../logger");require("colors");const logger=(0,logger_1.getLogger)("devToolsWaiter"),SPINNER_FRAMES=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],EVENT_TTL=10;function startWaitSpinner(e,o){const t=!!process.stdout.isTTY,r=Date.now(),s=()=>Math.round((Date.now()-r)/1e3),n=o?` / 上限 ${Math.round(o/1e3)}s`:"";let l;const a=()=>{const o=s(),t=l?o-l.at:1/0,r=l&&t<10?` [${t}s前${l.label}]`:"";return`${e}... ${o}s${n}${r}`};let i,c=0;return i=t?setInterval(()=>{c=(c+1)%SPINNER_FRAMES.length,process.stdout.write(`\r[K${SPINNER_FRAMES[c]} ${a()}`)},100):setInterval(()=>logger.info(a()),3e4),{elapsedSec:s,mark:e=>{l={label:e,at:s()}},stop:()=>{clearInterval(i),t&&process.stdout.write("\r[K")}}}const waitDevToolsUrl=e=>{const o=e.timeoutMs??6e5;return new Promise(async(t,r)=>{let s;try{s=await(0,devTools_1.getDevToolsJson)(e.input,e.env)}catch(e){return void r(e)}const n=`${s.themisWebWsUrlPrefix}/${e.userToken}/${e.channelId}`;logger.debug("握手 WebSocket:",n);const l=new ws_1.default(n),a=startWaitSpinner("等待手机淘宝扫码连接",o);let i;const c=()=>{a.stop(),i&&clearInterval(i)},g=setTimeout(()=>{c(),l.close(),logger.info("✖ 等待扫码超时".red+`(${Math.round(o/1e3)}s)`),r(new Error(`等待手机扫码连接超时(${Math.round(o/1e3)}s)`))},o);l.on("open",()=>{a.mark("握手成功"),i=setInterval(()=>{try{l.ping()}catch{}},25e3)}),l.on("pong",()=>a.mark("Pong")),l.on("close",(e,o)=>{c(),logger.debug(`[ws] 关闭 code=${e} reason=${o?.toString()}`)}),l.on("message",o=>{const r=o.toString();let n;logger.debug("[ws] 收到消息:",r);try{n=JSON.parse(r)}catch{return}const{method:i,params:u}=n||{};if("Dev.pageOpen"===i&&u?.sessionId){const o=`${s.ucKernelDevToolsWsUrlPrefix}/${e.userToken}/${e.channelId}/${u.sessionId}`,r=`${s.devToolsBaseUrl}?wss=${encodeURIComponent(o)}`;clearTimeout(g);const n=a.elapsedSec();c(),l.close(),logger.info("✔ 已连接".green+`,生成 DevTools 地址(用时 ${n}s)`),t(r)}}),l.on("error",e=>{clearTimeout(g),c(),logger.error("[ws] 连接错误:",e?.message||e),r(e)})})};exports.waitDevToolsUrl=waitDevToolsUrl;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.openDevtoolsInBrowser=void 0;const child_process_1=require("child_process"),common_1=require("../../common"),logger_1=require("../../logger"),logger=(0,logger_1.getLogger)("openDevtools"),openDevtoolsInBrowser=(e,o)=>{const r=o||(0,common_1.getDefaultChromePath)();try{const o=(0,child_process_1.spawn)(r,[e],{detached:!0,stdio:"ignore"});o.on("error",e=>{logger.error(`打开 DevTools 失败,请手动复制上方地址到浏览器: ${e.message}`)}),o.unref(),logger.info(`已尝试用 ${r} 打开 DevTools`)}catch(e){logger.error(`打开 DevTools 失败,请手动复制上方地址到浏览器: ${e?.message}`)}};exports.openDevtoolsInBrowser=openDevtoolsInBrowser;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var n=Object.getOwnPropertyDescriptor(r,t);n&&!("get"in n?!r.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,n)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var i=e(r),n=0;n<i.length;n++)"default"!==i[n]&&__createBinding(t,r,i[n]);return __setModuleDefault(t,r),t}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.runPack=void 0;const project_1=require("../../project"),path=__importStar(require("path")),builderFs_1=require("./builderFs"),fs=__importStar(require("fs")),archiver_1=__importDefault(require("archiver")),MemorySourcePackager_1=require("./MemorySourcePackager"),logger_1=require("../../logger"),logger=(0,logger_1.getLogger)("minigame_pack"),runPack=async e=>{const{input:r,cloud:t,isPlugin:i,pluginVersion:n,isUpload:o}=e,a=(0,project_1.getMiniGameInfo)(r),u=(0,project_1.getMiniGamePluginInfo)(r),c=i?u[Object.keys(u)[0]].path:"",l=path.join(r),s=(0,builderFs_1.getWorkspaceBuildDest)(r);if(console.log("runPack sourceDir",i,l),n){const e=(0,project_1.getMiniGameInfo)(r);e.plugins[Object.keys(u)[0]].pluginVersion=n;const i=t?path.join(r,"client/game.json"):path.join(r,"game.json");fs.writeFileSync(i,JSON.stringify(e))}const p=[];if(a.plugins){const e=u[Object.keys(u)[0]];e.pluginVersion=o?n||e.pluginVersion:n?"dev:"+n:e.pluginVersion,p.push(e)}console.log("pluginListArr",p);try{const e=new MemorySourcePackager_1.MemorySourcePackager,r=await e.runPackSource({input:l,output:s,noGzip:!0,isPlugin:i,pluginPath:c}),t=await new Promise((e,t)=>{const i=path.join(s,"dist.amr"),n=fs.createWriteStream(i),o=(0,archiver_1.default)("zip",{zlib:{level:9}});n.on("close",()=>{e(i)}),o.pipe(n),o.file(r,{name:"dist.tar"}),o.finalize()});return console.log("amrPath",i,t),{amrPath:t,pluginList:p}}catch(e){logger.error(e)}};exports.runPack=runPack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.attachExtraParams=exports.attachThemisWebDebugParams=void 0;const url_1=require("url"),constants_1=require("../../../constants"),devTools_1=require("./devTools"),rebuildUrl=(e,r,t)=>{const a=new url_1.URL(e);for(const e of r)a.searchParams.delete(e);for(const e of Object.keys(t))a.searchParams.set(e,t[e]);return a.toString()},attachThemisWebDebugParams=async(e,r,t,a,s)=>{const o=await(0,devTools_1.getDevToolsJson)(t,a),n=`${o.debugServerUrlPrefix}/${s}/${r}`;return rebuildUrl(e,["channelId","tyroId","boat","isRemoteX","_mp_code"],{debugServerUrlPrefix:n,loadUrl:o.watchKernelStatusUrl})};exports.attachThemisWebDebugParams=attachThemisWebDebugParams;const attachExtraParams=(e,r,t,a,s)=>{const o=a===constants_1.EEnv.PREPUB?"pre-":"";return rebuildUrl(e,["channelId","tyroId"],{debugServerUrl:`wss://${o}miniapp-dev.taobao.com/ws/performance/remote_debug_client/${s}`,mainName:"debug",multiAppContext:"false"})};exports.attachExtraParams=attachExtraParams;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var n=Object.getOwnPropertyDescriptor(r,t);n&&!("get"in n?!r.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,n)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var o=e(r),n=0;n<o.length;n++)"default"!==o[n]&&__createBinding(t,r,o[n]);return __setModuleDefault(t,r),t}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setHighPerformanceMode=exports.EGameRenderMode=void 0;const fs=__importStar(require("fs")),path=__importStar(require("path")),node_fetch_1=__importDefault(require("node-fetch")),constants_1=require("../../../constants"),logger_1=require("../../logger"),logger=(0,logger_1.getLogger)("renderMode");var EGameRenderMode;!function(e){e.highPerformanceMode="highPerformance",e.normalMode="normal"}(EGameRenderMode||(exports.EGameRenderMode=EGameRenderMode={}));const setHighPerformanceMode=async e=>{const{appId:r,gameRoot:t,env:o,userSelectRenderMode:n}=e;let a;if(n===EGameRenderMode.normalMode){a=!1;try{const e=`https://hudong.alicdn.com/api/${o===constants_1.EEnv.PREPUB?"pre":"online"}/data/v3/e27e49d30b7a46718613205dd2630d71.js`,t=await(0,node_fetch_1.default)(e),{highPerfModeGames:n=[]}=await t.json();n.find(e=>e.appId===r)&&(a=!0,logger.info("命中平台白名单,已自动覆盖 normal 设置为高性能模式"))}catch(e){logger.warn("failed to check render mode whitelist",e?.message)}}else a=!0;try{const e=path.join(t,"game.json");if(fs.existsSync(e)){const r=JSON.parse(fs.readFileSync(e,{encoding:"utf-8"}));r.highPerformanceMode!==a&&(r.highPerformanceMode=a,fs.writeFileSync(e,JSON.stringify(r),{encoding:"utf-8"}))}}catch(e){logger.warn("setHighPerformanceMode write game.json error",e?.message)}return a};exports.setHighPerformanceMode=setHighPerformanceMode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);i&&!("get"in i?!e.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var n=t(e),i=0;i<n.length;i++)"default"!==n[i]&&__createBinding(r,e,n[i]);return __setModuleDefault(r,e),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBuildProjectPath=getBuildProjectPath;const path=__importStar(require("path")),fse=__importStar(require("fs-extra"));function getMiniProjectJSON(t){try{const e=path.join(t,"mini.project.json");return JSON.parse(fse.readFileSync(e).toString())}catch(t){return{}}}function isCloud(t){try{return!!getMiniProjectJSON(t).cloud}catch(t){return!1}}function getBuildProjectPath(t){return isCloud(t)?path.join(t,"client"):t}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileList=getFileList;const fs=require("fs"),path=require("path"),{promisify:promisify}=require("util"),globPlus=promisify(require("glob")),getProject_1=require("./getProject"),loadFileConfig_1=require("./loadFileConfig");async function getFileList(e,t,i){const{isvCmsConfig:o}=await(0,loadFileConfig_1.getBuildConfig)(t),n=(0,getProject_1.getBuildProjectPath)(t),s=i.map(e=>path.join(n,e)),r=path.join(n,"node_modules"),l=path.join(n,"webview"),a=[];if(await readFile(e,t,a,s,o,r,l),isIsvCmsConfigValid(e,o)){const{webview:e}=o;if("[object Object]"===Object.prototype.toString.call(e)){(await _globFilterFiles(l,e)).map((e,t)=>{const i=path.join(l,e);let o=fs.statSync(i),n=new Object;n.size=o.size,n.name=o.name,n.path=i,a.push(n)})}}let c=0;for(let e=0;e<a.length;e++){c+=a[e].size}return c}async function readFile(e,t,i,o,n,s,r){fs.readdirSync(t).forEach(function(l){if(fs.statSync(t+"/"+l).isDirectory()){if(isIsvCmsConfigValid(e,n)){const{ignoreRootNodeModules:e,webview:i}=n;if((!0===e||"true"===e)&&s===t+"/"+l)return;if("[object Object]"===Object.prototype.toString.call(i)&&r===t+"/"+l)return}readFile(e,t+"/"+l,i,o,n,s,r)}else{if(isIgnored(l,o))return;const e=getFileDetails(path.join(t,l));i.push(e)}})}const _globFilterFiles=async(e,t)=>{const{include:i=[],exclude:o=[]}=t||{},n=await globPlus("**/*",{cwd:e,dot:!0,nodir:!0}),s=await globPlus(`{${o.join(",")}}`,{cwd:e,dot:!0,nodir:!0});return n.filter(t=>{const n=i=>!i.length||i.some(i=>globPlus.sync(i,{cwd:e,dot:!0}).includes(t));return!n(o)&&!s.includes(t)&&n(i)})};function isIgnored(e,t){const i=(0,getProject_1.getBuildProjectPath)(e),o=t.map(e=>path.join(i,e)),n=path.join(i,e);return o.includes(n)}function isIsvCmsConfigValid(e,t){return"isvCms"===e&&"[object Object]"===Object.prototype.toString.call(t)}function getFileDetails(e){return{size:fs.statSync(e).size,name:path.basename(e),path:e}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SimpleZip=void 0;const path_1=__importDefault(require("path")),minimatch_1=__importDefault(require("minimatch")),adm_zip_1=__importDefault(require("adm-zip")),getProjectSize_1=require("./getProjectSize"),loadFileConfig_1=require("./loadFileConfig");class SimpleZip{zip;defaultIgnoreList=[".git",".tea",".svn",".vscode"];ignoreList;bstandardizeBuildType;constructor(i,e){this.zip=new adm_zip_1.default,this.bstandardizeBuildType=i,this.ignoreList=e||this.defaultIgnoreList,this.buildZip=this.buildZip.bind(this)}async isOverLimitSize(i){const e=+(await(0,getProjectSize_1.getFileList)(this.bstandardizeBuildType,i,this.ignoreList)/1048576).toFixed(2);if(e>300){throw new Error(`当前项目的体积${e}MB,最大不能超出300MB, 打包成zip失败`)}return e}async buildZip(i,e,t,o){const s=`开发者项目体积:${await this.isOverLimitSize(i)}MB`;o.info(s);const r=await(0,loadFileConfig_1.ignoreIsvCmsRootNodeModule)(t,i),n=await(0,loadFileConfig_1.globIsvCmsWebview)(t,i),a={};this.ignoreList.map((i,e)=>{a[i]=!0}),r&&(a.node_modules=!0),!1!==n&&(a.webview=n);const l={"开发者项目类型":`开发者项目类型:${this.bstandardizeBuildType}`,"开发者项目上传忽略的配置":`开发者项目上传忽略的默认配置:${JSON.stringify(a)}`};o.info(l.开发者项目类型),o.info(l.开发者项目上传忽略的配置);const d=[];if(a.node_modules){const i="开发者上传忽略项目根目录node_modules文件夹";o.info(i),d.push(i)}this.zip.addLocalFolder(i,void 0,i=>{const e=i.split("/")[0],t=path_1.default.basename(i);if(a.node_modules&&"node_modules"===e)return!1;if(a[t]){if("true"===a[t]||!0===a[t]){const e=`开发者上传忽略项目文件(夹)路径:${i}`;return o.info(e),d.push(e),!1}return!0}if(a.webview&&"webview"===e){const e=path_1.default.relative("webview",i),t=a?.webview?.include||[],s=a?.webview?.exclude||[];let r=!t.length;for(let i=0;i<t.length;i++){const o=t[i];if((0,minimatch_1.default)(e,o)){r=!0;break}}let n=!1;for(let i=0;i<s.length;i++){const t=s[i];if((0,minimatch_1.default)(e,t)){n=!0;break}}const l=r&&!n;if(!l){const e=`开发者上传忽略项目webview部分文件(夹)路径:${i}`;o.info(e),d.push(e)}return l}return!0});return await this.zip.writeZipPromise(e)}}exports.SimpleZip=SimpleZip;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var o=e(t),i=0;i<o.length;i++)"default"!==o[i]&&__createBinding(r,t,o[i]);return __setModuleDefault(r,t),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.globIsvCmsWebview=exports.ignoreIsvCmsRootNodeModule=exports.getBuildConfig=void 0;const fs_extra_1=__importDefault(require("fs-extra")),path_1=__importDefault(require("path")),{createRequire:createRequire}=require("module"),getProject_1=require("./getProject"),_loadModule=(e,t)=>createRequire(path_1.default.resolve((0,getProject_1.getBuildProjectPath)(t),"package.json"))(e),getBuildConfig=async e=>{const t=path_1.default.resolve(e,"build.config.js");let r={};if(fs_extra_1.default.existsSync(t))try{r=await Promise.resolve(`${t}`).then(e=>__importStar(require(e)))}catch(o){r=_loadModule(t,e)}return r};exports.getBuildConfig=getBuildConfig;const ignoreIsvCmsRootNodeModule=async(e,t)=>{if("isvCms"!==e)return!1;const{ignoreRootNodeModules:r}=await(0,exports.getBuildConfig)(t);return!0===r||"true"===r};exports.ignoreIsvCmsRootNodeModule=ignoreIsvCmsRootNodeModule;const globIsvCmsWebview=async(e,t)=>{if("isvCms"!==e)return!1;const{webview:r}=await(0,exports.getBuildConfig)(t);return"[object Object]"===Object.prototype.toString.call(r)&&r};exports.globIsvCmsWebview=globIsvCmsWebview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.compressDir=compressDir,exports.getNewAppJSONConfig=getNewAppJSONConfig,exports.doBuildZip=doBuildZip;const os=require("os"),fse=require("fs-extra"),path=require("path"),archiver=require("archiver"),_1=require(".");async function archiveDistFromOutput(e,t,i=[],r){return new Promise((o,n)=>{fse.ensureDirSync(t);const s=archiver("tar"),a=path.join(t,"dist.tar"),p=fse.createWriteStream(a);s.glob("**",{cwd:e,ignore:i},{}),s.on("finish",()=>{r.info("压缩成tar包完成"),o(a)}),s.on("close",()=>{r.info("压缩成tar包close"),o(void 0)}),s.on("error",e=>{r.info("压缩成tar包出错"),n(e)}),s.pipe(p),s.finalize()})}async function zip(e,t){return new Promise((i,r)=>{const o=fse.mkdtempSync(path.resolve(os.tmpdir(),"tbapp_standard-app-zip-")),n=path.join(o,"dist.zip");fse.ensureFileSync(n);const s=fse.createWriteStream(n),a=archiver("zip",{zlib:{level:9}});a.glob("**",{cwd:e},{}),a.on("finish",()=>{t.info("压缩成zip包完成"),i(n)}),a.on("close",()=>{t.info("压缩成zip包close"),i(void 0)}),a.on("error",e=>{r(e)}),a.pipe(s),a.finalize()})}async function compressDir(e,t,i){const r=fse.mkdtempSync(path.resolve(os.tmpdir(),"tbapp_standard-app-tar-"));i.debug({dirPath:e,tarFolder:r,ignoreList:t});const o=await archiveDistFromOutput(e,r,t,i),n=await zip(r,i);return i.debug({tarFilePath:o,zipFilePath:n}),n}async function getNewAppJSONConfig(e){const{projectPath:t,buildDistPath:i,extensionPath:r,tbtoken:o,appId:n,bstandardizeBuildType:s,env:a,logger:p}=e,{childProcess:c}=this.compiler.startPro({projectPath:t,buildDistPath:i,extensionPath:r,appId:n,tbtoken:o,env:a,bstandardizeBuildType:s,buildEnv:"IDE"});return await new Promise((e,t)=>{c.stdout.on("data",async e=>{p.info(`${e.toString()}`)}),c.on("close",e=>{p.info(`子进程退出指令 ${e}`)}),c.on("message",async i=>{const{type:r,action:o,serverUrl:n,payload:s}=i;if("webpackAction"===r){if("onBuildSuccess"===o&&e("object"==typeof s?s:JSON.parse(s)),"sectionValidateInfo"===o){const e="object"==typeof s?s:JSON.parse(s);p.info(`${JSON.stringify(e)}`)}"onServerFail"!==o&&"onBuildFail"!==o||t("构建失败")}}),c.stderr.on("data",e=>{p.info(`${e.toString()}`)})})}async function doBuildZip(e){const{ignoreList:t,projectPath:i,buildDistPath:r,bstandardizeBuildType:o,logger:n}=e;n.debug("buildParams",e);const s=new _1.SimpleZip(o,t),a=path.resolve(r,"output.zip");return fse.pathExistsSync(a)&&fse.removeSync(a),await s.buildZip(i,a,o,n),a}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getHomeDir=getHomeDir,exports.getConfigPath=getConfigPath,exports.getConfig=getConfig,exports.saveConfig=saveConfig;const fs_extra_1=__importDefault(require("fs-extra")),os_1=__importDefault(require("os")),path_1=__importDefault(require("path")),constants_1=require("../constants");function getHomeDir(){const t=path_1.default.join(os_1.default.homedir(),`.${constants_1.CLI_COMMAND_NAME}`);return fs_extra_1.default.ensureDirSync(t),t}function getConfigPath(){const t=path_1.default.join(getHomeDir(),".config",".config.json");return fs_extra_1.default.ensureFileSync(t),t}function getConfig(){return fs_extra_1.default.readJsonSync(getConfigPath(),{throws:!1})||{}}function saveConfig(t){return fs_extra_1.default.writeJSONSync(getConfigPath(),t)}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@taobao-minigame/cli",
|
|
3
|
+
"version": "0.0.1-beta.1",
|
|
4
|
+
"description": "淘宝开放 CI、CD命令行工具",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ci",
|
|
7
|
+
"cd",
|
|
8
|
+
"cli",
|
|
9
|
+
"automation",
|
|
10
|
+
"tooling",
|
|
11
|
+
"devops",
|
|
12
|
+
"workflow"
|
|
13
|
+
],
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"bin": {
|
|
16
|
+
"tbgame": "./lib/bin.js"
|
|
17
|
+
},
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"adm-zip": "^0.5.10",
|
|
21
|
+
"archiver": "^5.3.1",
|
|
22
|
+
"chalk": "^4.1.2",
|
|
23
|
+
"cli-table3": "^0.6.3",
|
|
24
|
+
"clipboardy": "^2.3.0",
|
|
25
|
+
"colors": "^1.4.0",
|
|
26
|
+
"commander": "^7.0.0",
|
|
27
|
+
"console-png": "^1.2.1",
|
|
28
|
+
"cors": "^2.8.5",
|
|
29
|
+
"form-data": "^4.0.0",
|
|
30
|
+
"fs-extra": "^9.1.0",
|
|
31
|
+
"get-port": "^5.1.1",
|
|
32
|
+
"glob": "8",
|
|
33
|
+
"inquirer": "^7.3.3",
|
|
34
|
+
"lodash": "^4.17.21",
|
|
35
|
+
"minidev": "^2.0.8",
|
|
36
|
+
"minimatch": "^3.1.2",
|
|
37
|
+
"node-fetch": "^2.6.1",
|
|
38
|
+
"puppeteer-core": "^10.1.0",
|
|
39
|
+
"qr-image": "^3.2.0",
|
|
40
|
+
"query-string": "^6.13.8",
|
|
41
|
+
"querystring": "^0.2.1",
|
|
42
|
+
"request": "^2.88.2",
|
|
43
|
+
"superagent": "^6.1.0",
|
|
44
|
+
"tslib": "^2.1.0",
|
|
45
|
+
"unzipper": "^0.10.11",
|
|
46
|
+
"util": "^0.12.5",
|
|
47
|
+
"uuid": "^9.0.1",
|
|
48
|
+
"ws": "^8.16.0"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public",
|
|
52
|
+
"registry": "https://registry.npmjs.org"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
Binary file
|
|
Binary file
|