ttmg-pack 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -257,4 +257,8 @@ remove useless log
257
257
 
258
258
  ## 0.1.3
259
259
 
260
- 优化 unity br 相关问题,支持 CLI 部分测试
260
+ 优化 unity br 相关问题,支持 CLI 部分测试
261
+
262
+ ## 0.1.4
263
+
264
+ 修复 unity br 相关问题,支持 CLI 全部测试,补发版本
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * ==========================================
3
3
  * @Description: ttmg pack
4
- * @Version: 0.1.3
4
+ * @Version: 0.1.4
5
5
  * @Author: zhanghongyang.mocha
6
- * @Date: 2025-11-12 11:31:36
6
+ * @Date: 2025-11-12 11:48:05
7
7
  * ==========================================
8
8
  */
9
- "use strict";var e=require("fs"),s=require("winston"),t=require("path");require("crypto"),require("zlib");var a=require("fs/promises"),i=require("node-fetch"),n=require("acorn"),c=require("glob"),o=require("magic-string"),r=require("esbuild");function d(e){var s=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}}),s.default=e,Object.freeze(s)}var m=d(e),u=d(t);function b(s){e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}const g=new class{constructor(){this.logger=null}init(e,a=!0){this.enableLog=a,this.logger=s.createLogger({level:"info",format:s.format.combine(s.format.timestamp(),s.format.json()),transports:[new s.transports.File({filename:t.join(e,"pack.log")}),new s.transports.Console]})}info(e){this.enableLog&&this.logger.info(e)}error(e){this.enableLog&&this.logger.error(e)}warn(e){this.enableLog&&this.logger.warn(e)}debug(e){this.enableLog&&this.logger.debug(e)}log(e){this.logger.info(e)}setOutput(e){this.output=e}};function l(s){if(!e.existsSync(s))return!1;if(!e.statSync(s).isDirectory())return!1;let a=!0;const i=e.readdirSync(s);for(const n of i){const i=t.join(s,n);if(e.statSync(i).isDirectory()){l(i)||(a=!1)}else a=!1}return!!a&&(e.rmSync(s,{recursive:!0}),!0)}const f="packageConfig.json",p="game.json",k="__GAME__",h=".txt",y="_code",_="_asset",v=62914560,j=["ttmg_odr_high_channel","ttmg_odr_middle_channel","ttmg_odr_normal_channel"],x="independent_package",S="independent_package",w="main_package";function z({rootDir:s,entryDir:a,filterDirs:i}){let n=0;if(!e.existsSync(a))return 0;const c=e.readdirSync(a,{withFileTypes:!0});for(const o of c){const c=t.join(a,o.name);if(o.isDirectory()){const e=t.relative(s,c).replace(/\\/g,"/");i.includes(e)||(n+=z({entryDir:c,filterDirs:i,rootDir:s}))}else o.isFile()&&(n+=e.statSync(c).size)}return n}function $(s){const a=e.readdirSync(s,{withFileTypes:!0});for(const i of a){const a=t.join(s,i.name);if(i.isDirectory())$(a);else if(i.isFile()&&(a.endsWith(".js")||a.endsWith(".js.map")))try{e.unlinkSync(a)}catch(e){}}}function q(s){const a=e.readdirSync(s,{withFileTypes:!0});for(const i of a){const a=t.join(s,i.name);if(i.isDirectory())q(a);else if(i.isFile()&&!a.endsWith(".js")&&!a.endsWith(".js.map"))try{e.unlinkSync(a)}catch(e){}}}const O=["node_modules","__MACOSX"],D=[".DS_Store","Thumbs.db"];function F(s){var a;try{const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8"));return(null===(a=null==n?void 0:n.subpackages)||void 0===a?void 0:a.filter(e=>e.independent))||[]}catch(e){return[]}}function M({entryDir:e}){return z({rootDir:e,entryDir:e,filterDirs:C(e)})}function C(s){var a;const i=t.join(s,p);try{const s=JSON.parse(e.readFileSync(i,"utf8"));return((null===(a=s.subpackages)||void 0===a?void 0:a.map(e=>e.root))||[]).map(e=>e.replace(/^\/|\/$/g,""))}catch(e){return[]}}function P({entryDir:e}){return z({rootDir:e,entryDir:e,filterDirs:[]})}function E(s){const a=t.join(s,p);if(!e.existsSync(a))return"unknown";let i;try{i=JSON.parse(e.readFileSync(a,"utf-8"));const s=null==i?void 0:i.gameEngine;return s||"unknown"}catch(e){return"unknown"}}function N(e){return"unity"===E(e)}function R(e,s){var t,a;const i=N(e);return Object.assign(Object.assign({},s),{build:Object.assign(Object.assign({},s.build),{mainPkgSizeLimit:i?null:null===(t=s.build)||void 0===t?void 0:t.mainPkgSizeLimit,independentSubPkgSizeLimit:i?null:null===(a=s.build)||void 0===a?void 0:a.independentSubPkgSizeLimit})})}async function L(e,s,n=5){const c=[];for(const i of e){const{id:e,packages:n}=i,o=t.join(s,e);await a.mkdir(o,{recursive:!0});for(const e in n){const s=n[e],{code_url:a}=s,i=`${e}.txt`,r=t.join(o,i);c.push({code_url:a,filePath:r,packageName:e})}}await async function(e,s,t){const a=[],i=[];for(const n of s){const c=Promise.resolve().then(()=>t(n));if(a.push(c),e<=s.length){const s=c.then(()=>i.splice(i.indexOf(s),1));i.push(s),i.length>=e&&await Promise.race(i)}}return Promise.all(a)}(n,c,async e=>{const{code_url:s,filePath:t,packageName:n}=e;console.log(`start to download ${n}`);try{const e=await i(s);if(!e.ok)throw new Error(`Failed to fetch ${s}: ${e.statusText}`);const c=Buffer.from(await e.arrayBuffer());await a.writeFile(t,c),console.log(`finish to download ${n}`)}catch(e){console.error(`Error downloading ${n}:`,e)}})}var T={MinisPackagingInfoMap:{sbmg0cldak4bbz86dq:{ClientKey:"sbmg0cldak4bbz86dq",MinisStage:1,MinisURL:"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us",ODRPackages:'{"112":{"asset_md5":"9fe63b5fc31e9b4ccd1ee9fa9ed2913b","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/112_asset/9fe63b5fc31e9b4ccd1ee9fa9ed2913b.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/112_code/ebb1a6d341c0013a445f3dbf2600c9ae.txt","root":"subpackages/112","main":"subpackages/112/game.js"},"116":{"asset_md5":"690814b650564724a235a4f155cfe5e3","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/116_asset/690814b650564724a235a4f155cfe5e3.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/116_code/ddc0d442aef316e3e45cdbac9ccb88eb.txt","root":"subpackages/116","main":"subpackages/116/game.js"},"108":{"asset_md5":"b7b3aeafdd70aed9e77fb2f1554d6675","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/108_asset/b7b3aeafdd70aed9e77fb2f1554d6675.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/108_code/bdac7d266b4a15af9ca109d1673168a6.txt","root":"subpackages/108","main":"subpackages/108/game.js"},"game3":{"asset_md5":"bc4b09b1177a35fd8516b8fd5bb9b4e4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game3_asset/bc4b09b1177a35fd8516b8fd5bb9b4e4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game3_code/7f3c18114afd5b3d4fd8c39dd2481cf1.txt","root":"subpackages/game3","main":"subpackages/game3/game.js"},"game5":{"asset_md5":"6a75dd22dcf0d7c117cfcb03185696e6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game5_asset/6a75dd22dcf0d7c117cfcb03185696e6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game5_code/ed2c8ca8023418099d1232fdc6ac09ae.txt","root":"subpackages/game5","main":"subpackages/game5/game.js"},"main":{"asset_md5":"ecadb8f2a4138a73459e04a8a0c5f470","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/main_asset/ecadb8f2a4138a73459e04a8a0c5f470.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/main_code/3b7a7f0869e5392f1e244eef40ad8abe.txt","root":"subpackages/main","main":"subpackages/main/game.js"},"103":{"asset_md5":"069620ed43643956f6b6448c5d360471","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/103_asset/069620ed43643956f6b6448c5d360471.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/103_code/64a9caf580b6cd991888751e8ea51222.txt","root":"subpackages/103","main":"subpackages/103/game.js"},"other":{"asset_md5":"473ad574dee1813610988dba22fb0acc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/other_asset/473ad574dee1813610988dba22fb0acc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/other_code/003784b887ff99fb82d47899798e1ee0.txt","root":"subpackages/other","main":"subpackages/other/game.js"},"resSps":{"asset_md5":"4e72c930e3c8f77bda25be975e3c8019","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/resSps_asset/4e72c930e3c8f77bda25be975e3c8019.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/resSps_code/c6ac2ebde3c8c421ca75ff649280d90b.txt","root":"subpackages/resSps","main":"subpackages/resSps/game.js"},"111":{"asset_md5":"3452f073e30ecc6b3727f072a856068b","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/111_asset/3452f073e30ecc6b3727f072a856068b.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/111_code/3ca9e57876b82945faedce2ca0ab414e.txt","root":"subpackages/111","main":"subpackages/111/game.js"},"117":{"asset_md5":"60206e41273a6a1f6d21bbf634023962","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/117_asset/60206e41273a6a1f6d21bbf634023962.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/117_code/1a85a85048eca0d650ad4b8b198cefdc.txt","root":"subpackages/117","main":"subpackages/117/game.js"},"__GAME__":{"asset_md5":"dbee9c4f704800eb5bf482be01aecadc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/__GAME___asset/dbee9c4f704800eb5bf482be01aecadc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/__GAME___code/b42b2a68ce373eb274eedc22351aac02.txt","root":"","main":"game.js"},"jigsaw":{"asset_md5":"4782715dda5ea0d10897d866a84bca19","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/jigsaw_asset/4782715dda5ea0d10897d866a84bca19.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/jigsaw_code/799004f65797d4620549e0d4b27e3794.txt","root":"subpackages/jigsaw","main":"subpackages/jigsaw/game.js"},"newYear":{"asset_md5":"c2cb90fbaac0b4b86d1afa7caabd2f20","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/newYear_asset/c2cb90fbaac0b4b86d1afa7caabd2f20.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/newYear_code/a7d962b4f7a95e8114fcf00bbe27b8ac.txt","root":"subpackages/newYear","main":"subpackages/newYear/game.js"},"adapter":{"asset_md5":"a44f0cd93ad08da6db427c9dc3ab6fe4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/adapter_asset/a44f0cd93ad08da6db427c9dc3ab6fe4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/adapter_code/6c3090ba10c12ad637aefa993fe838fc.txt","root":"subpackages/adapter","main":"subpackages/adapter/game.js"},"101":{"asset_md5":"ad3f476d334e695c01f96eef67308f26","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/101_asset/ad3f476d334e695c01f96eef67308f26.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/101_code/dcb5f8547d5285c5e116a1726dc1ecdb.txt","root":"subpackages/101","main":"subpackages/101/game.js"},"102":{"asset_md5":"8b39712d9f0ae7549382da9041cc5f56","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/102_asset/8b39712d9f0ae7549382da9041cc5f56.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/102_code/b70fb4ea0d05b866a4a32ab4cae418c4.txt","root":"subpackages/102","main":"subpackages/102/game.js"},"110":{"asset_md5":"24da51736441ceb88b3d331775004551","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/110_asset/24da51736441ceb88b3d331775004551.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/110_code/f7c97cb3aed7acb4091feaf613c56dd3.txt","root":"subpackages/110","main":"subpackages/110/game.js"},"114":{"asset_md5":"c2f81aaf93311b9302995dba105d69d0","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/114_asset/c2f81aaf93311b9302995dba105d69d0.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/114_code/7574a218fb4053e2005497d84a56132c.txt","root":"subpackages/114","main":"subpackages/114/game.js"},"practice":{"asset_md5":"01d63b100e2cfb80d2d7568d11f346f8","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/practice_asset/01d63b100e2cfb80d2d7568d11f346f8.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/practice_code/2275ac8e93d1c5dd100427aa948cd23c.txt","root":"subpackages/practice","main":"subpackages/practice/game.js"},"zh_CN":{"asset_md5":"2b1c715a0c624c630acb29b4fdfcb240","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/zh_CN_asset/2b1c715a0c624c630acb29b4fdfcb240.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/zh_CN_code/bb44d46f30e57f29d20bf0678426c7c5.txt","root":"subpackages/zh_CN","main":"subpackages/zh_CN/game.js"},"107":{"asset_md5":"652c5385223642c4a19f823666c8a682","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/107_asset/652c5385223642c4a19f823666c8a682.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/107_code/9e717b17251bdc8eefb7b8135fcb6996.txt","root":"subpackages/107","main":"subpackages/107/game.js"},"113":{"asset_md5":"f53882a23326919614b0e9031d28ed39","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/113_asset/f53882a23326919614b0e9031d28ed39.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/113_code/666bb07aea74f0a408136c0ac16a04b8.txt","root":"subpackages/113","main":"subpackages/113/game.js"},"115":{"asset_md5":"6831f12abfeccc9ff720155d9ece2d53","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/115_asset/6831f12abfeccc9ff720155d9ece2d53.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/115_code/76b85e96a57c33c8ba9ff2f316290416.txt","root":"subpackages/115","main":"subpackages/115/game.js"},"118":{"asset_md5":"f787456ee45eccc4c13f20ee21c61858","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/118_asset/f787456ee45eccc4c13f20ee21c61858.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/118_code/e595f8ed244752fe2ddc72def8452cd5.txt","root":"subpackages/118","main":"subpackages/118/game.js"},"chapter":{"asset_md5":"9c4b6cb8dc0b39bfcb275efa0c6b8493","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/chapter_asset/9c4b6cb8dc0b39bfcb275efa0c6b8493.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/chapter_code/9ee175f09ca69c65b630cfee23c0e42c.txt","root":"subpackages/chapter","main":"subpackages/chapter/game.js"},"sound":{"asset_md5":"65c37817ffc86d942d1942443b5e3fb4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/sound_asset/65c37817ffc86d942d1942443b5e3fb4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/sound_code/2662512b5aaa6801b6742eb661c44828.txt","root":"subpackages/sound","main":"subpackages/sound/game.js"},"105":{"asset_md5":"82c8cde04fec4456ac6bab8adaef0028","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/105_asset/82c8cde04fec4456ac6bab8adaef0028.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/105_code/74e319194a7f5a204504fc3d83131112.txt","root":"subpackages/105","main":"subpackages/105/game.js"},"109":{"asset_md5":"926ebc459e3329a4d9cda7ddf9718bf4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/109_asset/926ebc459e3329a4d9cda7ddf9718bf4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/109_code/19cbdc3d88a72dbd0c5eb52e89e2635a.txt","root":"subpackages/109","main":"subpackages/109/game.js"},"game2":{"asset_md5":"9f1bb086f7587aada8312315f2dd94fc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game2_asset/9f1bb086f7587aada8312315f2dd94fc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game2_code/49d07e848cae8eb08428bfbf225a6f30.txt","root":"subpackages/game2","main":"subpackages/game2/game.js"},"game6":{"asset_md5":"b1407de78d19f60644b53436f1791ee6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game6_asset/b1407de78d19f60644b53436f1791ee6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game6_code/155651953a65a663f67b95475cd5c941.txt","root":"subpackages/game6","main":"subpackages/game6/game.js"},"prefab":{"asset_md5":"4c4ba8d442bae683575460e884ddba00","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/prefab_asset/4c4ba8d442bae683575460e884ddba00.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/prefab_code/7f037cd7f3b83e90765e749d28f32e3e.txt","root":"subpackages/prefab","main":"subpackages/prefab/game.js"},"104":{"asset_md5":"160c617e3e3adef19c94f57bc4520dba","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/104_asset/160c617e3e3adef19c94f57bc4520dba.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/104_code/ef86df3a24fca9ecffc55f7c33ff3747.txt","root":"subpackages/104","main":"subpackages/104/game.js"},"106":{"asset_md5":"b22052c8f569db2f00a2ae6fcb8872e6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/106_asset/b22052c8f569db2f00a2ae6fcb8872e6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/106_code/f13ed6653a2ebb49703d0bc882255cfd.txt","root":"subpackages/106","main":"subpackages/106/game.js"},"game4":{"asset_md5":"b98a8892ccb76e5999cbf7a8e81c4cb5","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game4_asset/b98a8892ccb76e5999cbf7a8e81c4cb5.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game4_code/ebbcf2b74998d340cb8cf85249748992.txt","root":"subpackages/game4","main":"subpackages/game4/game.js"}}',UpdatedTime:1756716749e3,AssetType:1}}};const A={name:"project",dimension:"project"};function J(s,a){g.info("start check project");const i=function(e,s){g.info("start check project size");const{build:{pkgSizeLimit:t},dev:a}=s,i=null==a?void 0:a.enable,n=P({entryDir:e}),c=(n/1048576).toFixed(2),o=(t/1048576).toFixed(2);if(n>t){const e=`Check project size failed, size: ${c}MB, must not exceed ${o}MB`;if(g.error(e),i)return console.log("%s",e),Object.assign({passed:!1,msg:e,type:"size",size:n},A);throw new Error(e)}{const e=`Check project size successfully, size: ${c}MB`;return g.info(e),Object.assign({passed:!0,msg:e,name:"project",type:"size",size:n},A)}}(s,a),n=function(s,a){var i;g.info("start check config");const n=t.join(s,p);if(e.existsSync(n)){const e="Check game.json config successfully";return g.info(e),Object.assign({passed:!0,msg:e,file:p,type:"config"},A)}{const e="Can not find game.json in game source code, please check it";if(g.error(e),null===(i=null==a?void 0:a.dev)||void 0===i?void 0:i.enable)return console.log("%s",`❗️ ${e}`),Object.assign({passed:!1,msg:e,type:"config",file:p},A);throw new Error(e)}}(s,a),c=[i,n];return c.every(e=>e.passed)&&g.info("check project successfully"),c}const B={name:"main",dimension:"main_package"};function G(e,s){var t;const a=[];return g.info("start check main package"),a.push(function({entryDir:e,config:s}){var t;g.info("start check main package entry");const a=u.join(e,"game.js");if(!m.existsSync(a)){const e="Check main package entry failed, game.js must exist in main package!";if(g.error(e),null===(t=s.dev)||void 0===t?void 0:t.enable)return console.log("%s",e),Object.assign({passed:!1,msg:e,type:"config",file:"game.js"},B)}return g.info("check game.js successfully"),Object.assign({passed:!0,msg:"Check main package entry successfully, game.js must exist in main package!",type:"config",file:"game.js"},B)}({entryDir:e,config:s})),(null===(t=s.build)||void 0===t?void 0:t.mainPkgSizeLimit)&&a.push(function({entryDir:e,config:s}){g.info("start check main package size");const{build:t,dev:a}=s,i=M({entryDir:e}),n=(i/1048576).toFixed(2),c=(t.mainPkgSizeLimit/1048576).toFixed(2);if(i>t.mainPkgSizeLimit){const e=`Check main package size failed, main package size ${n}MB, must not exceed ${c}MB`;if(g.error(e),null==a?void 0:a.enable)return console.log("%s",`❗️ ${e}`),Object.assign({passed:!1,msg:e,size:i,type:"size"},B);throw new Error(e)}return Object.assign({passed:!0,msg:`Check main package size successfully, size: ${n}MB`,size:i,type:"size"},B)}({entryDir:e,config:s})),a.every(e=>e.passed)&&g.info("Check main package successfully"),a}const W={name:"subpackage",dimension:"subpackage"};function I(s,a){const i=[];g.info("start check subpackages in game.json");const n=function(s){var a;try{const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8"));return(null===(a=null==n?void 0:n.subpackages)||void 0===a?void 0:a.filter(e=>!e.independent))||[]}catch(e){return[]}}(s);return n.forEach(n=>{var c,o;if(n.name&&n.root)i.push(Object.assign({passed:!0,msg:`Check subpackage<${n.name}> config successfully`,type:"config",file:p},W));else{const e="Check subpackages config failed, the subpackages configuration in game.json is invalid: the root or name field in one or more subpackages is empty. Please ensure that all subpackages have non-empty root and name values.";if(g.error(e),!(null===(c=null==a?void 0:a.dev)||void 0===c?void 0:c.enable))throw new Error(e);console.log("%s",`❗️ ${e}`),i.push(Object.assign({passed:!1,msg:e,type:"config",file:p},W))}const r=t.join(s,n.root);if(e.existsSync(r))i.push(Object.assign({passed:!0,msg:`Check subpackage<${n.name}> config successfully`,type:"config",file:p},W));else{const e=`Check subpackage<${n.name}> config failed, the subpackages configuration in game.json is invalid: can not find subpackage ${n.name} entry dir, please check it`;if(g.error(e),!(null===(o=null==a?void 0:a.dev)||void 0===o?void 0:o.enable))throw new Error(e);console.log("%s",`❗️ ${e}`),i.push(Object.assign({passed:!1,msg:e,type:"config",file:p},W))}}),i.length&&i.every(e=>e.passed)&&g.info("Check subpackages config successfully"),i}const U={dimension:x};function Y(s,a){var i;const n=null===(i=null==a?void 0:a.dev)||void 0===i?void 0:i.enable,c=[];g.info("start check independent subpackages in game.json");return F(s).forEach(i=>{var o;if(i.name&&i.root)c.push(Object.assign(Object.assign({},U),{passed:!0,msg:`Check independent package<${i.name}> config successfully`,type:"config",file:p,name:i.name}));else{const e="Check independent subpackages config failed, the subpackages configuration in game.json is invalid: the root or name field in one or more independent subpackages is empty. Please ensure that all independent subpackages have non-empty root and name values.";if(g.error(e),!n)throw new Error(e);console.log("%s",`❗️${e}`),c.push(Object.assign(Object.assign({},U),{passed:!1,msg:e,type:"config",file:p,name:i.name}))}const r=t.join(s,i.root);if(e.existsSync(r))c.push({passed:!0,msg:`Check independent package<${i.name}> config successfully`,type:"config",file:p,dimension:x,name:i.name});else{const e=`Check independent package<${i.name}> config failed, the subpackages configuration in game.json is invalid: can not find subpackage ${i.name} entry dir, please check it`;if(g.error(e),!n)throw new Error(e);console.log("%s",`❗️ ${e}`),c.push(Object.assign(Object.assign({},U),{passed:!1,msg:e,type:"config",file:p,name:i.name}))}const d=null===(o=null==a?void 0:a.build)||void 0===o?void 0:o.independentSubPkgSizeLimit;if(d){const e=function({entryDir:e,limit:s,pkgName:t,dimension:a}){const i=z({rootDir:e,entryDir:e,filterDirs:[]}),n=i<=s,c=i/1024/1024,o=s/1024/1024;return{passed:n,msg:n?`Check package ${t} size ${c.toFixed(2)}MB check successfully`:`Check package ${t} size ${c.toFixed(2)}MB exceeds limit ${o.toFixed(2)}MB`,type:"size",size:i,dimension:a,name:t}}({entryDir:r,pkgName:i.name,limit:d,dimension:x});if(c.push(e),g.info(e.msg),!e.passed){if(!n)throw new Error(e.msg);console.log("%s",`❗️ ${e.msg}`)}}}),c.length&&c.every(e=>e.passed)&&g.info("Check independent subpackages config successfully"),c}const V=[{name:"login",desc:"Login to get open id"},{name:"createRewardedVideoAd",desc:"Integrate rewarded video ads"},{name:"addShortcut",desc:"Add game shortcut to home screen"},{name:"getShortcutMissionReward",desc:"Get shortcut mission reward"},{name:"startEntranceMission",desc:"Jump to TikTok personal sidebar"},{name:"getEntranceMissionReward",desc:"Get entrance mission reward"}];function K(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}async function X({entryDir:s,config:a}){g.info("开始校验项目");const i=J(s,a),n=G(s,a),c=I(s,a),o=Y(s,a),r=function({entryDir:s,config:a}){var i;if(!(null===(i=null==a?void 0:a.build)||void 0===i?void 0:i.enableAPICheck))return[];const n=[".js",".ts"],c=new Map(V.map(({name:e})=>{const s=[`\\b${K(e)}\\b`,`\\.${K(e)}\\s*\\(`,`\\b${K(e)}\\s*:\\s*`,`\\b${K(e)}\\s*=`,`\\b${K(e)}\\s*\\(`].join("|");return[e,new RegExp(s,"m")]})),o=new Map;for(const{name:e}of V)o.set(e,new Set);const r=[s];for(;r.length;){const s=r.pop();if(e.statSync(s).isDirectory()){const a=t.basename(s);if(["node_modules",".git","dist","build","out",".cache"].includes(a))continue;const i=e.readdirSync(s);for(const e of i)r.push(t.join(s,e));continue}const a=t.extname(s).toLowerCase();if(!n.includes(a))continue;let i="";try{i=e.readFileSync(s,"utf8")}catch(e){continue}if(!(i.length>5e6))for(const{name:e}of V)c.get(e).test(i)&&o.get(e).add(s)}return V.map(({name:e})=>{const s=Array.from(o.get(e)||[]);return{name:e,msg:s.length>0?`${e} integrated!`:`${e} not integrated!`,passed:s.length>0,files:s,type:"api",required:!1,dimension:"project"}})}({entryDir:s,config:a});return[...i,...n,...c,...o,...r]}async function Z(s,a){g.info("开始基于源代码中的 game.json 生成 packageConfig.json");const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8")),c={},o=[{value:k,label:"Main (Main package)",type:w}];c[k]={url:"",md5:"",root:"",main:"game.js",output:`${k}${h}`},function(e){if(!e||0===e.length)return[];function s(e){return String(e).replace(/^\/+|\/+$/g,"")}function a(e){return i(e)?t.join(e,"game.js").replace(/\\/g,"/"):e}function i(e){return e.endsWith("/")||!/\.[a-zA-Z0-9]+$/.test(e)}function n(e){return e.replace(/^\/+|\/+$/g,"")}return e.map(e=>{const t=s(e.name);return{main:a(e.root),root:n(e.root),name:t,independent:e.independent||!1}})}(n.subpackages).forEach(({name:e,root:s,main:t,independent:a})=>{c[e]={url:"",md5:"",root:s,main:t,output:`${e}${h}`,independent:a},a&&o.push({value:e,label:`${e} (Independent package)`,type:S})});const r={packages:c,fyf_packages:o};return e.existsSync(a)&&e.rmSync(a,{recursive:!0}),e.mkdirSync(a),e.writeFileSync(t.join(a,f),JSON.stringify(r,null,2)),g.info("基于源代码中的 game.json 生成 packageConfig.json 成功"),r}function H(e){const s=[];return Object.values(e).forEach(e=>{Object.values(e).forEach(e=>{s.push(...e)})}),s}function Q({entry:s,root:a,exts:i=[".js",".ts",".jsx",".tsx"],excludeDirs:n=[]}){let c=[];if(!e.existsSync(s))return c;const o=e.readdirSync(s,{withFileTypes:!0});for(const e of o){const o=t.join(s,e.name);if(e.isDirectory()){const e=t.relative(a,o).replace(/\\/g,"/");if(n.find(s=>s===e))continue;c=c.concat(Q({entry:o,root:a,exts:i,excludeDirs:n}))}else i.some(s=>e.name.endsWith(s))&&c.push(o)}return c}function ee(s,a){const i=function(s){return e.readdirSync(s).filter(a=>{const i=t.join(s,a);return e.statSync(i).isDirectory()&&!["node_modules","dist","build","output"].includes(a)}).map(e=>e+"/")}(s),o=c.sync("**/*.js",{cwd:s,ignore:[]}),r=[];o.forEach(a=>{const c=t.join(s,a),o=e.readFileSync(c,"utf-8");let d;try{d=n.parse(o,{ecmaVersion:"latest",sourceType:"module"})}catch(e){return}se(d,a=>{if("CallExpression"===a.type&&"Identifier"===a.callee.type&&("require"===a.callee.name||"requireAsync"===a.callee.name)&&a.arguments.length>0&&"Literal"===a.arguments[0].type&&"string"==typeof a.arguments[0].value){const n=a.arguments[0].value;let o=null;if(n.startsWith("."))o=t.resolve(t.dirname(c),n);else if(n.startsWith("/"))o=t.resolve(s,"."+n);else for(const e of i)if(n.startsWith(e)){o=t.resolve(s,n);break}o&&!function(s){if(e.existsSync(s)&&e.statSync(s).isFile())return!0;const t=[".js",".ts",".jsx",".tsx"];for(const a of t)if(e.existsSync(s+a)&&e.statSync(s+a).isFile())return!0;return!1}(o)&&(o=null),r.push({file:t.relative(s,c),callee:a.callee.name,requirePath:n,resolvedPath:o?t.relative(s,o):""})}})});const d=r.map(e=>{let s="";Object.keys(a).forEach(t=>{e.resolvedPath&&e.resolvedPath.startsWith(a[t].root)&&(s=t)});let t="";return Object.keys(a).forEach(s=>{e.file.startsWith(a[s].root)&&(t=s)}),Object.assign(Object.assign({},e),{curModule:t,depModule:s})}),m=[".js",".ts",".jsx",".tsx"];return d.reduce((e,s)=>{return e[s.curModule]||(e[s.curModule]={}),s.curModule===s.depModule||s.resolvedPath&&(t=s.resolvedPath,m.some(e=>t.endsWith(e)))&&(e[s.curModule]=Object.assign(Object.assign({},e[s.curModule]),{[s.resolvedPath]:s.depModule})),e;var t},{})}function se(e,s){s(e);for(let t in e)if(e.hasOwnProperty(t)){const a=e[t];Array.isArray(a)?a.forEach(e=>e&&"string"==typeof e.type&&se(e,s)):a&&"string"==typeof a.type&&se(a,s)}}async function te({pkgRoot:s,destRoot:a,packedFiles:i,gameEntry:n,gameOutput:c,skipDirs:o=[],isRoot:r=!0}){if(!e.existsSync(s))return;const d=e.readdirSync(s,{withFileTypes:!0});for(const r of d){const d=t.join(s,r.name),m=t.join(a,r.name),u=t.join(s,r.name);if(r.isDirectory()){const e=t.relative(n,u).replace(/\\/g,"/");if(o.find(s=>s===e))continue}r.isDirectory()?te({pkgRoot:d,destRoot:m,gameOutput:c,packedFiles:i,gameEntry:n,skipDirs:o,isRoot:!1}):(b(t.dirname(m)),i.includes(t.relative(n,d).replace(/\\/g,"/"))||e.copyFileSync(d,m))}}function ae(e){const s=[];return e&&s.push(...Object.values(e).map(e=>e.root)),s}async function ie({gameEntry:s,gameOutput:a,config:i}){let n=Date.now();!function(s){!function s(a){let i;try{i=e.readdirSync(a)}catch(e){return void g.warn(`无法访问目录: ${a}, ${e.message}`)}i.forEach(i=>{const n=t.join(a,i);try{const t=e.statSync(n);t.isDirectory()?O.includes(i)?(e.rmSync(n,{recursive:!0,force:!0}),g.info(`已删除无用目录: ${n}`)):s(n):t.isFile()&&D.includes(i)&&(e.rmSync(n,{force:!0}),g.info(`已删除无用文件: ${n}`))}catch(e){g.warn(`无法处理: ${n}, ${e.message}`)}})}(s)}(s),g.info(`pack start,startTime:${n}`);const{packages:c}=await Z(s,a),d=ee(s,c),m=function(e,s){g.info("开始基于游戏源代码收集分包中的 JS 文件");const a={},i=Object.values(s).filter(e=>e.root&&""!==e.root).map(e=>e.root).filter(Boolean),n=Array.from(new Set(i));for(const i in s){const c=s[i];let o,r;"__GAME__"===i?(r=Q({entry:e,root:e,exts:[".js",".ts",".jsx",".tsx"],excludeDirs:n}),o=e):(o=t.join(e,c.root),r=Q({entry:o,root:o,exts:[".js",".ts",".jsx",".tsx"],excludeDirs:[]}));const d=[];r.forEach(s=>{d.push(t.relative(e,s).replace(/\\/g,"/"))});const m=s[i].root;a[i]={[m?`${m}/game.pack.js`:"game.pack.js"]:d}}return g.info("基于游戏源代码收集分包中的 JS 文件完成"),a}(s,c);return await async function(e,s,t){const a=[],i=[];for(const n of s){const c=Promise.resolve().then(()=>t(n));if(a.push(c),e<=s.length){const s=c.then(()=>{i.splice(i.indexOf(s),1)});i.push(s),i.length>=e&&await Promise.race(i)}}return Promise.all(a)}(10,Object.keys(m),async n=>{g.info(`开始基于游戏源代码打包,包名:${n}`);let u=Date.now();const f=c[n],p=t.join(s,f.root),k=t.join(a,n,f.root);await function({gameEntry:s,pkgName:a,allDeps:i,allMaps:n,pkgConfig:c,destRoot:d,config:m}){var u,l,f,p;let k=Date.now();g.info(`pack start,startTime:${k}`);const h=n[a],y={main:c.main,deps:i[a]||{},map:n[a]};b(d),e.writeFileSync(t.join(d,"moduleConfig.json"),JSON.stringify(y));for(const i in h){const n=h[i];if(!Array.isArray(n)||0===n.length)continue;const c=new o.Bundle({separator:"\n"});for(const a of n){const n=t.join(s,a);if(e.existsSync(n)&&t.basename(n)!==i&&/\.js$/i.test(a))try{const{code:s}=r.transformSync(e.readFileSync(n,"utf-8"),{loader:"js",format:"cjs",target:"es2015"}),t=a.replace(/\\/g,"/"),i=`define("game:${t}", ["require", "requireAsync", "module", "exports", "sandboxGlobal"], function(require, requireAsync, module, exports, sandboxGlobal){\nwith(sandboxGlobal){\n`,d="\n}\n});\n",m=new o(s,{filename:t});m.prepend(i),m.append(d),c.addSource({content:m,filename:t})}catch(e){g.error(`pack error, relPath:${a},e:${e}`)}}const b=t.join(d,t.basename(i)),k=c.toString();if(null===(u=null==m?void 0:m.dev)||void 0===u?void 0:u.enableSourcemap){const s=c.generateMap({hires:!0,includeContent:!0,file:t.basename(i)});if(null===(l=null==m?void 0:m.dev)||void 0===l?void 0:l.inlineSourcemap){const t=k+`\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(s.toString()).toString("base64")}`+`\n//# sourceURL=${i}`;e.writeFileSync(b,t,"utf-8")}else{const a=`http://${null===(f=null==m?void 0:m.dev)||void 0===f?void 0:f.host}:${null===(p=null==m?void 0:m.dev)||void 0===p?void 0:p.port}/game/files`,n=t.basename(i)+".map",c=t.join(d,n);e.writeFileSync(c,s.toString(),"utf-8");const o=k+`\n//# sourceMappingURL=${a}/${i}.map`+`\n//# sourceURL=${i}`;e.writeFileSync(b,o,"utf-8")}}else{const s=k+`\n//# sourceURL=${i}`;e.writeFileSync(b,s,"utf-8")}g.info(`pack end,packName:${a}`)}}({gameEntry:s,allDeps:d,allMaps:m,pkgName:n,pkgConfig:f,destRoot:k,config:i}),await te({gameEntry:s,gameOutput:a,pkgRoot:p,destRoot:k,packedFiles:H(m),skipDirs:ae(c)});l(t.join(a,n)),g.info(`基于游戏源代码打包分包完成,包名:${n}`),g.info(`基于游戏源代码打包分包耗时,包名:${n},耗时:${Date.now()-u}ms`)}),g.info(`pack end,duration:${Date.now()-n}ms`),{}}exports.buildOdrPkgs=async function({tempDir:s}){e.existsSync(s)&&e.rmSync(s,{recursive:!0}),e.mkdirSync(s);const a=function(){const{MinisPackagingInfoMap:e}=T;return Object.keys(e).map(s=>({id:s,packages:JSON.parse(e[s].ODRPackages)}))}();g.info("odr_games"),await L(a,s);const i={};for(const e of a){const{id:a}=e,n=t.join(s,a);i[a]=z({rootDir:s,entryDir:n,filterDirs:[]})}const n={};j.forEach(e=>{n[e]=[]});const c={};for(const o of a){const{id:a,packages:r}=o,d=i[a];if(d>v)continue;let m=null;for(const c of j){const o=t.join(s,c);e.existsSync(o)||e.mkdirSync(o);if(n[c].reduce((e,s)=>e+i[s],0)+d<=v){const i=t.join(s,a),r=t.join(o,a);e.cpSync(i,r,{recursive:!0}),n[c].push(a),m=c;break}}if(m){c[a]={tag:m,packages:{}};for(const e in r){const s=r[e];g.info(`TTMGODRConfig[gameId].packages, ${s}, ${e}`),c[a].packages[e]={root:s.root,main:s.main,asset_md5:s.asset_md5,asset_url:s.asset_url}}console.log(`finish to build ${a}`),e.rmSync(t.join(s,a),{recursive:!0})}}const o=t.join(s,"TTMG_ODR_CONFIG.json");e.writeFileSync(o,JSON.stringify(c,null,2),"utf-8"),g.info(`TTMG_ODR_CONFIG.json 已生成: ${o}`)},exports.buildPkgs=async function(s){const{entry:a,output:i,build:n}=s;let c=Date.now();g.init(i,!0),g.info("TTMG_PACK_VERSION: 0.1.3"),g.info(`pack start, startTime:${c}`);const o=R(a,s);await X({entryDir:a,config:o}),await ie({config:o,gameEntry:a,gameOutput:i}),(null==n?void 0:n.enableOdr)&&await async function(s){let a=Date.now();g.info(`makeOdrPkgs start, ${a}`);const i=t.join(s,f),n=JSON.parse(e.readFileSync(i,"utf-8")),c=n.packages;for(const a in c){const i=t.join(s,a),n=t.join(s,`${a}${y}`),o=t.join(s,`${a}${_}`);b(n),b(o),e.cpSync(i,n,{recursive:!0}),e.cpSync(i,o,{recursive:!0}),q(n),$(o),c[`${a}${y}`]=Object.assign(Object.assign({},c[a]),{code_url:"",code_md5:"",output:`${a}${y}${h}`}),c[`${a}${_}`]=Object.assign(Object.assign({},c[a]),{asset_url:"",asset_md5:"",output:`${a}${_}${h}`})}e.writeFileSync(i,JSON.stringify(n,null,2)),g.info(`makeOdrPkgs end, ${Date.now()-a}ms`)}(i),g.info(`pack end:${Date.now()-c}ms`)},exports.checkPkgs=X,exports.debugPkgs=async function(s){const{entry:a,output:i,dev:{enableLog:n}}=s;g.init(i,n);const c=R(a,s);try{const s=await X({entryDir:a,config:c});await ie({gameEntry:a,gameOutput:i,config:c}),await async function(s){g.info("mergePkgs start");const a=t.join(s,f);let i;try{i=JSON.parse(e.readFileSync(a,"utf-8"))}catch(e){return void g.error(`读取配置文件失败: ${a}, err: ${e.message}`)}const n=i.packages;if(n&&"object"==typeof n){for(const a of Object.keys(n)){const i=t.join(s,a);if(!e.existsSync(i)){g.warn(`package 目录不存在: ${i}`);continue}const n=await e.promises.readdir(i);for(const a of n){const n=t.join(i,a),c=t.join(s,a);try{const s=await e.promises.stat(n);if(s.isFile())await e.promises.copyFile(n,c),await e.promises.rm(n,{recursive:!0,force:!0});else if(s.isDirectory())await e.promises.cp(n,c,{recursive:!0}),await e.promises.rm(n,{recursive:!0,force:!0});else if(s.isSymbolicLink()){const t=e.readlinkSync(n);e.existsSync(c)&&await e.promises.rm(c,{force:!0}),await e.promises.symlink(t,c,s.isDirectory()?"dir":"file")}g.info(`合并文件/目录: ${n} -> ${c}`)}catch(e){g.error(`处理文件失败: ${n}, err: ${e.message}`)}}0===e.readdirSync(i).length&&(e.rmSync(i,{recursive:!0,force:!0}),g.info(`已删除 package 目录: ${i}`))}g.info("mergePkgs 完成")}else g.error("配置文件中 packages 字段无效, 请检查配置")}(i);const n=e.readFileSync(t.join(i,f),"utf-8");return{isSuccess:!0,packages:JSON.parse(n).packages,checkResults:s}}catch(e){return{isSuccess:!1,errorMsg:e.message}}},exports.getPkgs=async function({entryDir:s}){const a=F(s),i=[{type:"main",size:M({entryDir:s}),name:k,root:""},...a.map(e=>({type:"independent",size:z({rootDir:s,entryDir:t.join(s,e.root),filterDirs:[]}),name:e.name,root:e.root}))],n=function({entryDir:s}){if(N(s)){const a=t.join(s,"wasmcode");if(!e.existsSync(a))return"";const i=e.readdirSync(a).filter(e=>e.endsWith(".webgl.wasm.code.unityweb.wasm.br"));return 0===i.length?(console.log("wasmBrFiles is empty"),""):(console.log(i[0],"wasmBrFiles[0] is exist"),t.relative(s,t.join(a,i[0])))}return""}({entryDir:s});return n&&i.push({type:"wasmcode",name:"wasmcode",root:n}),{size:P({entryDir:s}),engine:E(s),packages:i}},exports.writeOdrConfig=async function(e){g.info("writeOdrPackagesConfig start");const s=u.join(e,f),t=JSON.parse(m.readFileSync(s,"utf-8")),a=t.packages,i=t.odr_packages||{};for(const e in a){if(e.endsWith(y)){const s=a[e],t=e.split(y)[0];i[t]||(i[t]={}),i[t]=Object.assign(Object.assign({},i[t]),{root:s.root,code_output:s.output,code_md5:s.md5,main:s.main}),delete a[e]}if(e.endsWith(_)){const s=e.split(_)[0],t=a[e];i[s]=Object.assign(Object.assign({},i[s]),{root:t.root,asset_output:t.output,asset_md5:t.md5}),delete a[e]}}t.odr_packages=i,m.writeFileSync(s,JSON.stringify(t,null,2)),g.info("writeOdrPackagesConfig end")};
9
+ "use strict";var e=require("fs"),s=require("winston"),t=require("path");require("crypto"),require("zlib");var a=require("fs/promises"),i=require("node-fetch"),n=require("acorn"),c=require("glob"),o=require("magic-string"),r=require("esbuild");function d(e){var s=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}}),s.default=e,Object.freeze(s)}var m=d(e),u=d(t);function b(s){e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}const g=new class{constructor(){this.logger=null}init(e,a=!0){this.enableLog=a,this.logger=s.createLogger({level:"info",format:s.format.combine(s.format.timestamp(),s.format.json()),transports:[new s.transports.File({filename:t.join(e,"pack.log")}),new s.transports.Console]})}info(e){this.enableLog&&this.logger.info(e)}error(e){this.enableLog&&this.logger.error(e)}warn(e){this.enableLog&&this.logger.warn(e)}debug(e){this.enableLog&&this.logger.debug(e)}log(e){this.logger.info(e)}setOutput(e){this.output=e}};function l(s){if(!e.existsSync(s))return!1;if(!e.statSync(s).isDirectory())return!1;let a=!0;const i=e.readdirSync(s);for(const n of i){const i=t.join(s,n);if(e.statSync(i).isDirectory()){l(i)||(a=!1)}else a=!1}return!!a&&(e.rmSync(s,{recursive:!0}),!0)}const f="packageConfig.json",p="game.json",k="__GAME__",h=".txt",y="_code",_="_asset",v=62914560,j=["ttmg_odr_high_channel","ttmg_odr_middle_channel","ttmg_odr_normal_channel"],x="independent_package",S="independent_package",w="main_package";function z({rootDir:s,entryDir:a,filterDirs:i}){let n=0;if(!e.existsSync(a))return 0;const c=e.readdirSync(a,{withFileTypes:!0});for(const o of c){const c=t.join(a,o.name);if(o.isDirectory()){const e=t.relative(s,c).replace(/\\/g,"/");i.includes(e)||(n+=z({entryDir:c,filterDirs:i,rootDir:s}))}else o.isFile()&&(n+=e.statSync(c).size)}return n}function $(s){const a=e.readdirSync(s,{withFileTypes:!0});for(const i of a){const a=t.join(s,i.name);if(i.isDirectory())$(a);else if(i.isFile()&&(a.endsWith(".js")||a.endsWith(".js.map")))try{e.unlinkSync(a)}catch(e){}}}function q(s){const a=e.readdirSync(s,{withFileTypes:!0});for(const i of a){const a=t.join(s,i.name);if(i.isDirectory())q(a);else if(i.isFile()&&!a.endsWith(".js")&&!a.endsWith(".js.map"))try{e.unlinkSync(a)}catch(e){}}}const O=["node_modules","__MACOSX"],D=[".DS_Store","Thumbs.db"];function F(s){var a;try{const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8"));return(null===(a=null==n?void 0:n.subpackages)||void 0===a?void 0:a.filter(e=>e.independent))||[]}catch(e){return[]}}function M({entryDir:e}){return z({rootDir:e,entryDir:e,filterDirs:C(e)})}function C(s){var a;const i=t.join(s,p);try{const s=JSON.parse(e.readFileSync(i,"utf8"));return((null===(a=s.subpackages)||void 0===a?void 0:a.map(e=>e.root))||[]).map(e=>e.replace(/^\/|\/$/g,""))}catch(e){return[]}}function P({entryDir:e}){return z({rootDir:e,entryDir:e,filterDirs:[]})}function E(s){const a=t.join(s,p);if(!e.existsSync(a))return"unknown";let i;try{i=JSON.parse(e.readFileSync(a,"utf-8"));const s=null==i?void 0:i.gameEngine;return s||"unknown"}catch(e){return"unknown"}}function N(e){return"unity"===E(e)}function R(e,s){var t,a;const i=N(e);return Object.assign(Object.assign({},s),{build:Object.assign(Object.assign({},s.build),{mainPkgSizeLimit:i?null:null===(t=s.build)||void 0===t?void 0:t.mainPkgSizeLimit,independentSubPkgSizeLimit:i?null:null===(a=s.build)||void 0===a?void 0:a.independentSubPkgSizeLimit})})}async function L(e,s,n=5){const c=[];for(const i of e){const{id:e,packages:n}=i,o=t.join(s,e);await a.mkdir(o,{recursive:!0});for(const e in n){const s=n[e],{code_url:a}=s,i=`${e}.txt`,r=t.join(o,i);c.push({code_url:a,filePath:r,packageName:e})}}await async function(e,s,t){const a=[],i=[];for(const n of s){const c=Promise.resolve().then(()=>t(n));if(a.push(c),e<=s.length){const s=c.then(()=>i.splice(i.indexOf(s),1));i.push(s),i.length>=e&&await Promise.race(i)}}return Promise.all(a)}(n,c,async e=>{const{code_url:s,filePath:t,packageName:n}=e;console.log(`start to download ${n}`);try{const e=await i(s);if(!e.ok)throw new Error(`Failed to fetch ${s}: ${e.statusText}`);const c=Buffer.from(await e.arrayBuffer());await a.writeFile(t,c),console.log(`finish to download ${n}`)}catch(e){console.error(`Error downloading ${n}:`,e)}})}var T={MinisPackagingInfoMap:{sbmg0cldak4bbz86dq:{ClientKey:"sbmg0cldak4bbz86dq",MinisStage:1,MinisURL:"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us",ODRPackages:'{"112":{"asset_md5":"9fe63b5fc31e9b4ccd1ee9fa9ed2913b","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/112_asset/9fe63b5fc31e9b4ccd1ee9fa9ed2913b.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/112_code/ebb1a6d341c0013a445f3dbf2600c9ae.txt","root":"subpackages/112","main":"subpackages/112/game.js"},"116":{"asset_md5":"690814b650564724a235a4f155cfe5e3","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/116_asset/690814b650564724a235a4f155cfe5e3.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/116_code/ddc0d442aef316e3e45cdbac9ccb88eb.txt","root":"subpackages/116","main":"subpackages/116/game.js"},"108":{"asset_md5":"b7b3aeafdd70aed9e77fb2f1554d6675","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/108_asset/b7b3aeafdd70aed9e77fb2f1554d6675.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/108_code/bdac7d266b4a15af9ca109d1673168a6.txt","root":"subpackages/108","main":"subpackages/108/game.js"},"game3":{"asset_md5":"bc4b09b1177a35fd8516b8fd5bb9b4e4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game3_asset/bc4b09b1177a35fd8516b8fd5bb9b4e4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game3_code/7f3c18114afd5b3d4fd8c39dd2481cf1.txt","root":"subpackages/game3","main":"subpackages/game3/game.js"},"game5":{"asset_md5":"6a75dd22dcf0d7c117cfcb03185696e6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game5_asset/6a75dd22dcf0d7c117cfcb03185696e6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game5_code/ed2c8ca8023418099d1232fdc6ac09ae.txt","root":"subpackages/game5","main":"subpackages/game5/game.js"},"main":{"asset_md5":"ecadb8f2a4138a73459e04a8a0c5f470","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/main_asset/ecadb8f2a4138a73459e04a8a0c5f470.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/main_code/3b7a7f0869e5392f1e244eef40ad8abe.txt","root":"subpackages/main","main":"subpackages/main/game.js"},"103":{"asset_md5":"069620ed43643956f6b6448c5d360471","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/103_asset/069620ed43643956f6b6448c5d360471.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/103_code/64a9caf580b6cd991888751e8ea51222.txt","root":"subpackages/103","main":"subpackages/103/game.js"},"other":{"asset_md5":"473ad574dee1813610988dba22fb0acc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/other_asset/473ad574dee1813610988dba22fb0acc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/other_code/003784b887ff99fb82d47899798e1ee0.txt","root":"subpackages/other","main":"subpackages/other/game.js"},"resSps":{"asset_md5":"4e72c930e3c8f77bda25be975e3c8019","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/resSps_asset/4e72c930e3c8f77bda25be975e3c8019.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/resSps_code/c6ac2ebde3c8c421ca75ff649280d90b.txt","root":"subpackages/resSps","main":"subpackages/resSps/game.js"},"111":{"asset_md5":"3452f073e30ecc6b3727f072a856068b","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/111_asset/3452f073e30ecc6b3727f072a856068b.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/111_code/3ca9e57876b82945faedce2ca0ab414e.txt","root":"subpackages/111","main":"subpackages/111/game.js"},"117":{"asset_md5":"60206e41273a6a1f6d21bbf634023962","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/117_asset/60206e41273a6a1f6d21bbf634023962.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/117_code/1a85a85048eca0d650ad4b8b198cefdc.txt","root":"subpackages/117","main":"subpackages/117/game.js"},"__GAME__":{"asset_md5":"dbee9c4f704800eb5bf482be01aecadc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/__GAME___asset/dbee9c4f704800eb5bf482be01aecadc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/__GAME___code/b42b2a68ce373eb274eedc22351aac02.txt","root":"","main":"game.js"},"jigsaw":{"asset_md5":"4782715dda5ea0d10897d866a84bca19","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/jigsaw_asset/4782715dda5ea0d10897d866a84bca19.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/jigsaw_code/799004f65797d4620549e0d4b27e3794.txt","root":"subpackages/jigsaw","main":"subpackages/jigsaw/game.js"},"newYear":{"asset_md5":"c2cb90fbaac0b4b86d1afa7caabd2f20","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/newYear_asset/c2cb90fbaac0b4b86d1afa7caabd2f20.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/newYear_code/a7d962b4f7a95e8114fcf00bbe27b8ac.txt","root":"subpackages/newYear","main":"subpackages/newYear/game.js"},"adapter":{"asset_md5":"a44f0cd93ad08da6db427c9dc3ab6fe4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/adapter_asset/a44f0cd93ad08da6db427c9dc3ab6fe4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/adapter_code/6c3090ba10c12ad637aefa993fe838fc.txt","root":"subpackages/adapter","main":"subpackages/adapter/game.js"},"101":{"asset_md5":"ad3f476d334e695c01f96eef67308f26","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/101_asset/ad3f476d334e695c01f96eef67308f26.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/101_code/dcb5f8547d5285c5e116a1726dc1ecdb.txt","root":"subpackages/101","main":"subpackages/101/game.js"},"102":{"asset_md5":"8b39712d9f0ae7549382da9041cc5f56","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/102_asset/8b39712d9f0ae7549382da9041cc5f56.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/102_code/b70fb4ea0d05b866a4a32ab4cae418c4.txt","root":"subpackages/102","main":"subpackages/102/game.js"},"110":{"asset_md5":"24da51736441ceb88b3d331775004551","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/110_asset/24da51736441ceb88b3d331775004551.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/110_code/f7c97cb3aed7acb4091feaf613c56dd3.txt","root":"subpackages/110","main":"subpackages/110/game.js"},"114":{"asset_md5":"c2f81aaf93311b9302995dba105d69d0","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/114_asset/c2f81aaf93311b9302995dba105d69d0.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/114_code/7574a218fb4053e2005497d84a56132c.txt","root":"subpackages/114","main":"subpackages/114/game.js"},"practice":{"asset_md5":"01d63b100e2cfb80d2d7568d11f346f8","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/practice_asset/01d63b100e2cfb80d2d7568d11f346f8.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/practice_code/2275ac8e93d1c5dd100427aa948cd23c.txt","root":"subpackages/practice","main":"subpackages/practice/game.js"},"zh_CN":{"asset_md5":"2b1c715a0c624c630acb29b4fdfcb240","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/zh_CN_asset/2b1c715a0c624c630acb29b4fdfcb240.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/zh_CN_code/bb44d46f30e57f29d20bf0678426c7c5.txt","root":"subpackages/zh_CN","main":"subpackages/zh_CN/game.js"},"107":{"asset_md5":"652c5385223642c4a19f823666c8a682","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/107_asset/652c5385223642c4a19f823666c8a682.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/107_code/9e717b17251bdc8eefb7b8135fcb6996.txt","root":"subpackages/107","main":"subpackages/107/game.js"},"113":{"asset_md5":"f53882a23326919614b0e9031d28ed39","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/113_asset/f53882a23326919614b0e9031d28ed39.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/113_code/666bb07aea74f0a408136c0ac16a04b8.txt","root":"subpackages/113","main":"subpackages/113/game.js"},"115":{"asset_md5":"6831f12abfeccc9ff720155d9ece2d53","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/115_asset/6831f12abfeccc9ff720155d9ece2d53.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/115_code/76b85e96a57c33c8ba9ff2f316290416.txt","root":"subpackages/115","main":"subpackages/115/game.js"},"118":{"asset_md5":"f787456ee45eccc4c13f20ee21c61858","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/118_asset/f787456ee45eccc4c13f20ee21c61858.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/118_code/e595f8ed244752fe2ddc72def8452cd5.txt","root":"subpackages/118","main":"subpackages/118/game.js"},"chapter":{"asset_md5":"9c4b6cb8dc0b39bfcb275efa0c6b8493","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/chapter_asset/9c4b6cb8dc0b39bfcb275efa0c6b8493.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/chapter_code/9ee175f09ca69c65b630cfee23c0e42c.txt","root":"subpackages/chapter","main":"subpackages/chapter/game.js"},"sound":{"asset_md5":"65c37817ffc86d942d1942443b5e3fb4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/sound_asset/65c37817ffc86d942d1942443b5e3fb4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/sound_code/2662512b5aaa6801b6742eb661c44828.txt","root":"subpackages/sound","main":"subpackages/sound/game.js"},"105":{"asset_md5":"82c8cde04fec4456ac6bab8adaef0028","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/105_asset/82c8cde04fec4456ac6bab8adaef0028.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/105_code/74e319194a7f5a204504fc3d83131112.txt","root":"subpackages/105","main":"subpackages/105/game.js"},"109":{"asset_md5":"926ebc459e3329a4d9cda7ddf9718bf4","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/109_asset/926ebc459e3329a4d9cda7ddf9718bf4.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/109_code/19cbdc3d88a72dbd0c5eb52e89e2635a.txt","root":"subpackages/109","main":"subpackages/109/game.js"},"game2":{"asset_md5":"9f1bb086f7587aada8312315f2dd94fc","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game2_asset/9f1bb086f7587aada8312315f2dd94fc.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game2_code/49d07e848cae8eb08428bfbf225a6f30.txt","root":"subpackages/game2","main":"subpackages/game2/game.js"},"game6":{"asset_md5":"b1407de78d19f60644b53436f1791ee6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game6_asset/b1407de78d19f60644b53436f1791ee6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game6_code/155651953a65a663f67b95475cd5c941.txt","root":"subpackages/game6","main":"subpackages/game6/game.js"},"prefab":{"asset_md5":"4c4ba8d442bae683575460e884ddba00","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/prefab_asset/4c4ba8d442bae683575460e884ddba00.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/prefab_code/7f037cd7f3b83e90765e749d28f32e3e.txt","root":"subpackages/prefab","main":"subpackages/prefab/game.js"},"104":{"asset_md5":"160c617e3e3adef19c94f57bc4520dba","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/104_asset/160c617e3e3adef19c94f57bc4520dba.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/104_code/ef86df3a24fca9ecffc55f7c33ff3747.txt","root":"subpackages/104","main":"subpackages/104/game.js"},"106":{"asset_md5":"b22052c8f569db2f00a2ae6fcb8872e6","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/106_asset/b22052c8f569db2f00a2ae6fcb8872e6.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/106_code/f13ed6653a2ebb49703d0bc882255cfd.txt","root":"subpackages/106","main":"subpackages/106/game.js"},"game4":{"asset_md5":"b98a8892ccb76e5999cbf7a8e81c4cb5","asset_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game4_asset/b98a8892ccb76e5999cbf7a8e81c4cb5.txt","code_url":"https://minis-sbmg0cldak4bbz86dq-vpkg-1.tiktok-minis.us/game4_code/ebbcf2b74998d340cb8cf85249748992.txt","root":"subpackages/game4","main":"subpackages/game4/game.js"}}',UpdatedTime:1756716749e3,AssetType:1}}};const A={name:"project",dimension:"project"};function J(s,a){g.info("start check project");const i=function(e,s){g.info("start check project size");const{build:{pkgSizeLimit:t},dev:a}=s,i=null==a?void 0:a.enable,n=P({entryDir:e}),c=(n/1048576).toFixed(2),o=(t/1048576).toFixed(2);if(n>t){const e=`Check project size failed, size: ${c}MB, must not exceed ${o}MB`;if(g.error(e),i)return console.log("%s",e),Object.assign({passed:!1,msg:e,type:"size",size:n},A);throw new Error(e)}{const e=`Check project size successfully, size: ${c}MB`;return g.info(e),Object.assign({passed:!0,msg:e,name:"project",type:"size",size:n},A)}}(s,a),n=function(s,a){var i;g.info("start check config");const n=t.join(s,p);if(e.existsSync(n)){const e="Check game.json config successfully";return g.info(e),Object.assign({passed:!0,msg:e,file:p,type:"config"},A)}{const e="Can not find game.json in game source code, please check it";if(g.error(e),null===(i=null==a?void 0:a.dev)||void 0===i?void 0:i.enable)return console.log("%s",`❗️ ${e}`),Object.assign({passed:!1,msg:e,type:"config",file:p},A);throw new Error(e)}}(s,a),c=[i,n];return c.every(e=>e.passed)&&g.info("check project successfully"),c}const B={name:"main",dimension:"main_package"};function G(e,s){var t;const a=[];return g.info("start check main package"),a.push(function({entryDir:e,config:s}){var t;g.info("start check main package entry");const a=u.join(e,"game.js");if(!m.existsSync(a)){const e="Check main package entry failed, game.js must exist in main package!";if(g.error(e),null===(t=s.dev)||void 0===t?void 0:t.enable)return console.log("%s",e),Object.assign({passed:!1,msg:e,type:"config",file:"game.js"},B)}return g.info("check game.js successfully"),Object.assign({passed:!0,msg:"Check main package entry successfully, game.js must exist in main package!",type:"config",file:"game.js"},B)}({entryDir:e,config:s})),(null===(t=s.build)||void 0===t?void 0:t.mainPkgSizeLimit)&&a.push(function({entryDir:e,config:s}){g.info("start check main package size");const{build:t,dev:a}=s,i=M({entryDir:e}),n=(i/1048576).toFixed(2),c=(t.mainPkgSizeLimit/1048576).toFixed(2);if(i>t.mainPkgSizeLimit){const e=`Check main package size failed, main package size ${n}MB, must not exceed ${c}MB`;if(g.error(e),null==a?void 0:a.enable)return console.log("%s",`❗️ ${e}`),Object.assign({passed:!1,msg:e,size:i,type:"size"},B);throw new Error(e)}return Object.assign({passed:!0,msg:`Check main package size successfully, size: ${n}MB`,size:i,type:"size"},B)}({entryDir:e,config:s})),a.every(e=>e.passed)&&g.info("Check main package successfully"),a}const W={name:"subpackage",dimension:"subpackage"};function I(s,a){const i=[];g.info("start check subpackages in game.json");const n=function(s){var a;try{const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8"));return(null===(a=null==n?void 0:n.subpackages)||void 0===a?void 0:a.filter(e=>!e.independent))||[]}catch(e){return[]}}(s);return n.forEach(n=>{var c,o;if(n.name&&n.root)i.push(Object.assign({passed:!0,msg:`Check subpackage<${n.name}> config successfully`,type:"config",file:p},W));else{const e="Check subpackages config failed, the subpackages configuration in game.json is invalid: the root or name field in one or more subpackages is empty. Please ensure that all subpackages have non-empty root and name values.";if(g.error(e),!(null===(c=null==a?void 0:a.dev)||void 0===c?void 0:c.enable))throw new Error(e);console.log("%s",`❗️ ${e}`),i.push(Object.assign({passed:!1,msg:e,type:"config",file:p},W))}const r=t.join(s,n.root);if(e.existsSync(r))i.push(Object.assign({passed:!0,msg:`Check subpackage<${n.name}> config successfully`,type:"config",file:p},W));else{const e=`Check subpackage<${n.name}> config failed, the subpackages configuration in game.json is invalid: can not find subpackage ${n.name} entry dir, please check it`;if(g.error(e),!(null===(o=null==a?void 0:a.dev)||void 0===o?void 0:o.enable))throw new Error(e);console.log("%s",`❗️ ${e}`),i.push(Object.assign({passed:!1,msg:e,type:"config",file:p},W))}}),i.length&&i.every(e=>e.passed)&&g.info("Check subpackages config successfully"),i}const U={dimension:x};function Y(s,a){var i;const n=null===(i=null==a?void 0:a.dev)||void 0===i?void 0:i.enable,c=[];g.info("start check independent subpackages in game.json");return F(s).forEach(i=>{var o;if(i.name&&i.root)c.push(Object.assign(Object.assign({},U),{passed:!0,msg:`Check independent package<${i.name}> config successfully`,type:"config",file:p,name:i.name}));else{const e="Check independent subpackages config failed, the subpackages configuration in game.json is invalid: the root or name field in one or more independent subpackages is empty. Please ensure that all independent subpackages have non-empty root and name values.";if(g.error(e),!n)throw new Error(e);console.log("%s",`❗️${e}`),c.push(Object.assign(Object.assign({},U),{passed:!1,msg:e,type:"config",file:p,name:i.name}))}const r=t.join(s,i.root);if(e.existsSync(r))c.push({passed:!0,msg:`Check independent package<${i.name}> config successfully`,type:"config",file:p,dimension:x,name:i.name});else{const e=`Check independent package<${i.name}> config failed, the subpackages configuration in game.json is invalid: can not find subpackage ${i.name} entry dir, please check it`;if(g.error(e),!n)throw new Error(e);console.log("%s",`❗️ ${e}`),c.push(Object.assign(Object.assign({},U),{passed:!1,msg:e,type:"config",file:p,name:i.name}))}const d=null===(o=null==a?void 0:a.build)||void 0===o?void 0:o.independentSubPkgSizeLimit;if(d){const e=function({entryDir:e,limit:s,pkgName:t,dimension:a}){const i=z({rootDir:e,entryDir:e,filterDirs:[]}),n=i<=s,c=i/1024/1024,o=s/1024/1024;return{passed:n,msg:n?`Check package ${t} size ${c.toFixed(2)}MB check successfully`:`Check package ${t} size ${c.toFixed(2)}MB exceeds limit ${o.toFixed(2)}MB`,type:"size",size:i,dimension:a,name:t}}({entryDir:r,pkgName:i.name,limit:d,dimension:x});if(c.push(e),g.info(e.msg),!e.passed){if(!n)throw new Error(e.msg);console.log("%s",`❗️ ${e.msg}`)}}}),c.length&&c.every(e=>e.passed)&&g.info("Check independent subpackages config successfully"),c}const V=[{name:"login",desc:"Login to get open id"},{name:"createRewardedVideoAd",desc:"Integrate rewarded video ads"},{name:"addShortcut",desc:"Add game shortcut to home screen"},{name:"getShortcutMissionReward",desc:"Get shortcut mission reward"},{name:"startEntranceMission",desc:"Jump to TikTok personal sidebar"},{name:"getEntranceMissionReward",desc:"Get entrance mission reward"}];function K(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}async function X({entryDir:s,config:a}){g.info("开始校验项目");const i=J(s,a),n=G(s,a),c=I(s,a),o=Y(s,a),r=function({entryDir:s,config:a}){var i;if(!(null===(i=null==a?void 0:a.build)||void 0===i?void 0:i.enableAPICheck))return[];const n=[".js",".ts"],c=new Map(V.map(({name:e})=>{const s=[`\\b${K(e)}\\b`,`\\.${K(e)}\\s*\\(`,`\\b${K(e)}\\s*:\\s*`,`\\b${K(e)}\\s*=`,`\\b${K(e)}\\s*\\(`].join("|");return[e,new RegExp(s,"m")]})),o=new Map;for(const{name:e}of V)o.set(e,new Set);const r=[s];for(;r.length;){const s=r.pop();if(e.statSync(s).isDirectory()){const a=t.basename(s);if(["node_modules",".git","dist","build","out",".cache"].includes(a))continue;const i=e.readdirSync(s);for(const e of i)r.push(t.join(s,e));continue}const a=t.extname(s).toLowerCase();if(!n.includes(a))continue;let i="";try{i=e.readFileSync(s,"utf8")}catch(e){continue}if(!(i.length>5e6))for(const{name:e}of V)c.get(e).test(i)&&o.get(e).add(s)}return V.map(({name:e})=>{const s=Array.from(o.get(e)||[]);return{name:e,msg:s.length>0?`${e} integrated!`:`${e} not integrated!`,passed:s.length>0,files:s,type:"api",required:!1,dimension:"project"}})}({entryDir:s,config:a});return[...i,...n,...c,...o,...r]}async function Z(s,a){g.info("开始基于源代码中的 game.json 生成 packageConfig.json");const i=t.join(s,p),n=JSON.parse(e.readFileSync(i,"utf-8")),c={},o=[{value:k,label:"Main (Main package)",type:w}];c[k]={url:"",md5:"",root:"",main:"game.js",output:`${k}${h}`},function(e){if(!e||0===e.length)return[];function s(e){return String(e).replace(/^\/+|\/+$/g,"")}function a(e){return i(e)?t.join(e,"game.js").replace(/\\/g,"/"):e}function i(e){return e.endsWith("/")||!/\.[a-zA-Z0-9]+$/.test(e)}function n(e){return e.replace(/^\/+|\/+$/g,"")}return e.map(e=>{const t=s(e.name);return{main:a(e.root),root:n(e.root),name:t,independent:e.independent||!1}})}(n.subpackages).forEach(({name:e,root:s,main:t,independent:a})=>{c[e]={url:"",md5:"",root:s,main:t,output:`${e}${h}`,independent:a},a&&o.push({value:e,label:`${e} (Independent package)`,type:S})});const r={packages:c,fyf_packages:o};return e.existsSync(a)&&e.rmSync(a,{recursive:!0}),e.mkdirSync(a),e.writeFileSync(t.join(a,f),JSON.stringify(r,null,2)),g.info("基于源代码中的 game.json 生成 packageConfig.json 成功"),r}function H(e){const s=[];return Object.values(e).forEach(e=>{Object.values(e).forEach(e=>{s.push(...e)})}),s}function Q({entry:s,root:a,exts:i=[".js",".ts",".jsx",".tsx"],excludeDirs:n=[]}){let c=[];if(!e.existsSync(s))return c;const o=e.readdirSync(s,{withFileTypes:!0});for(const e of o){const o=t.join(s,e.name);if(e.isDirectory()){const e=t.relative(a,o).replace(/\\/g,"/");if(n.find(s=>s===e))continue;c=c.concat(Q({entry:o,root:a,exts:i,excludeDirs:n}))}else i.some(s=>e.name.endsWith(s))&&c.push(o)}return c}function ee(s,a){const i=function(s){return e.readdirSync(s).filter(a=>{const i=t.join(s,a);return e.statSync(i).isDirectory()&&!["node_modules","dist","build","output"].includes(a)}).map(e=>e+"/")}(s),o=c.sync("**/*.js",{cwd:s,ignore:[]}),r=[];o.forEach(a=>{const c=t.join(s,a),o=e.readFileSync(c,"utf-8");let d;try{d=n.parse(o,{ecmaVersion:"latest",sourceType:"module"})}catch(e){return}se(d,a=>{if("CallExpression"===a.type&&"Identifier"===a.callee.type&&("require"===a.callee.name||"requireAsync"===a.callee.name)&&a.arguments.length>0&&"Literal"===a.arguments[0].type&&"string"==typeof a.arguments[0].value){const n=a.arguments[0].value;let o=null;if(n.startsWith("."))o=t.resolve(t.dirname(c),n);else if(n.startsWith("/"))o=t.resolve(s,"."+n);else for(const e of i)if(n.startsWith(e)){o=t.resolve(s,n);break}o&&!function(s){if(e.existsSync(s)&&e.statSync(s).isFile())return!0;const t=[".js",".ts",".jsx",".tsx"];for(const a of t)if(e.existsSync(s+a)&&e.statSync(s+a).isFile())return!0;return!1}(o)&&(o=null),r.push({file:t.relative(s,c),callee:a.callee.name,requirePath:n,resolvedPath:o?t.relative(s,o):""})}})});const d=r.map(e=>{let s="";Object.keys(a).forEach(t=>{e.resolvedPath&&e.resolvedPath.startsWith(a[t].root)&&(s=t)});let t="";return Object.keys(a).forEach(s=>{e.file.startsWith(a[s].root)&&(t=s)}),Object.assign(Object.assign({},e),{curModule:t,depModule:s})}),m=[".js",".ts",".jsx",".tsx"];return d.reduce((e,s)=>{return e[s.curModule]||(e[s.curModule]={}),s.curModule===s.depModule||s.resolvedPath&&(t=s.resolvedPath,m.some(e=>t.endsWith(e)))&&(e[s.curModule]=Object.assign(Object.assign({},e[s.curModule]),{[s.resolvedPath]:s.depModule})),e;var t},{})}function se(e,s){s(e);for(let t in e)if(e.hasOwnProperty(t)){const a=e[t];Array.isArray(a)?a.forEach(e=>e&&"string"==typeof e.type&&se(e,s)):a&&"string"==typeof a.type&&se(a,s)}}async function te({pkgRoot:s,destRoot:a,packedFiles:i,gameEntry:n,gameOutput:c,skipDirs:o=[],isRoot:r=!0}){if(!e.existsSync(s))return;const d=e.readdirSync(s,{withFileTypes:!0});for(const r of d){const d=t.join(s,r.name),m=t.join(a,r.name),u=t.join(s,r.name);if(r.isDirectory()){const e=t.relative(n,u).replace(/\\/g,"/");if(o.find(s=>s===e))continue}r.isDirectory()?te({pkgRoot:d,destRoot:m,gameOutput:c,packedFiles:i,gameEntry:n,skipDirs:o,isRoot:!1}):(b(t.dirname(m)),i.includes(t.relative(n,d).replace(/\\/g,"/"))||e.copyFileSync(d,m))}}function ae(e){const s=[];return e&&s.push(...Object.values(e).map(e=>e.root)),s}async function ie({gameEntry:s,gameOutput:a,config:i}){let n=Date.now();!function(s){!function s(a){let i;try{i=e.readdirSync(a)}catch(e){return void g.warn(`无法访问目录: ${a}, ${e.message}`)}i.forEach(i=>{const n=t.join(a,i);try{const t=e.statSync(n);t.isDirectory()?O.includes(i)?(e.rmSync(n,{recursive:!0,force:!0}),g.info(`已删除无用目录: ${n}`)):s(n):t.isFile()&&D.includes(i)&&(e.rmSync(n,{force:!0}),g.info(`已删除无用文件: ${n}`))}catch(e){g.warn(`无法处理: ${n}, ${e.message}`)}})}(s)}(s),g.info(`pack start,startTime:${n}`);const{packages:c}=await Z(s,a),d=ee(s,c),m=function(e,s){g.info("开始基于游戏源代码收集分包中的 JS 文件");const a={},i=Object.values(s).filter(e=>e.root&&""!==e.root).map(e=>e.root).filter(Boolean),n=Array.from(new Set(i));for(const i in s){const c=s[i];let o,r;"__GAME__"===i?(r=Q({entry:e,root:e,exts:[".js",".ts",".jsx",".tsx"],excludeDirs:n}),o=e):(o=t.join(e,c.root),r=Q({entry:o,root:o,exts:[".js",".ts",".jsx",".tsx"],excludeDirs:[]}));const d=[];r.forEach(s=>{d.push(t.relative(e,s).replace(/\\/g,"/"))});const m=s[i].root;a[i]={[m?`${m}/game.pack.js`:"game.pack.js"]:d}}return g.info("基于游戏源代码收集分包中的 JS 文件完成"),a}(s,c);return await async function(e,s,t){const a=[],i=[];for(const n of s){const c=Promise.resolve().then(()=>t(n));if(a.push(c),e<=s.length){const s=c.then(()=>{i.splice(i.indexOf(s),1)});i.push(s),i.length>=e&&await Promise.race(i)}}return Promise.all(a)}(10,Object.keys(m),async n=>{g.info(`开始基于游戏源代码打包,包名:${n}`);let u=Date.now();const f=c[n],p=t.join(s,f.root),k=t.join(a,n,f.root);await function({gameEntry:s,pkgName:a,allDeps:i,allMaps:n,pkgConfig:c,destRoot:d,config:m}){var u,l,f,p;let k=Date.now();g.info(`pack start,startTime:${k}`);const h=n[a],y={main:c.main,deps:i[a]||{},map:n[a]};b(d),e.writeFileSync(t.join(d,"moduleConfig.json"),JSON.stringify(y));for(const i in h){const n=h[i];if(!Array.isArray(n)||0===n.length)continue;const c=new o.Bundle({separator:"\n"});for(const a of n){const n=t.join(s,a);if(e.existsSync(n)&&t.basename(n)!==i&&/\.js$/i.test(a))try{const{code:s}=r.transformSync(e.readFileSync(n,"utf-8"),{loader:"js",format:"cjs",target:"es2015"}),t=a.replace(/\\/g,"/"),i=`define("game:${t}", ["require", "requireAsync", "module", "exports", "sandboxGlobal"], function(require, requireAsync, module, exports, sandboxGlobal){\nwith(sandboxGlobal){\n`,d="\n}\n});\n",m=new o(s,{filename:t});m.prepend(i),m.append(d),c.addSource({content:m,filename:t})}catch(e){g.error(`pack error, relPath:${a},e:${e}`)}}const b=t.join(d,t.basename(i)),k=c.toString();if(null===(u=null==m?void 0:m.dev)||void 0===u?void 0:u.enableSourcemap){const s=c.generateMap({hires:!0,includeContent:!0,file:t.basename(i)});if(null===(l=null==m?void 0:m.dev)||void 0===l?void 0:l.inlineSourcemap){const t=k+`\n//# sourceMappingURL=data:application/json;base64,${Buffer.from(s.toString()).toString("base64")}`+`\n//# sourceURL=${i}`;e.writeFileSync(b,t,"utf-8")}else{const a=`http://${null===(f=null==m?void 0:m.dev)||void 0===f?void 0:f.host}:${null===(p=null==m?void 0:m.dev)||void 0===p?void 0:p.port}/game/files`,n=t.basename(i)+".map",c=t.join(d,n);e.writeFileSync(c,s.toString(),"utf-8");const o=k+`\n//# sourceMappingURL=${a}/${i}.map`+`\n//# sourceURL=${i}`;e.writeFileSync(b,o,"utf-8")}}else{const s=k+`\n//# sourceURL=${i}`;e.writeFileSync(b,s,"utf-8")}g.info(`pack end,packName:${a}`)}}({gameEntry:s,allDeps:d,allMaps:m,pkgName:n,pkgConfig:f,destRoot:k,config:i}),await te({gameEntry:s,gameOutput:a,pkgRoot:p,destRoot:k,packedFiles:H(m),skipDirs:ae(c)});l(t.join(a,n)),g.info(`基于游戏源代码打包分包完成,包名:${n}`),g.info(`基于游戏源代码打包分包耗时,包名:${n},耗时:${Date.now()-u}ms`)}),g.info(`pack end,duration:${Date.now()-n}ms`),{}}exports.buildOdrPkgs=async function({tempDir:s}){e.existsSync(s)&&e.rmSync(s,{recursive:!0}),e.mkdirSync(s);const a=function(){const{MinisPackagingInfoMap:e}=T;return Object.keys(e).map(s=>({id:s,packages:JSON.parse(e[s].ODRPackages)}))}();g.info("odr_games"),await L(a,s);const i={};for(const e of a){const{id:a}=e,n=t.join(s,a);i[a]=z({rootDir:s,entryDir:n,filterDirs:[]})}const n={};j.forEach(e=>{n[e]=[]});const c={};for(const o of a){const{id:a,packages:r}=o,d=i[a];if(d>v)continue;let m=null;for(const c of j){const o=t.join(s,c);e.existsSync(o)||e.mkdirSync(o);if(n[c].reduce((e,s)=>e+i[s],0)+d<=v){const i=t.join(s,a),r=t.join(o,a);e.cpSync(i,r,{recursive:!0}),n[c].push(a),m=c;break}}if(m){c[a]={tag:m,packages:{}};for(const e in r){const s=r[e];g.info(`TTMGODRConfig[gameId].packages, ${s}, ${e}`),c[a].packages[e]={root:s.root,main:s.main,asset_md5:s.asset_md5,asset_url:s.asset_url}}console.log(`finish to build ${a}`),e.rmSync(t.join(s,a),{recursive:!0})}}const o=t.join(s,"TTMG_ODR_CONFIG.json");e.writeFileSync(o,JSON.stringify(c,null,2),"utf-8"),g.info(`TTMG_ODR_CONFIG.json 已生成: ${o}`)},exports.buildPkgs=async function(s){const{entry:a,output:i,build:n}=s;let c=Date.now();g.init(i,!0),g.info("TTMG_PACK_VERSION: 0.1.4"),g.info(`pack start, startTime:${c}`);const o=R(a,s);await X({entryDir:a,config:o}),await ie({config:o,gameEntry:a,gameOutput:i}),(null==n?void 0:n.enableOdr)&&await async function(s){let a=Date.now();g.info(`makeOdrPkgs start, ${a}`);const i=t.join(s,f),n=JSON.parse(e.readFileSync(i,"utf-8")),c=n.packages;for(const a in c){const i=t.join(s,a),n=t.join(s,`${a}${y}`),o=t.join(s,`${a}${_}`);b(n),b(o),e.cpSync(i,n,{recursive:!0}),e.cpSync(i,o,{recursive:!0}),q(n),$(o),c[`${a}${y}`]=Object.assign(Object.assign({},c[a]),{code_url:"",code_md5:"",output:`${a}${y}${h}`}),c[`${a}${_}`]=Object.assign(Object.assign({},c[a]),{asset_url:"",asset_md5:"",output:`${a}${_}${h}`})}e.writeFileSync(i,JSON.stringify(n,null,2)),g.info(`makeOdrPkgs end, ${Date.now()-a}ms`)}(i),g.info(`pack end:${Date.now()-c}ms`)},exports.checkPkgs=X,exports.debugPkgs=async function(s){const{entry:a,output:i,dev:{enableLog:n}}=s;g.init(i,n);const c=R(a,s);try{const s=await X({entryDir:a,config:c});await ie({gameEntry:a,gameOutput:i,config:c}),await async function(s){g.info("mergePkgs start");const a=t.join(s,f);let i;try{i=JSON.parse(e.readFileSync(a,"utf-8"))}catch(e){return void g.error(`读取配置文件失败: ${a}, err: ${e.message}`)}const n=i.packages;if(n&&"object"==typeof n){for(const a of Object.keys(n)){const i=t.join(s,a);if(!e.existsSync(i)){g.warn(`package 目录不存在: ${i}`);continue}const n=await e.promises.readdir(i);for(const a of n){const n=t.join(i,a),c=t.join(s,a);try{const s=await e.promises.stat(n);if(s.isFile())await e.promises.copyFile(n,c),await e.promises.rm(n,{recursive:!0,force:!0});else if(s.isDirectory())await e.promises.cp(n,c,{recursive:!0}),await e.promises.rm(n,{recursive:!0,force:!0});else if(s.isSymbolicLink()){const t=e.readlinkSync(n);e.existsSync(c)&&await e.promises.rm(c,{force:!0}),await e.promises.symlink(t,c,s.isDirectory()?"dir":"file")}g.info(`合并文件/目录: ${n} -> ${c}`)}catch(e){g.error(`处理文件失败: ${n}, err: ${e.message}`)}}0===e.readdirSync(i).length&&(e.rmSync(i,{recursive:!0,force:!0}),g.info(`已删除 package 目录: ${i}`))}g.info("mergePkgs 完成")}else g.error("配置文件中 packages 字段无效, 请检查配置")}(i);const n=e.readFileSync(t.join(i,f),"utf-8");return{isSuccess:!0,packages:JSON.parse(n).packages,checkResults:s}}catch(e){return{isSuccess:!1,errorMsg:e.message}}},exports.getPkgs=async function({entryDir:s}){const a=F(s),i=[{type:"main",size:M({entryDir:s}),name:k,root:""},...a.map(e=>({type:"independent",size:z({rootDir:s,entryDir:t.join(s,e.root),filterDirs:[]}),name:e.name,root:e.root}))],n=function({entryDir:s}){if(N(s)){const a=t.join(s,"wasmcode");if(!e.existsSync(a))return"";const i=e.readdirSync(a).filter(e=>e.endsWith(".webgl.wasm.code.unityweb.wasm.br"));return 0===i.length?(console.log("wasmBrFiles is empty"),""):(console.log(i[0],"wasmBrFiles[0] is exist"),t.relative(s,t.join(a,i[0])))}return""}({entryDir:s});return n&&i.push({type:"wasmcode",name:"wasmcode",root:n}),{size:P({entryDir:s}),engine:E(s),packages:i}},exports.writeOdrConfig=async function(e){g.info("writeOdrPackagesConfig start");const s=u.join(e,f),t=JSON.parse(m.readFileSync(s,"utf-8")),a=t.packages,i=t.odr_packages||{};for(const e in a){if(e.endsWith(y)){const s=a[e],t=e.split(y)[0];i[t]||(i[t]={}),i[t]=Object.assign(Object.assign({},i[t]),{root:s.root,code_output:s.output,code_md5:s.md5,main:s.main}),delete a[e]}if(e.endsWith(_)){const s=e.split(_)[0],t=a[e];i[s]=Object.assign(Object.assign({},i[s]),{root:t.root,asset_output:t.output,asset_md5:t.md5}),delete a[e]}}t.odr_packages=i,m.writeFileSync(s,JSON.stringify(t,null,2)),g.info("writeOdrPackagesConfig end")};
10
10
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ttmg-pack",
3
3
  "author": "ttmg",
4
- "version": "0.1.3",
4
+ "version": "0.1.4",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {