ttmg-compile 0.0.1-beta.18 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +1 -2
  3. package/dist/{types/src/constants → constants}/index.d.ts +0 -1
  4. package/dist/{types/src/compile/index.d.ts → index.d.ts} +2 -2
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/libs/index.d.ts +2 -0
  8. package/package.json +9 -13
  9. package/.vscode/settings.json +0 -8
  10. package/dist/index.cjs +0 -3
  11. package/dist/index.cjs.map +0 -1
  12. package/dist/index.mjs +0 -3
  13. package/dist/index.mjs.map +0 -1
  14. package/dist/temp/49292235306187110/__GAME__.txt +0 -0
  15. package/dist/temp/49292235306187110/configBundle.txt +0 -0
  16. package/dist/temp/49292235306187110/gameBundle.txt +0 -0
  17. package/dist/temp/49292235306187110/iceAndFire.txt +0 -0
  18. package/dist/temp/49292235306187110/main.txt +0 -0
  19. package/dist/temp/49292235306187110/mainBundle.txt +0 -1
  20. package/dist/temp/49292235306187110/pushstone.txt +0 -0
  21. package/dist/temp/49292235306187110/resources.txt +0 -0
  22. package/dist/temp/70795045199267510/__GAME__.txt +0 -0
  23. package/dist/temp/70795045199267510/configBundle.txt +0 -0
  24. package/dist/temp/70795045199267510/gameBundle.txt +0 -0
  25. package/dist/temp/70795045199267510/iceAndFire.txt +0 -0
  26. package/dist/temp/70795045199267510/main.txt +0 -0
  27. package/dist/temp/70795045199267510/mainBundle.txt +0 -1
  28. package/dist/temp/70795045199267510/pushstone.txt +0 -0
  29. package/dist/temp/70795045199267510/resources.txt +0 -0
  30. package/dist/temp/TTMG_ODR_CONFIG.json +0 -108
  31. package/dist/temp/ttmg_odr_tag_1/49292235306187110/__GAME__.txt +0 -0
  32. package/dist/temp/ttmg_odr_tag_1/49292235306187110/configBundle.txt +0 -0
  33. package/dist/temp/ttmg_odr_tag_1/49292235306187110/gameBundle.txt +0 -0
  34. package/dist/temp/ttmg_odr_tag_1/49292235306187110/iceAndFire.txt +0 -0
  35. package/dist/temp/ttmg_odr_tag_1/49292235306187110/main.txt +0 -0
  36. package/dist/temp/ttmg_odr_tag_1/49292235306187110/mainBundle.txt +0 -1
  37. package/dist/temp/ttmg_odr_tag_1/49292235306187110/pushstone.txt +0 -0
  38. package/dist/temp/ttmg_odr_tag_1/49292235306187110/resources.txt +0 -0
  39. package/dist/temp/ttmg_odr_tag_2/70795045199267510/__GAME__.txt +0 -0
  40. package/dist/temp/ttmg_odr_tag_2/70795045199267510/configBundle.txt +0 -0
  41. package/dist/temp/ttmg_odr_tag_2/70795045199267510/gameBundle.txt +0 -0
  42. package/dist/temp/ttmg_odr_tag_2/70795045199267510/iceAndFire.txt +0 -0
  43. package/dist/temp/ttmg_odr_tag_2/70795045199267510/main.txt +0 -0
  44. package/dist/temp/ttmg_odr_tag_2/70795045199267510/mainBundle.txt +0 -1
  45. package/dist/temp/ttmg_odr_tag_2/70795045199267510/pushstone.txt +0 -0
  46. package/dist/temp/ttmg_odr_tag_2/70795045199267510/resources.txt +0 -0
  47. package/dist/types/src/index.d.ts +0 -3
  48. package/dist/types/src/libs/check/checkMainpackage.d.ts +0 -12
  49. package/dist/types/src/libs/check/checkProject.d.ts +0 -10
  50. package/dist/types/src/libs/check/checkSubpackages.d.ts +0 -7
  51. package/dist/types/src/libs/check/index.d.ts +0 -1
  52. package/dist/types/src/libs/checkpkgs/checkMainpackage.d.ts +0 -12
  53. package/dist/types/src/libs/checkpkgs/checkProject.d.ts +0 -10
  54. package/dist/types/src/libs/checkpkgs/checkSubpackages.d.ts +0 -3
  55. package/dist/types/src/libs/checkpkgs/index.d.ts +0 -8
  56. package/dist/types/src/libs/index.d.ts +0 -6
  57. package/dist/types/src/libs/makePkgs/collectDeps.d.ts +0 -1
  58. package/dist/types/src/libs/makePkgs/collectMaps.d.ts +0 -4
  59. package/dist/types/src/libs/makePkgs/index.d.ts +0 -4
  60. package/dist/types/src/libs/makePkgs/pack.d.ts +0 -12
  61. package/dist/types/src/libs/makePkgs/partition.d.ts +0 -9
  62. package/dist/types/src/libs/makePkgs/setup.d.ts +0 -3
  63. package/dist/types/src/libs/mergePkgs/index.d.ts +0 -5
  64. package/dist/types/src/libs/odrpkgs/constant.d.ts +0 -2
  65. package/dist/types/src/libs/odrpkgs/index.d.ts +0 -3
  66. package/dist/types/src/libs/odrpkgs/makeOdrPkgs.d.ts +0 -1
  67. package/dist/types/src/libs/odrpkgs/mock.d.ts +0 -13
  68. package/dist/types/src/libs/odrpkgs/typings.d.ts +0 -26
  69. package/dist/types/src/libs/odrpkgs/utils.d.ts +0 -19
  70. package/dist/types/src/libs/odrpkgs/writeOdrpkgsConfig.d.ts +0 -4
  71. package/dist/types/src/libs/pkgs/check/checkMainpackage.d.ts +0 -12
  72. package/dist/types/src/libs/pkgs/check/checkProject.d.ts +0 -10
  73. package/dist/types/src/libs/pkgs/check/checkSubpackages.d.ts +0 -7
  74. package/dist/types/src/libs/pkgs/check/index.d.ts +0 -1
  75. package/dist/types/src/libs/pkgs/check.d.ts +0 -27
  76. package/dist/types/src/libs/pkgs/checkPkgSize.d.ts +0 -7
  77. package/dist/types/src/libs/pkgs/collectDeps.d.ts +0 -1
  78. package/dist/types/src/libs/pkgs/collectMaps.d.ts +0 -4
  79. package/dist/types/src/libs/pkgs/index.d.ts +0 -4
  80. package/dist/types/src/libs/pkgs/pack.d.ts +0 -12
  81. package/dist/types/src/libs/pkgs/partition.d.ts +0 -9
  82. package/dist/types/src/libs/pkgs/setup.d.ts +0 -3
  83. package/dist/types/src/libs/sttpkgs/encrypt.d.ts +0 -4
  84. package/dist/types/src/libs/sttpkgs/getSTTPKGHeader.d.ts +0 -5
  85. package/dist/types/src/libs/sttpkgs/header.d.ts +0 -5
  86. package/dist/types/src/libs/sttpkgs/index.d.ts +0 -13
  87. package/dist/types/src/libs/ttpkgs/header.d.ts +0 -1
  88. package/dist/types/src/libs/ttpkgs/index.d.ts +0 -17
  89. package/dist/types/src/libs/utils/index.d.ts +0 -11
  90. package/dist/types/src/libs/utils/odr.d.ts +0 -11
  91. package/dist/types/src/odr/constant.d.ts +0 -2
  92. package/dist/types/src/odr/index.d.ts +0 -1
  93. package/dist/types/src/odr/mock.d.ts +0 -13
  94. package/dist/types/src/odr/typings.d.ts +0 -26
  95. package/dist/types/src/odr/utils.d.ts +0 -15
  96. package/dist/types/src/scripts/compile.d.ts +0 -5
  97. package/dist/types/src/scripts/debug.d.ts +0 -5
  98. package/dist/types/src/scripts/odr.d.ts +0 -1
  99. package/dist/types/src/scripts/pack.d.ts +0 -5
  100. package/dist/types/src/utils/Deferred.d.ts +0 -10
  101. package/dist/types/src/utils/accBuffer.d.ts +0 -4
  102. package/dist/types/src/utils/collectAssets.d.ts +0 -6
  103. package/dist/types/src/utils/compress.d.ts +0 -10
  104. package/dist/types/src/utils/createBuffer.d.ts +0 -1
  105. package/dist/types/src/utils/ensureDirSync.d.ts +0 -1
  106. package/dist/types/src/utils/getDirSizeSync.d.ts +0 -1
  107. package/dist/types/src/utils/getMd5.d.ts +0 -1
  108. package/dist/types/src/utils/logger.d.ts +0 -14
  109. package/dist/types/src/utils/odr.d.ts +0 -11
  110. package/dist/types/src/utils/removeEmptyDir.d.ts +0 -6
  111. /package/dist/{types/src/libs → libs}/compressPkgs/header.d.ts +0 -0
  112. /package/dist/{types/src/libs → libs}/compressPkgs/index.d.ts +0 -0
  113. /package/dist/{types/src/libs → libs}/encryptPkgs/encrypt.d.ts +0 -0
  114. /package/dist/{types/src/libs → libs}/encryptPkgs/header.d.ts +0 -0
  115. /package/dist/{types/src/libs → libs}/encryptPkgs/index.d.ts +0 -0
  116. /package/dist/{types/src/typings → typings}/index.d.ts +0 -0
  117. /package/dist/{types/src/typings → typings}/odr.d.ts +0 -0
  118. /package/dist/{types/src/libs/utils → utils}/Deferred.d.ts +0 -0
  119. /package/dist/{types/src/libs/utils → utils}/accBuffer.d.ts +0 -0
  120. /package/dist/{types/src/libs/utils → utils}/collectAssets.d.ts +0 -0
  121. /package/dist/{types/src/libs/utils → utils}/compress.d.ts +0 -0
  122. /package/dist/{types/src/libs/utils → utils}/createBuffer.d.ts +0 -0
  123. /package/dist/{types/src/utils → utils}/deleteJsFilesSync.d.ts +0 -0
  124. /package/dist/{types/src/utils → utils}/deleteNoJsFilesSync.d.ts +0 -0
  125. /package/dist/{types/src/libs/utils → utils}/ensureDirSync.d.ts +0 -0
  126. /package/dist/{types/src/libs/utils → utils}/getDirSizeSync.d.ts +0 -0
  127. /package/dist/{types/src/libs/utils → utils}/getMd5.d.ts +0 -0
  128. /package/dist/{types/src/utils → utils}/index.d.ts +0 -0
  129. /package/dist/{types/src/libs/utils → utils}/logger.d.ts +0 -0
  130. /package/dist/{types/src/libs/utils → utils}/removeEmptyDir.d.ts +0 -0
  131. /package/dist/{types/src/utils → utils}/removeSystemUseless.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -2,4 +2,14 @@
2
2
 
3
3
  - 0.0.1-beta.11: 发布打包产物文件 .txt 类型,看是否可以正常上传
4
4
 
5
- - 0.0.1-beta.19: 支持打包
5
+ - 0.0.1-beta.19: 支持打包, 拆出分包逻辑,供 CLI 复用
6
+
7
+ - 0.0.1-beta.20: 移除项目中 pack 代码,代码 https://code.byted.org/tiktok/ttmg-pack
8
+
9
+ - 0.0.1-beta.21: 修复 ttmg-pack 提取 root/name 问题
10
+
11
+ - 0.0.1: 发布正式版本
12
+ - 0.0.2:
13
+ - 修复 windows 兼容问题
14
+ - 修复 分包判断问题
15
+ - 修复 主包大小限制问题
package/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
 
2
2
  ## __TEST__
3
3
  编译打包的测试用例
4
- ```
4
+ ```bash
5
5
  npm test
6
6
  ```
7
-
8
7
  ## src
9
8
  编译打包相关源码
10
9
 
@@ -1,6 +1,5 @@
1
1
  export declare const GAME_PACK_CONFIG_FILE_NAME = "packageConfig.json";
2
2
  export declare const GAME_ORIGIN_CONFIG_FILE_NAME = "game.json";
3
- export declare const GAME_MODULE_CONFIG_FILE_NAME = "moduleConfig.json";
4
3
  export declare const GAME_OUTPUT_CONFIG_FILE_NAME = "output.json";
5
4
  export declare const GAME_MAIN_PACKAGE_NAME = "__GAME__";
6
5
  export declare const TTPKG_TAG = "TPKG";
@@ -1,5 +1,5 @@
1
- export declare function compile({ source_dir: entryDir, output_dir: outputDir, client_key, }: {
1
+ export declare function compile({ source_dir: entryDir, output_dir: outputDir, enable_odr, }: {
2
2
  source_dir: string;
3
3
  output_dir: string;
4
- client_key: string;
4
+ enable_odr: boolean;
5
5
  }): Promise<void>;
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";var e=require("path"),t=require("fs"),n=require("ttmg-pack"),r=require("crypto"),o=require("p-limit"),i=require("winston"),s=require("zlib"),u=require("buffer");const a=new class{constructor(){this.logger=null}init(t){this.logger=i.createLogger({level:"info",format:i.format.combine(i.format.timestamp(),i.format.json()),transports:[new i.transports.File({filename:e.join(t,"pack.log")}),new i.transports.Console]})}info(e){this.logger.info(e)}error(e){this.logger.error(e)}warn(e){this.logger.warn(e)}debug(e){this.logger.debug(e)}setOutput(e){this.output=e}};function f({rootDir:n,entryDir:r,pkgName:o,excludeFileExt:i=[]}){const s=[],u=t.readdirSync(r);for(const a of u){const u=e.join(r,a);if(t.statSync(u).isDirectory())s.push(...f({entryDir:u,excludeFileExt:i,rootDir:n,pkgName:o}));else{const r=e.extname(a);if(!i.includes(r)){const r=e.relative(e.join(n,o),u);s.push({name:r,buffer:t.readFileSync(u)})}}}return s}const c="packageConfig.json";function l(e,t){if("string"===t)return Buffer.from(e);if("uint16le"===t){const t=Buffer.alloc(2);return t.writeUInt16LE(e),t}const n=Buffer.alloc(4);return n.writeUInt32LE(e),n}function p(){}class m{constructor(){this.taskResolver=p,this.taskRejecter=p,this.task=new Promise((e,t)=>{this.taskResolver=e,this.taskRejecter=t})}resolve(e){this.taskResolver(e)}reject(e){this.taskRejecter(e)}then(...e){return this.task.then(...e)}catch(...e){return this.task.catch(...e)}}let g,h;async function d(e){return await(async()=>{if(!h){h=new m;try{g=require("@bokuweb/zstd-wasm"),await g.init(),h.resolve()}catch(e){h.reject(e)}}await h})(),Buffer.from(g.compress(Buffer.from(e),19))}function w(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var y,T,b,B={exports:{}};
2
+ /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var k=w(function(){if(b)return T;b=1;var e=(y||(y=1,function(e,t){var n=u,r=n.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function i(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(o(n,t),t.Buffer=i),i.prototype=Object.create(r.prototype),o(r,i),i.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},i.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var o=r(e);return void 0!==t?"string"==typeof n?o.fill(t,n):o.fill(t):o.fill(0),o},i.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},i.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(B,B.exports)),B.exports).Buffer;return T=function(t,n){for(var r=Math.max(t.length,n.length),o=e.allocUnsafe(r),i=0;i<r;++i)o[i]=t[i]^n[i];return o}}());let S,P;async function $(e,t){const n=[];let r=1024;await(async()=>{if(!P){P=new m;try{S=require("ttmg-bdsword"),await S.InitBDSword(),P.resolve()}catch(e){P.reject(e)}}await P})();const o=e.slice(0,r),i=await S.RC4Encrypt(o,t),{encData:s}=i;for(n.push(Buffer.from(s));r<e.length;){const o=e.slice(r,r+32);if(o.length<32){const e=t.slice(0,o.length);n.push(k(o,e))}else n.push(k(o,t));r+=32}return Buffer.concat(n)}async function j({ttpkg:n,context:o}){let i=Date.now();a.info(`sttpkgs start,startTime:${i}`);const{seed:s,outputDir:u}=o,{name:f}=n,c={name:f,code:n.code};let p=o.needEncrypt;const m=Date.now().toString(16),g=r.createHash("sha256").update(s+m).digest();p=p&&n.code.byteLength>1024,p?(a.info(`TTPKG 加密文件 Buffer 开始, ${f}`),c.code=await $(n.code,g),a.info(`TTPKG 加密文件 Buffer 完成, ${f}`)):a.info(`TTPKG 压缩后内容小于1024B, 不进行加密, ${f}`),a.info(`STTPKG 生成 Header 开始, ${f}`);const h=function({salt:e,needEncrypt:t,useBrotli:n}){const r=[];if(r.push(l("SPKG","string")),r.push(l(1,"uint32le")),r.push(l(3,"uint16le")),t){const t="SA",{length:n}=e,o=2,{length:i}=t,s=o+i+n;r.push(l(s,"uint16le")),r.push(l(n,"uint16le")),r.push(l(t,"string")),r.push(l(e,"string"))}else r.push(l(0,"uint16le"));return Buffer.concat(r)}({salt:m,needEncrypt:p,useBrotli:!1});var d;return a.info(`STTPKG 生成 Header 完成, ${f}`),c.code=Buffer.concat([h,c.code]),c.md5=(d=c.code,r.createHash("md5").update(d).digest("hex")),t.writeFileSync(e.join(u,`${f}.txt`),c.code,"utf-8"),a.info(`基于游戏源代码生成 STTPKG 产物完成 ${c.name}`),t.rmSync(e.join(u,n.name),{recursive:!0}),a.info(`sttpkgs end,duration:${Date.now()-i}ms`),c}async function E({name:t,config:n={},root:r}){const{useBrotli:o=!1}=n,i=function(){const e=[];return e.push(l("TPKG","string")),e.push(l(2,"uint32le")),e.push(l(0,"uint32le")),e}(),u=i.reduce((e,t)=>e+t.length,0);a.info(`TTPKG 收集文件开始, ${t}`);const c=f({rootDir:r,entryDir:e.join(r,t),pkgName:t,excludeFileExt:[]});a.info(`TTPKG 收集文件完成, ${t}`),a.info(`TTPKG 生成文件 Buffer 开始, ${t}`);const p=function({offset:e,assets:t}){const n=[],r=function(e=[]){const t=[];let n;for(const r of e)r.name.endsWith("app-config.json")?n=r:t.push(r);return n&&t.unshift(n),t}(t);n.push(l(r.length,"uint32le")),e+=4;let o=0;r.forEach(e=>{const t=Buffer.byteLength(e.name);o+=t+12});let i=0;return r.forEach(t=>{const r=Buffer.byteLength(t.name);n.push(l(r,"uint32le"));const s=Buffer.byteLength(Buffer.from(t.buffer)),u=Buffer.alloc(r+4+4);u.write(t.name,0),u.writeInt32LE(e+o+i,r),u.writeInt32LE(s,r+4),n.push(u),i+=s}),r.forEach(e=>{let t=e.buffer;"string"==typeof t&&(t=Buffer.from(t)),n.push(t)}),n}({offset:u,assets:c});a.info(`TTPKG 生成文件 Buffer 完成, ${t}`);const m={name:t,code:Buffer.concat([...i,...p])};var g;return o?(a.info(`TTPKG 压缩文件 Buffer 开始, ${t}`),m.code=await(g=m.code,new Promise((e,t)=>{const n=Buffer.isBuffer(g)?g:Buffer.from(g);s.brotliCompress(n,(n,r)=>{n?t(n):e(r)})})),a.info(`TTPKG 压缩文件 Buffer 完成, ${t}`)):(a.info(`TTPKG 压缩文件 Buffer 开始, ${t}`),m.code=await d(m.code),a.info(`TTPKG 压缩文件 Buffer 完成, ${t}`)),m}exports.compile=async function({source_dir:r,output_dir:i,enable_odr:s=!0}){let u=Date.now();a.init(i),a.info("TTMG_COMPILE_VERSION: 0.0.2"),a.info(`compile start, startTime:${u}`);let f={error_message:"success",config_path:`/${c}`};try{await n.buildPkgs({entry:r,output:i,build:{enableOdr:!0,pkgSizeLimit:31457280,mainPkgSizeLimit:4194304,independentSubPkgSizeLimit:4194304}});const u=await async function(n){let r=Date.now();a.info(`ttpkgs start,startTime:${r}`);const i=e.join(n,c),s=JSON.parse(t.readFileSync(i,"utf-8")).packages,u=o(10),f=[];for(const e in s){const t=await u(()=>E({name:e,config:{useBrotli:!1},root:n}));f.push(t)}return a.info(`压缩游戏包完成,duration:${Date.now()-r}ms`),f}(i);await async function({outputDir:n,ttpkgs:r,seed:i}){a.info("开始加密游戏包"),a.info(`游戏加密密钥:${i}`);const s=e.join(n,c),u=JSON.parse(t.readFileSync(s,"utf-8")),f=u.packages,l=o(10),p=await Promise.all(r.map(e=>l(async()=>{const t=await j({ttpkg:e,context:{seed:i,outputDir:n,needEncrypt:u.needEncrypt}});return f[e.name]=Object.assign(Object.assign({},f[e.name]),{md5:t.md5}),t})));return t.writeFileSync(s,JSON.stringify(u,null,2),"utf-8"),a.info("加密游戏包完成"),p}({outputDir:i,ttpkgs:u,seed:"TTMG_NATIVE"}),s&&await n.writeOdrConfig(i)}catch(e){a.error(`pack error:${e.message}`),f.error_message=e.message}t.writeFileSync(e.join(i,"output.json"),JSON.stringify(f),"utf-8"),a.info(`compile end:${Date.now()-u}ms`)};
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/utils/logger.ts","../src/utils/collectAssets.ts","../src/constants/index.ts","../src/utils/createBuffer.ts","../src/utils/Deferred.ts","../src/utils/compress.ts","../../../../../.eden-mono/temp/node_modules/.pnpm/buffer-xor@2.0.2/node_modules/buffer-xor/index.js","../../../../../.eden-mono/temp/node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../src/libs/encryptPkgs/encrypt.ts","../src/libs/encryptPkgs/index.ts","../src/libs/encryptPkgs/header.ts","../src/utils/getMd5.ts","../src/libs/compressPkgs/index.ts","../src/libs/compressPkgs/header.ts","../src/utils/accBuffer.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,"var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",null,null,null,null,null,null,null,null],"names":["logger","constructor","this","init","output","winston","createLogger","level","format","combine","timestamp","json","transports","File","filename","path","join","Console","info","msg","error","warn","debug","setOutput","collectAssets","rootDir","entryDir","pkgName","excludeFileExt","flattenFiles","files","fs","readdirSync","file","filePath","statSync","isDirectory","push","ext","extname","includes","relativePath","relative","name","buffer","readFileSync","GAME_PACK_CONFIG_FILE_NAME","createBuffer","content","type","Buffer","from","buf","alloc","writeUInt16LE","writeUInt32LE","noop","Deferred","taskResolver","taskRejecter","task","Promise","resolve","reject","value","reason","then","params","catch","zstd","zstdInitPromise","async","compressWithZStd","code","require","e","zstdInit","compress","require$$0","copyProps","src","dst","key","SafeBuffer","arg","encodingOrOffset","length","allocUnsafe","allocUnsafeSlow","module","exports","prototype","Object","create","TypeError","size","fill","encoding","undefined","SlowBuffer","bufferXor","a","b","Math","max","i","bdsword","bdswordInitPromise","encrypt","buffers","count","InitBDSword","bdswordInit","sliceCode","slice","result","RC4Encrypt","encData","codeBytes","sliceKey","xor","concat","encryptPkg","ttpkg","context","sttpkgsStartTime","Date","now","seed","outputDir","sttpkg","needEncrypt","salt","toString","encryptKey","crypto","createHash","update","digest","byteLength","sttpkgHeader","useBrotli","saltId","saltLength","saltInfoLength","saltIdLength","extensionLength","getSTTPKGHeader","md5","writeFileSync","rmSync","recursive","compressPkg","config","root","headerBuffers","getTTPKGHeader","offset","reduce","prev","assets","fileBuffers","sortedAssets","appConfigAsset","asset","endsWith","unshift","filterAssets","fileInfoZoneLen","forEach","nameLen","UNIT32_LEN","offsetToFileZone","temp","write","writeInt32LE","accBuffer","pkg","input","isBuffer","zlib","brotliCompress","err","compressedData","source_dir","output_dir","enable_odr","startTime","compileResult","error_message","config_path","buildPkgs","entry","build","enableOdr","pkgSizeLimit","mainPkgSizeLimit","independentSubPkgSizeLimit","ttpkgsResult","ttpkgsStartTime","outputPath","packages","JSON","parse","limit","pLimit","results","compressPkgs","ttpkgs","sttpkgs","all","map","sttpkgResult","assign","stringify","encryptPkgs","writeOdrConfig","message"],"mappings":"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","x_google_ignoreList":[6,7]}
@@ -0,0 +1,2 @@
1
+ export { encryptPkgs } from './encryptPkgs';
2
+ export { compressPkgs } from './compressPkgs';
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "ttmg-compile",
3
3
  "author": "ttmg",
4
- "version": "0.0.1-beta.18",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.mjs",
4
+ "version": "0.0.2",
5
+ "types": "dist/index.d.ts",
6
+ "main": "dist/index.js",
7
7
  "scripts": {
8
- "test": "node __test__/index.js",
9
8
  "build": "rollup -c",
10
- "compile": "node __test__/index.js",
11
- "odr": "node __test__/odr.js",
9
+ "test": "node __TEST__/index.js",
12
10
  "prepublishOnly": "npm run build",
13
- "debug": "node __test__/pack.js",
14
11
  "watch": "rollup -c --watch"
15
12
  },
16
13
  "files": [
@@ -23,19 +20,17 @@
23
20
  "@babel/traverse": "^7.28.0",
24
21
  "@babel/types": "^7.28.1",
25
22
  "@bokuweb/zstd-wasm": "0.0.20",
26
- "@bytedance-dev/bdsword": "1.0.6",
27
- "acorn": "^8.15.0",
28
- "adm-zip": "^0.5.16",
29
23
  "buffer-xor": "2.0.2",
30
- "glob": "^11.0.3",
31
- "magic-string": "^0.30.17",
24
+ "magic-string": "0.30.17",
32
25
  "p-limit": "3.1.0",
33
- "tslib": "^2.8.1",
26
+ "ttmg-bdsword": "0.0.1",
27
+ "ttmg-pack": "0.0.46",
34
28
  "winston": "^3.17.0"
35
29
  },
36
30
  "devDependencies": {
37
31
  "@rollup/plugin-alias": "^5.1.1",
38
32
  "@rollup/plugin-commonjs": "^28.0.6",
33
+ "@rollup/plugin-json": "^6.1.0",
39
34
  "@rollup/plugin-node-resolve": "^16.0.1",
40
35
  "@rollup/plugin-replace": "^6.0.2",
41
36
  "@rollup/plugin-terser": "^0.4.4",
@@ -43,6 +38,7 @@
43
38
  "@types/node": "^24.2.0",
44
39
  "eslint": "^9.31.0",
45
40
  "rollup": "^4.46.2",
41
+ "rollup-plugin-copy": "^3.5.0",
46
42
  "typescript": "^5.9.2"
47
43
  },
48
44
  "publishConfig": {
@@ -1,8 +0,0 @@
1
- {
2
- "cSpell.words": [
3
- "odrpkgs",
4
- "SUBPACKAGES",
5
- "TTMG",
6
- "ttpkg"
7
- ]
8
- }
package/dist/index.cjs DELETED
@@ -1,3 +0,0 @@
1
- "use strict";var e=require("path"),t=require("fs"),n=require("winston"),o=require("crypto"),s=require("zlib"),r=require("acorn"),i=require("glob"),c=require("magic-string"),a=require("p-limit"),u=require("buffer");function f(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var l=f(e),m=f(t);const p="packageConfig.json",d="game.json",g="__GAME__",y=".txt",h="subpackages",k="_code",j="_asset",S=62914560,b=["ttmg_odr_tag_1","ttmg_odr_tag_2","ttmg_odr_tag_3"],w=209715200,_=31457280,$=209715200;function x(e){t.existsSync(e)||t.mkdirSync(e,{recursive:!0})}const O=new class{constructor(){this.logger=null}init(t){this.logger=n.createLogger({level:"info",format:n.format.combine(n.format.timestamp(),n.format.json()),transports:[new n.transports.File({filename:e.join(t,"pack.log")}),new n.transports.Console]})}info(e){this.logger.info(e)}error(e){this.logger.error(e)}warn(e){this.logger.warn(e)}debug(e){this.logger.debug(e)}setOutput(e){this.output=e}};function T(n){if(!t.existsSync(n))return!1;if(!t.statSync(n).isDirectory())return!1;let o=!0;const s=t.readdirSync(n);for(const r of s){const s=e.join(n,r);if(t.statSync(s).isDirectory()){T(s)||(o=!1)}else o=!1}return!!o&&(t.rmSync(n,{recursive:!0}),!0)}function B({rootDir:n,entryDir:o,pkgName:s,excludeFileExt:r=[]}){const i=[],c=t.readdirSync(o);for(const a of c){const c=e.join(o,a);if(t.statSync(c).isDirectory())i.push(...B({entryDir:c,excludeFileExt:r,rootDir:n,pkgName:s}));else{const o=e.extname(a);if(!r.includes(o)){const o=e.relative(e.join(n,s),c);i.push({name:o,buffer:t.readFileSync(c)})}}}return i}function E(e,t){if("string"===t)return Buffer.from(e);if("uint16le"===t){const t=Buffer.alloc(2);return t.writeUInt16LE(e),t}const n=Buffer.alloc(4);return n.writeUInt32LE(e),n}function v(){}class D{constructor(){this.taskResolver=v,this.taskRejecter=v,this.task=new Promise((e,t)=>{this.taskResolver=e,this.taskRejecter=t})}resolve(e){this.taskResolver(e)}reject(e){this.taskRejecter(e)}then(...e){return this.task.then(...e)}catch(...e){return this.task.catch(...e)}}let F,M;async function P(e){return await(async()=>{if(!M){M=new D;try{F=require("@bokuweb/zstd-wasm"),await F.init(),M.resolve()}catch(e){M.reject(e)}}await M})(),Buffer.from(F.compress(Buffer.from(e),19))}function G(n,o=[]){let s=0;if(!t.existsSync(n))return 0;const r=t.readdirSync(n,{withFileTypes:!0});for(const i of r){const r=e.join(n,i.name);i.isDirectory()?o.includes(i.name)||(s+=G(r,o)):i.isFile()&&(s+=t.statSync(r).size)}return s}function A(n){const o=t.readdirSync(n,{withFileTypes:!0});for(const s of o){const o=e.join(n,s.name);if(s.isDirectory())A(o);else if(s.isFile()&&(o.endsWith(".js")||o.endsWith(".js.map")))try{t.unlinkSync(o)}catch(e){}}}function N(n){const o=t.readdirSync(n,{withFileTypes:!0});for(const s of o){const o=e.join(n,s.name);if(s.isDirectory())N(o);else if(s.isFile()&&!o.endsWith(".js")&&!o.endsWith(".js.map"))try{t.unlinkSync(o)}catch(e){}}}const L=["node_modules","__MACOSX"],z=[".DS_Store","Thumbs.db"];async function R(n,o){O.info("开始基于源代码中的 game.json 生成 packageConfig.json");const s=e.join(n,d),r=JSON.parse(t.readFileSync(s,"utf-8")),i={};i[g]={url:"",md5:"",root:"",main:"game.js",output:`${g}${y}`},function(e){if(!e||0===e.length)return[];function t(e){return String(e).replace(/^\/+|\/+$/g,"")}function n(e){return String(e).trim().replace(/^\/+/,"")}function o(e){return e.endsWith("/")||!/\.[a-zA-Z0-9]+$/.test(e)}return e.map(e=>{const s=t(e.name);let r=n(e.root);const i=r.indexOf(s);return r=-1!==i?r.slice(i):s+(o(r)?"/game.js":"/"+r),o(r)&&(r=r.replace(/\/+$/,"")+"/game.js"),{main:r,root:s}})}(r.subpackages).forEach(e=>{i[e.root]={url:"",md5:"",root:`${h}/${e.root}`,main:`${h}/${e.main}`,output:`${e.root}${y}`}});const c={packages:i};return Object.keys(i).forEach(o=>{const s=e.join(n,i[o].main);if(!t.existsSync(s))throw O.error(`开发者源代码包中的子包 ${o} 中的 main 文件 ${i[o].main} 不存在`),new Error(`开发者源代码包中的子包 ${o} 中的 main 文件 ${i[o].main} 不存在`)}),t.existsSync(o)&&t.rmSync(o,{recursive:!0}),t.mkdirSync(o),t.writeFileSync(e.join(o,p),JSON.stringify(c,null,2)),O.info("基于源代码中的 game.json 生成 packageConfig.json 成功"),c}function q(e){const t=[];return Object.values(e).forEach(e=>{Object.values(e).forEach(e=>{t.push(...e)})}),t}function C(n,o=[".js",".ts",".jsx",".tsx"],s=[]){let r=[];if(!t.existsSync(n))return r;const i=t.readdirSync(n,{withFileTypes:!0});for(const t of i){const i=e.join(n,t.name);if(t.isDirectory()){if(s.includes(t.name))continue;r=r.concat(C(i,o,[]))}else o.some(e=>t.name.endsWith(e))&&r.push(i)}return r}function K(n,o){const s=function(n){return t.readdirSync(n).filter(o=>{const s=e.join(n,o);return t.statSync(s).isDirectory()&&!["node_modules","dist","build","output"].includes(o)}).map(e=>e+"/")}(n),c=i.sync("**/*.js",{cwd:n,ignore:["node_modules/**","dist/**","build/**","output/**"]}),a=[];c.forEach(o=>{const i=e.join(n,o),c=t.readFileSync(i,"utf-8");let u;try{u=r.parse(c,{ecmaVersion:"latest",sourceType:"module"})}catch(e){return}J(u,o=>{if("CallExpression"===o.type&&"Identifier"===o.callee.type&&("require"===o.callee.name||"requireAsync"===o.callee.name)&&o.arguments.length>0&&"Literal"===o.arguments[0].type){const r=o.arguments[0].value;let c=null;if(r.startsWith("."))c=e.resolve(e.dirname(i),r);else if(r.startsWith("/"))c=e.resolve(n,"."+r);else for(const t of s)if(r.startsWith(t)){c=e.resolve(n,r);break}c&&!function(e){if(t.existsSync(e)&&t.statSync(e).isFile())return!0;const n=[".js",".ts",".jsx",".tsx"];for(const o of n)if(t.existsSync(e+o)&&t.statSync(e+o).isFile())return!0;return!1}(c)&&(c=null),a.push({file:e.relative(n,i),callee:o.callee.name,requirePath:r,resolvedPath:c?e.relative(n,c):""})}})});const u=a.map(e=>{let t="";Object.keys(o).forEach(n=>{e.resolvedPath&&e.resolvedPath.startsWith(o[n].root)&&(t=n)});let n="";return Object.keys(o).forEach(t=>{e.file.startsWith(o[t].root)&&(n=t)}),Object.assign(Object.assign({},e),{curModule:n,depModule:t})}),f=[".js",".ts",".jsx",".tsx"];return u.reduce((e,t)=>{return e[t.curModule]||(e[t.curModule]={}),t.curModule===t.depModule||t.resolvedPath&&(n=t.resolvedPath,f.some(e=>n.endsWith(e)))&&(e[t.curModule]=Object.assign(Object.assign({},e[t.curModule]),{[t.resolvedPath]:t.depModule})),e;var n},{})}function J(e,t){t(e);for(let n in e)if(e.hasOwnProperty(n)){const o=e[n];Array.isArray(o)?o.forEach(e=>e&&"string"==typeof e.type&&J(e,t)):o&&"string"==typeof o.type&&J(o,t)}}function W({gameEntry:n,gameOutput:o,pkgName:s,allDeps:r,allMaps:i,pkgConfig:a,destRoot:u}){let f=Date.now();O.info(`pack start,startTime:${f}`);const l=i[s],m={main:a.main,deps:r[s]||{},map:i[s]};x(u),t.writeFileSync(e.join(u,"moduleConfig.json"),JSON.stringify(m));for(const o in l){const r=l[o];if(!Array.isArray(r)||0===r.length)continue;const i=new c.Bundle({separator:"\n"});for(const s of r){const r=e.join(n,s);if(t.existsSync(r)&&(e.basename(r)!==o&&/\.js$/i.test(s))){const e=t.readFileSync(r,"utf-8"),n=s.replace(/\\/g,"/"),o=`define("game:${n}", ["require", "requireAsync", "module", "exports", "sandboxGlobal"], function(require, requireAsync, module, exports, sandboxGlobal){\nwith(sandboxGlobal){\n`,a="\n}\n});\n",u=new c(e,{filename:n}),f=new c(o).appendLeft(o.length,u.toString()).append(a);i.addSource({content:f,filename:n})}}const a=e.join(u,e.basename(o));t.writeFileSync(a,i.toString()+`\n//# sourceMappingURL=${o}.map`);const f=i.generateMap({hires:!0,includeContent:!0,file:o});t.writeFileSync(a+".map",f.toString()),O.info(`pack end,packName:${s}`)}}function I({pkgRoot:n,destRoot:o,packedFiles:s,gameEntry:r,gameOutput:i,skipDirs:c=[],isRoot:a=!0}){if(!t.existsSync(n))return;const u=t.readdirSync(n,{withFileTypes:!0});for(const f of u){const u=e.join(n,f.name),l=e.join(o,f.name);a&&f.isDirectory()&&c.includes(f.name)||(f.isDirectory()?I({pkgRoot:u,destRoot:l,gameOutput:i,packedFiles:s,gameEntry:r,skipDirs:c,isRoot:!1}):(x(e.dirname(l)),s.includes(e.relative(r,u))||t.copyFileSync(u,l)))}}async function U({gameEntry:n,gameOutput:o}){let s=Date.now();!function(n){!function n(o){let s;try{s=t.readdirSync(o)}catch(e){return void console.warn(`无法访问目录: ${o}`,e)}s.forEach(s=>{const r=e.join(o,s);try{const e=t.statSync(r);e.isDirectory()?L.includes(s)?(t.rmSync(r,{recursive:!0,force:!0}),console.log(`已删除无用目录: ${r}`)):n(r):e.isFile()&&z.includes(s)&&(t.rmSync(r,{force:!0}),console.log(`已删除无用文件: ${r}`))}catch(e){console.warn(`无法处理: ${r}`,e)}})}(n)}(n),O.info(`pack start,startTime:${s}`);const{packages:r}=await R(n,o),i=K(n,r),c=function(t,n){O.info("开始基于游戏源代码收集分包中的 JS 文件");const o={},s=Object.values(n).filter(e=>e.root&&""!==e.root).map(t=>t.root.split(e.sep)[0]).filter(Boolean),r=Array.from(new Set(s));for(const s in n){const i=n[s];let c,a;"__GAME__"===s?(a=C(t,[".js",".ts",".jsx",".tsx"],r),c=t):(c=e.join(t,i.root),a=C(c));const u=[];a.forEach(n=>{u.push(e.relative(t,n).replace(/\\/g,"/"))});const f=n[s].root;o[s]={[f?`${f}/game.pack.js`:"game.pack.js"]:u}}return O.info("基于游戏源代码收集分包中的 JS 文件完成"),o}(n,r);for(const t in c){O.info(`开始基于游戏源代码打包,包名:${t}`);let s=Date.now();const a=r[t],u=e.join(n,a.root),f=e.join(o,t,a.root);W({gameEntry:n,gameOutput:o,allDeps:i,allMaps:c,pkgName:t,pkgConfig:a,destRoot:f}),I({gameEntry:n,gameOutput:o,pkgRoot:u,destRoot:f,packedFiles:q(c),skipDirs:[h]});T(e.join(o,t)),O.info(`基于游戏源代码打包分包完成,包名:${t}`),O.info(`基于游戏源代码打包分包耗时,包名:${t},耗时:${Date.now()-s}ms`)}return O.info(`pack end,duration:${Date.now()-s}ms`),{}}function H(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var V,X,Z,Q={exports:{}};
2
- /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var Y=H(function(){if(Z)return X;Z=1;var e=(V||(V=1,function(e,t){var n=u,o=n.Buffer;function s(e,t){for(var n in e)t[n]=e[n]}function r(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=n:(s(n,t),t.Buffer=r),r.prototype=Object.create(o.prototype),s(o,r),r.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},r.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var s=o(e);return void 0!==t?"string"==typeof n?s.fill(t,n):s.fill(t):s.fill(0),s},r.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},r.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(Q,Q.exports)),Q.exports).Buffer;return X=function(t,n){for(var o=Math.max(t.length,n.length),s=e.allocUnsafe(o),r=0;r<o;++r)s[r]=t[r]^n[r];return s}}());let ee,te;async function ne(e,t){const n=[];let o=1024;await(async()=>{if(!te){te=new D;try{ee=require("@bytedance-dev/bdsword"),await ee.InitBDSword(),te.resolve()}catch(e){te.reject(e)}}await te})();const s=e.slice(0,o),r=await ee.RC4Encrypt(s,t),{encData:i}=r;for(n.push(Buffer.from(i));o<e.length;){const s=e.slice(o,o+32);if(s.length<32){const e=t.slice(0,s.length);n.push(Y(s,e))}else n.push(Y(s,t));o+=32}return Buffer.concat(n)}async function oe({ttpkg:n,context:s}){let r=Date.now();O.info(`sttpkgs start,startTime:${r}`);const{seed:i,outputDir:c}=s,{name:a}=n,u={name:a,code:n.code};let f=s.needEncrypt;const l=Date.now().toString(16),m=o.createHash("sha256").update(i+l).digest();f=f&&n.code.byteLength>1024,f?(O.info(`TTPKG 加密文件 Buffer 开始, ${a}`),u.code=await ne(n.code,m),O.info(`TTPKG 加密文件 Buffer 完成, ${a}`)):O.info(`TTPKG 压缩后内容小于1024B, 不进行加密, ${a}`),O.info(`STTPKG 生成 Header 开始, ${a}`);const p=function({salt:e,needEncrypt:t,useBrotli:n}){const o=[];if(o.push(E("SPKG","string")),o.push(E(1,"uint32le")),o.push(E(3,"uint16le")),t){const t="SA",{length:n}=e,s=2,{length:r}=t,i=s+r+n;o.push(E(i,"uint16le")),o.push(E(n,"uint16le")),o.push(E(t,"string")),o.push(E(e,"string"))}else o.push(E(0,"uint16le"));return Buffer.concat(o)}({salt:l,needEncrypt:f,useBrotli:!1});var d;return O.info(`STTPKG 生成 Header 完成, ${a}`),u.code=Buffer.concat([p,u.code]),u.md5=(d=u.code,o.createHash("md5").update(d).digest("hex")),t.writeFileSync(e.join(c,`${a}${y}`),u.code,"utf-8"),O.info(`基于游戏源代码生成 STTPKG 产物完成 ${u.name}`),t.rmSync(e.join(c,n.name),{recursive:!0}),O.info(`sttpkgs end,duration:${Date.now()-r}ms`),u}async function se({name:t,config:n={},root:o}){const{useBrotli:r=!1}=n,i=function(){const e=[];return e.push(E("TPKG","string")),e.push(E(2,"uint32le")),e.push(E(0,"uint32le")),e}(),c=i.reduce((e,t)=>e+t.length,0);O.info(`TTPKG 收集文件开始, ${t}`);const a=B({rootDir:o,entryDir:e.join(o,t),pkgName:t,excludeFileExt:[]});O.info(`TTPKG 收集文件完成, ${t}`),O.info(`TTPKG 生成文件 Buffer 开始, ${t}`);const u=function({offset:e,assets:t}){const n=[],o=function(e=[]){const t=[];let n;for(const o of e)o.name.endsWith("app-config.json")?n=o:t.push(o);return n&&t.unshift(n),t}(t);n.push(E(o.length,"uint32le")),e+=4;let s=0;o.forEach(e=>{const t=Buffer.byteLength(e.name);s+=t+12});let r=0;return o.forEach(t=>{const o=Buffer.byteLength(t.name);n.push(E(o,"uint32le"));const i=Buffer.byteLength(Buffer.from(t.buffer)),c=Buffer.alloc(o+4+4);c.write(t.name,0),c.writeInt32LE(e+s+r,o),c.writeInt32LE(i,o+4),n.push(c),r+=i}),o.forEach(e=>{let t=e.buffer;"string"==typeof t&&(t=Buffer.from(t)),n.push(t)}),n}({offset:c,assets:a});O.info(`TTPKG 生成文件 Buffer 完成, ${t}`);const f={name:t,code:Buffer.concat([...i,...u])};var l;return r?(O.info(`TTPKG 压缩文件 Buffer 开始, ${t}`),f.code=await(l=f.code,new Promise((e,t)=>{const n=Buffer.isBuffer(l)?l:Buffer.from(l);s.brotliCompress(n,(n,o)=>{n?t(n):e(o)})})),O.info(`TTPKG 压缩文件 Buffer 完成, ${t}`)):(O.info(`TTPKG 压缩文件 Buffer 开始, ${t}`),f.code=await P(f.code),O.info(`TTPKG 压缩文件 Buffer 完成, ${t}`)),f}const re={__GAME__:{code_url:"https://connect.tiktok-minis.com/test/__GAME___code.txt",asset_url:"https://connect.tiktok-minis.com/test/__GAME___asset.txt",asset_md5:"8e3cc2ebd5536e9183b93fda34c1e7f4",root:"",main:"game.js"},configBundle:{root:"subpackages/configBundle",main:"subpackages/configBundle/game.js",asset_md5:"f624a1b37fb35d4dfb1975105a51ebd4",code_url:"https://connect.tiktok-minis.com/test/configBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/configBundle_asset.txt"},gameBundle:{main:"subpackages/gameBundle/game.js",root:"subpackages/gameBundle",asset_md5:"fcc9f686bbc8d6f983263e7132598b26",code_url:"https://connect.tiktok-minis.com/test/gameBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/gameBundle_asset.txt"},mainBundle:{main:"subpackages/mainBundle/game.js",root:"subpackages/mainBundle",asset_md5:"36b9674d48f9fbb0de6e8f48b194aebc",code_url:"https://connect.tiktok-minis.com/test/mainBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/mainBundle_asset.txt"},resources:{root:"subpackages/resources",main:"subpackages/resources/game.js",asset_md5:"1c4608d7690750f7bd5c00663013fc70",code_url:"https://connect.tiktok-minis.com/test/resources_code.txt",asset_url:"https://connect.tiktok-minis.com/test/resources_asset.txt"},iceAndFire:{root:"subpackages/iceAndFire",main:"subpackages/iceAndFire/game.js",asset_md5:"c7fd8e8506dd59725269027a52e2cae4",code_url:"https://connect.tiktok-minis.com/test/iceAndFire_code.txt",asset_url:"https://connect.tiktok-minis.com/test/iceAndFire_asset.txt"},pushstone:{root:"subpackages/pushstone",main:"subpackages/pushstone/game.js",asset_md5:"f5061dba94ad53e1f578325a7cb26a01",code_url:"https://connect.tiktok-minis.com/test/pushstone_code.txt",asset_url:"https://connect.tiktok-minis.com/test/pushstone_asset.txt"},main:{root:"subpackages/main",main:"subpackages/main/game.js",asset_md5:"aece2f69cc168d7cefb248e8574c3371",code_url:"https://connect.tiktok-minis.com/test/main_code.txt",asset_url:"https://connect.tiktok-minis.com/test/main_asset.txt"}},ie=[{id:""+1e17*Math.random(),packages:re},{id:""+1e17*Math.random(),packages:re}];async function ce(){const n=e.join(__dirname,"temp");t.existsSync(n)||t.mkdirSync(n);const o=await async function(){return ie}();console.log("odr_games",o),function(e,t){for(const n of e){const{id:e,packages:o}=n,s=l.join(t,e);m.existsSync(s)||m.mkdirSync(s);for(const e in o){const t=o[e],{code_url:n}=t,r=require("child_process").execSync(`curl -s "${n}"`).toString();console.log("downloadAndSaveCodesSync code",n);const i=`${e}.txt`,c=l.join(s,i);m.writeFileSync(c,r)}}}(o,n);const s={};for(const t of o){const{id:o,packages:r}=t,i=e.join(n,o);s[o]=G(i)}const r={};b.forEach(e=>{r[e]=[]});const i={};for(const c of o){const{id:o,packages:a}=c,u=s[o];if(u>S)continue;let f=null;for(const i of b){const c=e.join(n,i);t.existsSync(c)||t.mkdirSync(c);if(r[i].reduce((e,t)=>e+s[t],0)+u<=S){const s=e.join(n,o),a=e.join(c,o);t.cpSync(s,a,{recursive:!0}),r[i].push(o),f=i;break}}if(f){i[o]={tag:f,packages:{}};for(const e in a){const t=a[e];console.log("TTMGODRConfig[gameId].packages",e,t),i[o].packages[e]={root:t.root,main:t.main,asset_md5:t.asset_md5,asset_url:t.asset_url}}}}const c=e.join(n,"TTMG_ODR_CONFIG.json");t.writeFileSync(c,JSON.stringify(i,null,2),"utf-8"),console.log("TTMG_ODR_CONFIG.json 已生成:",c)}function ae(n,o){O.info("start check project");const{projectSizeLimit:s}=o;!function(n){O.info("start check config");const o=e.join(n,d);if(!t.existsSync(o)){const e="can not find game.json in game source code, please check it";throw O.error(e),new Error(e)}O.info("check config successfully")}(n),function(e,t){O.info("start check project size");const n=G(e,[]),o=Math.round(n/1048576),s=Math.round(t/1048576);if(n>t){const e=`Game size ${o}MB, must not exceed ${s}MB`;throw O.error(e),new Error(e)}O.info(`Game size ${o}MB, check successfully!`),O.info("Game size check successfully!")}(n,s),O.info("check project successfully")}function ue(e,t){O.info("start check main package");const{mainPackageSizeLimit:n}=t;O.info("check game.js");const o=l.join(e,"game.js");if(!m.existsSync(o)){const e="game.js must exist in main package!";throw O.error(e),new Error(e)}O.info("check game.js successfully"),function({entryDir:e,limit:t}){O.info("start check main package size");const n=G(e,["subpackages"]),o=Math.round(n/1048576),s=Math.round(t/1048576);if(n>t){const e=`Main package size ${o}MB, must not exceed ${s}MB`;throw O.error(e),new Error(e)}O.info(`Main package size ${o}MB, check successfully!`)}({entryDir:e,limit:n}),O.info("check main package successfully")}function fe(n,o){const{subpackageSizeLimit:s}=o;O.info("start check subpackages in game.json");const r=e.join(n,d),i=JSON.parse(t.readFileSync(r,"utf-8")).subpackages||[];(null==i?void 0:i.length)?i.forEach(o=>{if(!o.name||!o.root){const e="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.";throw O.error(e),new Error(e)}const r=e.join(n,o.root);if(!t.existsSync(r)){const e=`The subpackages configuration in game.json is invalid: can not find subpackage ${o.name} entry dir, please check it`;throw O.error(e),new Error(e)}const i=o.root;if(!t.existsSync(e.join(n,i))){const e=`The subpackages configuration in game.json is invalid: can not find subpackage ${o.name} root, please check it`;throw O.error(e),new Error(e)}!function({entryDir:t,subPkgName:n,limit:o}){const s=e.join(t,"subpackages",n),r=G(s,[]),i=Math.round(r/1048576);if(i>o){const e=`${n} Sub package size ${i}MB, must not exceed ${o/1048576}MB`;throw O.error(e),new Error(e)}O.info(`${n} Sub package size ${i}MB, check successfully!`)}({entryDir:n,subPkgName:o.name,limit:s})}):O.info("subpackages is empty"),O.info("check subpackages in game.json successfully")}function le({entryDir:e,context:t}){O.info("开始校验项目"),ae(e,t),ue(e,t),fe(e,t),O.info("校验项目完成")}exports.compile=async function({source_dir:n,output_dir:o,client_key:s}){let r=Date.now();O.init(o),O.info("TTMG_COMPILE_VERSION: 0.0.1-beta.18"),O.info(`compile start, startTime:${r}`);let i={error_message:"success",config_path:`/${p}`};try{await le({entryDir:n,context:{projectSizeLimit:w,subpackageSizeLimit:_,mainPackageSizeLimit:$}}),await U({gameEntry:n,gameOutput:o}),await async function(n){let o=Date.now();O.info(`makeOdrPkgs start, ${o}`);const s=e.join(n,p),r=JSON.parse(t.readFileSync(s,"utf-8")),i=r.packages;for(const o in i){const s=e.join(n,o),r=e.join(n,`${o}${k}`),c=e.join(n,`${o}${j}`);x(r),x(c),t.cpSync(s,r,{recursive:!0}),t.cpSync(s,c,{recursive:!0}),N(r),A(c),i[`${o}${k}`]=Object.assign(Object.assign({},i[o]),{code_url:"",code_md5:"",output:`${o}${k}${y}`}),i[`${o}${j}`]=Object.assign(Object.assign({},i[o]),{asset_url:"",asset_md5:"",output:`${o}${j}${y}`})}t.writeFileSync(s,JSON.stringify(r,null,2)),O.info(`makeOdrPkgs end, ${Date.now()-o}ms`)}(o);const s=await async function(n){let o=Date.now();O.info(`ttpkgs start,startTime:${o}`);const s=e.join(n,p),r=JSON.parse(t.readFileSync(s,"utf-8")).packages,i=a(10),c=[];for(const e in r){const t=await i(()=>se({name:e,config:{useBrotli:!1},root:n}));c.push(t)}return O.info(`ttpkgs end,duration:${Date.now()-o}ms`),c}(o);await async function({outputDir:n,ttpkgs:o,seed:s}){const r=e.join(n,p),i=JSON.parse(t.readFileSync(r,"utf-8")),c=i.packages,u=a(10);O.info("基于游戏源代码生成 STTPKGS 产物开始");const f=await Promise.all(o.map(e=>u(async()=>{const t=await oe({ttpkg:e,context:{seed:s,outputDir:n,needEncrypt:i.needEncrypt}});return c[e.name]=Object.assign(Object.assign({},c[e.name]),{md5:t.md5}),t})));return t.writeFileSync(r,JSON.stringify(i,null,2),"utf-8"),O.info("基于游戏源代码生成 STTPKGS 产物完成"),f}({outputDir:o,ttpkgs:s,seed:"TTMG_NATIVE"}),await async function(e){O.info("writeOdrPackagesConfig start");const t=l.join(e,p),n=JSON.parse(m.readFileSync(t,"utf-8")),o=n.packages,s=n.odr_packages||{};for(const e in o){if(e.endsWith(k)){const t=o[e],n=e.split(k)[0];s[n]||(s[n]={}),s[n]=Object.assign(Object.assign({},s[n]),{root:t.root,code_output:t.output,code_md5:t.md5,main:t.main}),delete o[e]}if(e.endsWith(j)){const t=e.split(j)[0],n=o[e];s[t]=Object.assign(Object.assign({},s[t]),{root:n.root,asset_output:n.output,asset_md5:n.md5}),delete o[e]}}n.odr_packages=s,m.writeFileSync(t,JSON.stringify(n,null,2)),O.info("writeOdrPackagesConfig end")}(o)}catch(e){O.error(`pack error:${e.message}`),i.error_message=e.message}t.writeFileSync(e.join(o,"output.json"),JSON.stringify(i),"utf-8"),O.info(`compile end:${Date.now()-r}ms`)},exports.odr=async function(){await ce()},exports.pack=async function({source_dir:n,output_dir:o}){let s=Date.now();O.init(o),O.info("TTMG_COMPILE_VERSION: 0.0.1-beta.18"),O.info(`compile start, startTime:${s}`);try{await le({entryDir:n,context:{projectSizeLimit:w,subpackageSizeLimit:_,mainPackageSizeLimit:$}}),await U({gameEntry:n,gameOutput:o}),function(n){O.info("mergePkgs start");const o=e.join(n,p);let s;try{s=JSON.parse(t.readFileSync(o,"utf-8"))}catch(e){return void O.error(`读取配置文件失败: ${o}, err: ${e.message}`)}const r=s.packages;if(r&&"object"==typeof r){for(const o of Object.keys(r)){const s=e.join(n,o);if(!t.existsSync(s)){O.warn(`package 目录不存在: ${s}`);continue}const r=t.readdirSync(s);for(const o of r){const r=e.join(s,o),i=e.join(n,o);try{const e=t.statSync(r);if(e.isFile())t.copyFileSync(r,i);else if(e.isDirectory())t.cpSync(r,i,{recursive:!0});else if(e.isSymbolicLink()){const n=t.readlinkSync(r);t.existsSync(i)&&t.rmSync(i,{force:!0}),t.symlinkSync(n,i,e.isDirectory()?"dir":"file")}O.info(`合并文件/目录: ${r} -> ${i}`)}catch(e){O.error(`处理文件失败: ${r}, err: ${e.message}`)}}try{t.rmSync(s,{recursive:!0,force:!0}),O.info(`已删除 package 目录: ${s}`)}catch(e){O.error(`删除 package 目录失败: ${s}, err: ${e.message}`)}}O.info("mergePkgs 完成")}else O.error("配置文件中 packages 字段无效, 请检查配置")}(o)}catch(e){O.error(`pack error:${e.message}`),e.message}O.info(`compile end:${Date.now()-s}ms`)};
3
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/constants/index.ts","../../src/utils/ensureDirSync.ts","../../src/utils/logger.ts","../../src/utils/removeEmptyDir.ts","../../src/utils/collectAssets.ts","../../src/utils/createBuffer.ts","../../src/utils/Deferred.ts","../../src/utils/compress.ts","../../src/utils/getDirSizeSync.ts","../../src/utils/deleteJsFilesSync.ts","../../src/utils/deleteNoJsFilesSync.ts","../../src/utils/removeSystemUseless.ts","../../src/libs/makePkgs/setup.ts","../../src/libs/makePkgs/collectMaps.ts","../../src/libs/makePkgs/collectDeps.ts","../../src/libs/makePkgs/pack.ts","../../src/libs/makePkgs/partition.ts","../../src/libs/makePkgs/index.ts","../node_modules/buffer-xor/index.js","../node_modules/safe-buffer/index.js","../../src/libs/encryptPkgs/encrypt.ts","../../src/libs/encryptPkgs/index.ts","../../src/libs/encryptPkgs/header.ts","../../src/utils/getMd5.ts","../../src/libs/compressPkgs/index.ts","../../src/libs/compressPkgs/header.ts","../../src/utils/accBuffer.ts","../../src/libs/odrPkgs/mock.ts","../../src/libs/odrPkgs/index.ts","../../src/libs/odrPkgs/utils.ts","../../src/libs/checkPkgs/checkProject.ts","../../src/libs/checkPkgs/checkMainpackage.ts","../../src/libs/checkPkgs/checkSubpackages.ts","../../src/libs/checkPkgs/index.ts","../../src/scripts/compile.ts","../../src/libs/odrPkgs/makeOdrPkgs.ts","../../src/libs/odrPkgs/writeOdrpkgsConfig.ts","../../src/scripts/odr.ts","../../src/scripts/pack.ts","../../src/libs/mergePkgs/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["GAME_PACK_CONFIG_FILE_NAME","GAME_ORIGIN_CONFIG_FILE_NAME","GAME_MAIN_PACKAGE_NAME","STTPKG_EXT","SUBPACKAGES_DIR_NAME","ODR_CODE_DIR_SUFFIX","ODR_ASSET_DIR_SUFFIX","ONE_ODR_PKG_LIMIT","AVAILABLE_ODR_TAG_LIST","PROJECT_SIZE_LIMIT","SUBPACKAGE_SIZE_LIMIT","MAINPACKAGE_SIZE_LIMIT","ensureDirSync","dir","fs","existsSync","mkdirSync","recursive","logger","constructor","this","init","output","winston","createLogger","level","format","combine","timestamp","json","transports","File","filename","path","join","Console","info","msg","error","warn","debug","setOutput","removeEmptyDir","statSync","isDirectory","isEmpty","files","readdirSync","file","fullPath","rmSync","collectAssets","rootDir","entryDir","pkgName","excludeFileExt","flattenFiles","filePath","push","ext","extname","includes","relativePath","relative","name","buffer","readFileSync","createBuffer","content","type","Buffer","from","buf","alloc","writeUInt16LE","writeUInt32LE","noop","Deferred","taskResolver","taskRejecter","task","Promise","resolve","reject","value","reason","then","params","catch","zstd","zstdInitPromise","async","compressWithZStd","code","require","e","zstdInit","compress","getDirSizeSync","filterDirs","totalSize","entries","withFileTypes","entry","isFile","size","deleteJsFilesSync","endsWith","unlinkSync","err","deleteNoJsFilesSync","uselessDirs","uselessFiles","setup","outputDir","gameJsonPath","gameJson","JSON","parse","packages","url","md5","root","main","configs","length","normalizeName","String","replace","normalizeRoot","trim","str","test","map","config","idx","indexOf","slice","transformSubPackages","subpackages","forEach","sub","result","Object","keys","pkg","pkgPath","Error","writeFileSync","stringify","flattenMaps","allMaps","list","values","arr","collectAllJsFiles","exts","excludeDirs","concat","some","collectDeps","gameEntry","rootPrefixes","filter","getRootPrefixes","glob","sync","cwd","ignore","requireCalls","ast","acorn","ecmaVersion","sourceType","walkAst","node","callee","arguments","requirePath","resolvedPath","startsWith","dirname","prefix","fileExistsWithExtensions","newRequireCalls","i","depModule","curModule","assign","reduce","acc","cur","f","cb","key","hasOwnProperty","child","Array","isArray","c","pack","gameOutput","allDeps","pkgConfig","destRoot","startTime","Date","now","packMap","moduleConfig","deps","packFileName","relPaths","Bundle","separator","relPath","absPath","basename","fileId","defineHeader","defineFooter","fileMagic","MagicString","wrapped","appendLeft","toString","append","addSource","outFile","generateMap","hires","includeContent","partition","pkgRoot","packedFiles","skipDirs","isRoot","srcPath","destPath","copyFileSync","makePkgs","removeUselessDirs","console","stat","force","log","removeSystemUseless","subRoots","split","sep","Boolean","uniqueSubRoots","Set","srcRoot","jsFiles","packNameRoot","collectMaps","require$$0","copyProps","src","dst","SafeBuffer","arg","encodingOrOffset","allocUnsafe","allocUnsafeSlow","module","exports","prototype","create","TypeError","fill","encoding","undefined","SlowBuffer","bufferXor","a","b","Math","max","bdsword","bdswordInitPromise","encrypt","buffers","count","InitBDSword","bdswordInit","sliceCode","RC4Encrypt","encData","codeBytes","sliceKey","xor","encryptPkg","ttpkg","context","sttpkgsStartTime","seed","sttpkg","needEncrypt","salt","encryptKey","crypto","createHash","update","digest","byteLength","sttpkgHeader","useBrotli","saltId","saltLength","saltInfoLength","saltIdLength","extensionLength","getSTTPKGHeader","compressPkg","headerBuffers","getTTPKGHeader","offset","prev","assets","fileBuffers","sortedAssets","appConfigAsset","asset","unshift","filterAssets","fileInfoZoneLen","nameLen","UNIT32_LEN","offsetToFileZone","temp","write","writeInt32LE","accBuffer","input","isBuffer","zlib","brotliCompress","compressedData","odrPackages","__GAME__","code_url","asset_url","asset_md5","configBundle","gameBundle","mainBundle","resources","iceAndFire","pushstone","gameOdrPackages","id","random","odrpkgs","TEMP_DIR","__dirname","games","fetchAllGames","tempDir","game","gameId","gameDir","packageName","packageInfo","execSync","fileName","downloadAndSaveCodesSync","gamesContentSize","odrTagGameMap","tag","TTMGODRConfig","gameSize","assignedTag","odrTag","odrTagDir","sum","gid","srcDir","destDir","cpSync","configPath","checkProject","projectSizeLimit","errMsg","checkConfig","limit","gameSizeMB","round","limitMB","checkProjectSize","checkMainPackage","mainPackageSizeLimit","gameJsPath","mainPkgSize","mainPkgSizeMB","checkMainPackageSize","checkSubpackages","subpackageSizeLimit","subpackageEntryDir","subpackageRoot","subPkgName","subPkgDir","subPkgSize","sizeMB","checkSubPackageSize","checkPkgs","source_dir","output_dir","client_key","packResult","error_message","config_path","outputPath","pkgOutput","codeOutput","assetOutput","code_md5","makeOdrPkgs","ttpkgsResult","ttpkgsStartTime","pLimit","results","compressPkgs","ttpkgs","sttpkgs","all","sttpkgResult","encryptPkgs","odr_packages","relatedPkgName","code_output","asset_output","writeOdrPkgsConfig","message","gamePackConfigPath","gamePackConfig","pkgDir","isSymbolicLink","linkTarget","readlinkSync","symlinkSync","mergePkgs"],"mappings":"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","x_google_ignoreList":[18,19]}
package/dist/index.mjs DELETED
@@ -1,3 +0,0 @@
1
- import*as e from"path";import t from"path";import*as n from"fs";import o from"fs";import s from"winston";import r from"crypto";import i from"zlib";import c from"acorn";import a from"glob";import u,{Bundle as f}from"magic-string";import l from"p-limit";import m from"buffer";const p="packageConfig.json",d="game.json",g="__GAME__",y=".txt",h="subpackages",k="_code",S="_asset",j=62914560,b=["ttmg_odr_tag_1","ttmg_odr_tag_2","ttmg_odr_tag_3"],w=209715200,_=31457280,$=209715200;function x(e){o.existsSync(e)||o.mkdirSync(e,{recursive:!0})}const T=new class{constructor(){this.logger=null}init(e){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.logger.info(e)}error(e){this.logger.error(e)}warn(e){this.logger.warn(e)}debug(e){this.logger.debug(e)}setOutput(e){this.output=e}};function O(e){if(!o.existsSync(e))return!1;if(!o.statSync(e).isDirectory())return!1;let n=!0;const s=o.readdirSync(e);for(const r of s){const s=t.join(e,r);if(o.statSync(s).isDirectory()){O(s)||(n=!1)}else n=!1}return!!n&&(o.rmSync(e,{recursive:!0}),!0)}function B({rootDir:e,entryDir:n,pkgName:s,excludeFileExt:r=[]}){const i=[],c=o.readdirSync(n);for(const a of c){const c=t.join(n,a);if(o.statSync(c).isDirectory())i.push(...B({entryDir:c,excludeFileExt:r,rootDir:e,pkgName:s}));else{const n=t.extname(a);if(!r.includes(n)){const n=t.relative(t.join(e,s),c);i.push({name:n,buffer:o.readFileSync(c)})}}}return i}function E(e,t){if("string"===t)return Buffer.from(e);if("uint16le"===t){const t=Buffer.alloc(2);return t.writeUInt16LE(e),t}const n=Buffer.alloc(4);return n.writeUInt32LE(e),n}function D(){}class v{constructor(){this.taskResolver=D,this.taskRejecter=D,this.task=new Promise((e,t)=>{this.taskResolver=e,this.taskRejecter=t})}resolve(e){this.taskResolver(e)}reject(e){this.taskRejecter(e)}then(...e){return this.task.then(...e)}catch(...e){return this.task.catch(...e)}}let F,M;async function P(e){return await(async()=>{if(!M){M=new v;try{F=require("@bokuweb/zstd-wasm"),await F.init(),M.resolve()}catch(e){M.reject(e)}}await M})(),Buffer.from(F.compress(Buffer.from(e),19))}function G(e,n=[]){let s=0;if(!o.existsSync(e))return 0;const r=o.readdirSync(e,{withFileTypes:!0});for(const i of r){const r=t.join(e,i.name);i.isDirectory()?n.includes(i.name)||(s+=G(r,n)):i.isFile()&&(s+=o.statSync(r).size)}return s}function A(e){const n=o.readdirSync(e,{withFileTypes:!0});for(const s of n){const n=t.join(e,s.name);if(s.isDirectory())A(n);else if(s.isFile()&&(n.endsWith(".js")||n.endsWith(".js.map")))try{o.unlinkSync(n)}catch(e){}}}function N(e){const n=o.readdirSync(e,{withFileTypes:!0});for(const s of n){const n=t.join(e,s.name);if(s.isDirectory())N(n);else if(s.isFile()&&!n.endsWith(".js")&&!n.endsWith(".js.map"))try{o.unlinkSync(n)}catch(e){}}}const L=["node_modules","__MACOSX"],R=[".DS_Store","Thumbs.db"];async function z(e,n){T.info("开始基于源代码中的 game.json 生成 packageConfig.json");const s=t.join(e,d),r=JSON.parse(o.readFileSync(s,"utf-8")),i={};i[g]={url:"",md5:"",root:"",main:"game.js",output:`${g}${y}`},function(e){if(!e||0===e.length)return[];function t(e){return String(e).replace(/^\/+|\/+$/g,"")}function n(e){return String(e).trim().replace(/^\/+/,"")}function o(e){return e.endsWith("/")||!/\.[a-zA-Z0-9]+$/.test(e)}return e.map(e=>{const s=t(e.name);let r=n(e.root);const i=r.indexOf(s);return r=-1!==i?r.slice(i):s+(o(r)?"/game.js":"/"+r),o(r)&&(r=r.replace(/\/+$/,"")+"/game.js"),{main:r,root:s}})}(r.subpackages).forEach(e=>{i[e.root]={url:"",md5:"",root:`${h}/${e.root}`,main:`${h}/${e.main}`,output:`${e.root}${y}`}});const c={packages:i};return Object.keys(i).forEach(n=>{const s=t.join(e,i[n].main);if(!o.existsSync(s))throw T.error(`开发者源代码包中的子包 ${n} 中的 main 文件 ${i[n].main} 不存在`),new Error(`开发者源代码包中的子包 ${n} 中的 main 文件 ${i[n].main} 不存在`)}),o.existsSync(n)&&o.rmSync(n,{recursive:!0}),o.mkdirSync(n),o.writeFileSync(t.join(n,p),JSON.stringify(c,null,2)),T.info("基于源代码中的 game.json 生成 packageConfig.json 成功"),c}function C(e){const t=[];return Object.values(e).forEach(e=>{Object.values(e).forEach(e=>{t.push(...e)})}),t}function K(e,n=[".js",".ts",".jsx",".tsx"],s=[]){let r=[];if(!o.existsSync(e))return r;const i=o.readdirSync(e,{withFileTypes:!0});for(const o of i){const i=t.join(e,o.name);if(o.isDirectory()){if(s.includes(o.name))continue;r=r.concat(K(i,n,[]))}else n.some(e=>o.name.endsWith(e))&&r.push(i)}return r}function J(e,n){const s=function(e){return o.readdirSync(e).filter(n=>{const s=t.join(e,n);return o.statSync(s).isDirectory()&&!["node_modules","dist","build","output"].includes(n)}).map(e=>e+"/")}(e),r=a.sync("**/*.js",{cwd:e,ignore:["node_modules/**","dist/**","build/**","output/**"]}),i=[];r.forEach(n=>{const r=t.join(e,n),a=o.readFileSync(r,"utf-8");let u;try{u=c.parse(a,{ecmaVersion:"latest",sourceType:"module"})}catch(e){return}W(u,n=>{if("CallExpression"===n.type&&"Identifier"===n.callee.type&&("require"===n.callee.name||"requireAsync"===n.callee.name)&&n.arguments.length>0&&"Literal"===n.arguments[0].type){const c=n.arguments[0].value;let a=null;if(c.startsWith("."))a=t.resolve(t.dirname(r),c);else if(c.startsWith("/"))a=t.resolve(e,"."+c);else for(const n of s)if(c.startsWith(n)){a=t.resolve(e,c);break}a&&!function(e){if(o.existsSync(e)&&o.statSync(e).isFile())return!0;const t=[".js",".ts",".jsx",".tsx"];for(const n of t)if(o.existsSync(e+n)&&o.statSync(e+n).isFile())return!0;return!1}(a)&&(a=null),i.push({file:t.relative(e,r),callee:n.callee.name,requirePath:c,resolvedPath:a?t.relative(e,a):""})}})});const u=i.map(e=>{let t="";Object.keys(n).forEach(o=>{e.resolvedPath&&e.resolvedPath.startsWith(n[o].root)&&(t=o)});let o="";return Object.keys(n).forEach(t=>{e.file.startsWith(n[t].root)&&(o=t)}),Object.assign(Object.assign({},e),{curModule:o,depModule:t})}),f=[".js",".ts",".jsx",".tsx"];return u.reduce((e,t)=>{return e[t.curModule]||(e[t.curModule]={}),t.curModule===t.depModule||t.resolvedPath&&(n=t.resolvedPath,f.some(e=>n.endsWith(e)))&&(e[t.curModule]=Object.assign(Object.assign({},e[t.curModule]),{[t.resolvedPath]:t.depModule})),e;var n},{})}function W(e,t){t(e);for(let n in e)if(e.hasOwnProperty(n)){const o=e[n];Array.isArray(o)?o.forEach(e=>e&&"string"==typeof e.type&&W(e,t)):o&&"string"==typeof o.type&&W(o,t)}}function I({gameEntry:e,gameOutput:n,pkgName:s,allDeps:r,allMaps:i,pkgConfig:c,destRoot:a}){let l=Date.now();T.info(`pack start,startTime:${l}`);const m=i[s],p={main:c.main,deps:r[s]||{},map:i[s]};x(a),o.writeFileSync(t.join(a,"moduleConfig.json"),JSON.stringify(p));for(const n in m){const r=m[n];if(!Array.isArray(r)||0===r.length)continue;const i=new f({separator:"\n"});for(const s of r){const r=t.join(e,s);if(o.existsSync(r)&&(t.basename(r)!==n&&/\.js$/i.test(s))){const e=o.readFileSync(r,"utf-8"),t=s.replace(/\\/g,"/"),n=`define("game:${t}", ["require", "requireAsync", "module", "exports", "sandboxGlobal"], function(require, requireAsync, module, exports, sandboxGlobal){\nwith(sandboxGlobal){\n`,c="\n}\n});\n",a=new u(e,{filename:t}),f=new u(n).appendLeft(n.length,a.toString()).append(c);i.addSource({content:f,filename:t})}}const c=t.join(a,t.basename(n));o.writeFileSync(c,i.toString()+`\n//# sourceMappingURL=${n}.map`);const l=i.generateMap({hires:!0,includeContent:!0,file:n});o.writeFileSync(c+".map",l.toString()),T.info(`pack end,packName:${s}`)}}function q({pkgRoot:e,destRoot:n,packedFiles:s,gameEntry:r,gameOutput:i,skipDirs:c=[],isRoot:a=!0}){if(!o.existsSync(e))return;const u=o.readdirSync(e,{withFileTypes:!0});for(const f of u){const u=t.join(e,f.name),l=t.join(n,f.name);a&&f.isDirectory()&&c.includes(f.name)||(f.isDirectory()?q({pkgRoot:u,destRoot:l,gameOutput:i,packedFiles:s,gameEntry:r,skipDirs:c,isRoot:!1}):(x(t.dirname(l)),s.includes(t.relative(r,u))||o.copyFileSync(u,l)))}}async function U({gameEntry:e,gameOutput:n}){let s=Date.now();!function(e){!function e(n){let s;try{s=o.readdirSync(n)}catch(e){return void console.warn(`无法访问目录: ${n}`,e)}s.forEach(s=>{const r=t.join(n,s);try{const t=o.statSync(r);t.isDirectory()?L.includes(s)?(o.rmSync(r,{recursive:!0,force:!0}),console.log(`已删除无用目录: ${r}`)):e(r):t.isFile()&&R.includes(s)&&(o.rmSync(r,{force:!0}),console.log(`已删除无用文件: ${r}`))}catch(e){console.warn(`无法处理: ${r}`,e)}})}(e)}(e),T.info(`pack start,startTime:${s}`);const{packages:r}=await z(e,n),i=J(e,r),c=function(e,n){T.info("开始基于游戏源代码收集分包中的 JS 文件");const o={},s=Object.values(n).filter(e=>e.root&&""!==e.root).map(e=>e.root.split(t.sep)[0]).filter(Boolean),r=Array.from(new Set(s));for(const s in n){const i=n[s];let c,a;"__GAME__"===s?(a=K(e,[".js",".ts",".jsx",".tsx"],r),c=e):(c=t.join(e,i.root),a=K(c));const u=[];a.forEach(n=>{u.push(t.relative(e,n).replace(/\\/g,"/"))});const f=n[s].root;o[s]={[f?`${f}/game.pack.js`:"game.pack.js"]:u}}return T.info("基于游戏源代码收集分包中的 JS 文件完成"),o}(e,r);for(const o in c){T.info(`开始基于游戏源代码打包,包名:${o}`);let s=Date.now();const a=r[o],u=t.join(e,a.root),f=t.join(n,o,a.root);I({gameEntry:e,gameOutput:n,allDeps:i,allMaps:c,pkgName:o,pkgConfig:a,destRoot:f}),q({gameEntry:e,gameOutput:n,pkgRoot:u,destRoot:f,packedFiles:C(c),skipDirs:[h]});O(t.join(n,o)),T.info(`基于游戏源代码打包分包完成,包名:${o}`),T.info(`基于游戏源代码打包分包耗时,包名:${o},耗时:${Date.now()-s}ms`)}return T.info(`pack end,duration:${Date.now()-s}ms`),{}}function H(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var V,X,Z,Q={exports:{}};
2
- /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var Y=H(function(){if(Z)return X;Z=1;var e=(V||(V=1,function(e,t){var n=m,o=n.Buffer;function s(e,t){for(var n in e)t[n]=e[n]}function r(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=n:(s(n,t),t.Buffer=r),r.prototype=Object.create(o.prototype),s(o,r),r.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},r.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var s=o(e);return void 0!==t?"string"==typeof n?s.fill(t,n):s.fill(t):s.fill(0),s},r.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},r.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(Q,Q.exports)),Q.exports).Buffer;return X=function(t,n){for(var o=Math.max(t.length,n.length),s=e.allocUnsafe(o),r=0;r<o;++r)s[r]=t[r]^n[r];return s}}());let ee,te;async function ne(e,t){const n=[];let o=1024;await(async()=>{if(!te){te=new v;try{ee=require("@bytedance-dev/bdsword"),await ee.InitBDSword(),te.resolve()}catch(e){te.reject(e)}}await te})();const s=e.slice(0,o),r=await ee.RC4Encrypt(s,t),{encData:i}=r;for(n.push(Buffer.from(i));o<e.length;){const s=e.slice(o,o+32);if(s.length<32){const e=t.slice(0,s.length);n.push(Y(s,e))}else n.push(Y(s,t));o+=32}return Buffer.concat(n)}async function oe({ttpkg:e,context:n}){let s=Date.now();T.info(`sttpkgs start,startTime:${s}`);const{seed:i,outputDir:c}=n,{name:a}=e,u={name:a,code:e.code};let f=n.needEncrypt;const l=Date.now().toString(16),m=r.createHash("sha256").update(i+l).digest();f=f&&e.code.byteLength>1024,f?(T.info(`TTPKG 加密文件 Buffer 开始, ${a}`),u.code=await ne(e.code,m),T.info(`TTPKG 加密文件 Buffer 完成, ${a}`)):T.info(`TTPKG 压缩后内容小于1024B, 不进行加密, ${a}`),T.info(`STTPKG 生成 Header 开始, ${a}`);const p=function({salt:e,needEncrypt:t,useBrotli:n}){const o=[];if(o.push(E("SPKG","string")),o.push(E(1,"uint32le")),o.push(E(3,"uint16le")),t){const t="SA",{length:n}=e,s=2,{length:r}=t,i=s+r+n;o.push(E(i,"uint16le")),o.push(E(n,"uint16le")),o.push(E(t,"string")),o.push(E(e,"string"))}else o.push(E(0,"uint16le"));return Buffer.concat(o)}({salt:l,needEncrypt:f,useBrotli:!1});var d;return T.info(`STTPKG 生成 Header 完成, ${a}`),u.code=Buffer.concat([p,u.code]),u.md5=(d=u.code,r.createHash("md5").update(d).digest("hex")),o.writeFileSync(t.join(c,`${a}${y}`),u.code,"utf-8"),T.info(`基于游戏源代码生成 STTPKG 产物完成 ${u.name}`),o.rmSync(t.join(c,e.name),{recursive:!0}),T.info(`sttpkgs end,duration:${Date.now()-s}ms`),u}async function se({name:e,config:n={},root:o}){const{useBrotli:s=!1}=n,r=function(){const e=[];return e.push(E("TPKG","string")),e.push(E(2,"uint32le")),e.push(E(0,"uint32le")),e}(),c=r.reduce((e,t)=>e+t.length,0);T.info(`TTPKG 收集文件开始, ${e}`);const a=B({rootDir:o,entryDir:t.join(o,e),pkgName:e,excludeFileExt:[]});T.info(`TTPKG 收集文件完成, ${e}`),T.info(`TTPKG 生成文件 Buffer 开始, ${e}`);const u=function({offset:e,assets:t}){const n=[],o=function(e=[]){const t=[];let n;for(const o of e)o.name.endsWith("app-config.json")?n=o:t.push(o);return n&&t.unshift(n),t}(t);n.push(E(o.length,"uint32le")),e+=4;let s=0;o.forEach(e=>{const t=Buffer.byteLength(e.name);s+=t+12});let r=0;return o.forEach(t=>{const o=Buffer.byteLength(t.name);n.push(E(o,"uint32le"));const i=Buffer.byteLength(Buffer.from(t.buffer)),c=Buffer.alloc(o+4+4);c.write(t.name,0),c.writeInt32LE(e+s+r,o),c.writeInt32LE(i,o+4),n.push(c),r+=i}),o.forEach(e=>{let t=e.buffer;"string"==typeof t&&(t=Buffer.from(t)),n.push(t)}),n}({offset:c,assets:a});T.info(`TTPKG 生成文件 Buffer 完成, ${e}`);const f={name:e,code:Buffer.concat([...r,...u])};var l;return s?(T.info(`TTPKG 压缩文件 Buffer 开始, ${e}`),f.code=await(l=f.code,new Promise((e,t)=>{const n=Buffer.isBuffer(l)?l:Buffer.from(l);i.brotliCompress(n,(n,o)=>{n?t(n):e(o)})})),T.info(`TTPKG 压缩文件 Buffer 完成, ${e}`)):(T.info(`TTPKG 压缩文件 Buffer 开始, ${e}`),f.code=await P(f.code),T.info(`TTPKG 压缩文件 Buffer 完成, ${e}`)),f}const re={__GAME__:{code_url:"https://connect.tiktok-minis.com/test/__GAME___code.txt",asset_url:"https://connect.tiktok-minis.com/test/__GAME___asset.txt",asset_md5:"8e3cc2ebd5536e9183b93fda34c1e7f4",root:"",main:"game.js"},configBundle:{root:"subpackages/configBundle",main:"subpackages/configBundle/game.js",asset_md5:"f624a1b37fb35d4dfb1975105a51ebd4",code_url:"https://connect.tiktok-minis.com/test/configBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/configBundle_asset.txt"},gameBundle:{main:"subpackages/gameBundle/game.js",root:"subpackages/gameBundle",asset_md5:"fcc9f686bbc8d6f983263e7132598b26",code_url:"https://connect.tiktok-minis.com/test/gameBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/gameBundle_asset.txt"},mainBundle:{main:"subpackages/mainBundle/game.js",root:"subpackages/mainBundle",asset_md5:"36b9674d48f9fbb0de6e8f48b194aebc",code_url:"https://connect.tiktok-minis.com/test/mainBundle_code.txt",asset_url:"https://connect.tiktok-minis.com/test/mainBundle_asset.txt"},resources:{root:"subpackages/resources",main:"subpackages/resources/game.js",asset_md5:"1c4608d7690750f7bd5c00663013fc70",code_url:"https://connect.tiktok-minis.com/test/resources_code.txt",asset_url:"https://connect.tiktok-minis.com/test/resources_asset.txt"},iceAndFire:{root:"subpackages/iceAndFire",main:"subpackages/iceAndFire/game.js",asset_md5:"c7fd8e8506dd59725269027a52e2cae4",code_url:"https://connect.tiktok-minis.com/test/iceAndFire_code.txt",asset_url:"https://connect.tiktok-minis.com/test/iceAndFire_asset.txt"},pushstone:{root:"subpackages/pushstone",main:"subpackages/pushstone/game.js",asset_md5:"f5061dba94ad53e1f578325a7cb26a01",code_url:"https://connect.tiktok-minis.com/test/pushstone_code.txt",asset_url:"https://connect.tiktok-minis.com/test/pushstone_asset.txt"},main:{root:"subpackages/main",main:"subpackages/main/game.js",asset_md5:"aece2f69cc168d7cefb248e8574c3371",code_url:"https://connect.tiktok-minis.com/test/main_code.txt",asset_url:"https://connect.tiktok-minis.com/test/main_asset.txt"}},ie=[{id:""+1e17*Math.random(),packages:re},{id:""+1e17*Math.random(),packages:re}];async function ce(){const s=t.join(__dirname,"temp");o.existsSync(s)||o.mkdirSync(s);const r=await async function(){return ie}();console.log("odr_games",r),function(t,o){for(const s of t){const{id:t,packages:r}=s,i=e.join(o,t);n.existsSync(i)||n.mkdirSync(i);for(const t in r){const o=r[t],{code_url:s}=o,c=require("child_process").execSync(`curl -s "${s}"`).toString();console.log("downloadAndSaveCodesSync code",s);const a=`${t}.txt`,u=e.join(i,a);n.writeFileSync(u,c)}}}(r,s);const i={};for(const e of r){const{id:n,packages:o}=e,r=t.join(s,n);i[n]=G(r)}const c={};b.forEach(e=>{c[e]=[]});const a={};for(const e of r){const{id:n,packages:r}=e,u=i[n];if(u>j)continue;let f=null;for(const e of b){const r=t.join(s,e);o.existsSync(r)||o.mkdirSync(r);if(c[e].reduce((e,t)=>e+i[t],0)+u<=j){const i=t.join(s,n),a=t.join(r,n);o.cpSync(i,a,{recursive:!0}),c[e].push(n),f=e;break}}if(f){a[n]={tag:f,packages:{}};for(const e in r){const t=r[e];console.log("TTMGODRConfig[gameId].packages",e,t),a[n].packages[e]={root:t.root,main:t.main,asset_md5:t.asset_md5,asset_url:t.asset_url}}}}const u=t.join(s,"TTMG_ODR_CONFIG.json");o.writeFileSync(u,JSON.stringify(a,null,2),"utf-8"),console.log("TTMG_ODR_CONFIG.json 已生成:",u)}function ae(e,n){T.info("start check project");const{projectSizeLimit:s}=n;!function(e){T.info("start check config");const n=t.join(e,d);if(!o.existsSync(n)){const e="can not find game.json in game source code, please check it";throw T.error(e),new Error(e)}T.info("check config successfully")}(e),function(e,t){T.info("start check project size");const n=G(e,[]),o=Math.round(n/1048576),s=Math.round(t/1048576);if(n>t){const e=`Game size ${o}MB, must not exceed ${s}MB`;throw T.error(e),new Error(e)}T.info(`Game size ${o}MB, check successfully!`),T.info("Game size check successfully!")}(e,s),T.info("check project successfully")}function ue(t,o){T.info("start check main package");const{mainPackageSizeLimit:s}=o;T.info("check game.js");const r=e.join(t,"game.js");if(!n.existsSync(r)){const e="game.js must exist in main package!";throw T.error(e),new Error(e)}T.info("check game.js successfully"),function({entryDir:e,limit:t}){T.info("start check main package size");const n=G(e,["subpackages"]),o=Math.round(n/1048576),s=Math.round(t/1048576);if(n>t){const e=`Main package size ${o}MB, must not exceed ${s}MB`;throw T.error(e),new Error(e)}T.info(`Main package size ${o}MB, check successfully!`)}({entryDir:t,limit:s}),T.info("check main package successfully")}function fe(e,n){const{subpackageSizeLimit:s}=n;T.info("start check subpackages in game.json");const r=t.join(e,d),i=JSON.parse(o.readFileSync(r,"utf-8")).subpackages||[];(null==i?void 0:i.length)?i.forEach(n=>{if(!n.name||!n.root){const e="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.";throw T.error(e),new Error(e)}const r=t.join(e,n.root);if(!o.existsSync(r)){const e=`The subpackages configuration in game.json is invalid: can not find subpackage ${n.name} entry dir, please check it`;throw T.error(e),new Error(e)}const i=n.root;if(!o.existsSync(t.join(e,i))){const e=`The subpackages configuration in game.json is invalid: can not find subpackage ${n.name} root, please check it`;throw T.error(e),new Error(e)}!function({entryDir:e,subPkgName:n,limit:o}){const s=t.join(e,"subpackages",n),r=G(s,[]),i=Math.round(r/1048576);if(i>o){const e=`${n} Sub package size ${i}MB, must not exceed ${o/1048576}MB`;throw T.error(e),new Error(e)}T.info(`${n} Sub package size ${i}MB, check successfully!`)}({entryDir:e,subPkgName:n.name,limit:s})}):T.info("subpackages is empty"),T.info("check subpackages in game.json successfully")}function le({entryDir:e,context:t}){T.info("开始校验项目"),ae(e,t),ue(e,t),fe(e,t),T.info("校验项目完成")}async function me({source_dir:s,output_dir:r,client_key:i}){let c=Date.now();T.init(r),T.info("TTMG_COMPILE_VERSION: 0.0.1-beta.18"),T.info(`compile start, startTime:${c}`);let a={error_message:"success",config_path:`/${p}`};try{await le({entryDir:s,context:{projectSizeLimit:w,subpackageSizeLimit:_,mainPackageSizeLimit:$}}),await U({gameEntry:s,gameOutput:r}),await async function(e){let n=Date.now();T.info(`makeOdrPkgs start, ${n}`);const s=t.join(e,p),r=JSON.parse(o.readFileSync(s,"utf-8")),i=r.packages;for(const n in i){const s=t.join(e,n),r=t.join(e,`${n}${k}`),c=t.join(e,`${n}${S}`);x(r),x(c),o.cpSync(s,r,{recursive:!0}),o.cpSync(s,c,{recursive:!0}),N(r),A(c),i[`${n}${k}`]=Object.assign(Object.assign({},i[n]),{code_url:"",code_md5:"",output:`${n}${k}${y}`}),i[`${n}${S}`]=Object.assign(Object.assign({},i[n]),{asset_url:"",asset_md5:"",output:`${n}${S}${y}`})}o.writeFileSync(s,JSON.stringify(r,null,2)),T.info(`makeOdrPkgs end, ${Date.now()-n}ms`)}(r);const i=await async function(e){let n=Date.now();T.info(`ttpkgs start,startTime:${n}`);const s=t.join(e,p),r=JSON.parse(o.readFileSync(s,"utf-8")).packages,i=l(10),c=[];for(const t in r){const n=await i(()=>se({name:t,config:{useBrotli:!1},root:e}));c.push(n)}return T.info(`ttpkgs end,duration:${Date.now()-n}ms`),c}(r);await async function({outputDir:e,ttpkgs:n,seed:s}){const r=t.join(e,p),i=JSON.parse(o.readFileSync(r,"utf-8")),c=i.packages,a=l(10);T.info("基于游戏源代码生成 STTPKGS 产物开始");const u=await Promise.all(n.map(t=>a(async()=>{const n=await oe({ttpkg:t,context:{seed:s,outputDir:e,needEncrypt:i.needEncrypt}});return c[t.name]=Object.assign(Object.assign({},c[t.name]),{md5:n.md5}),n})));return o.writeFileSync(r,JSON.stringify(i,null,2),"utf-8"),T.info("基于游戏源代码生成 STTPKGS 产物完成"),u}({outputDir:r,ttpkgs:i,seed:"TTMG_NATIVE"}),await async function(t){T.info("writeOdrPackagesConfig start");const o=e.join(t,p),s=JSON.parse(n.readFileSync(o,"utf-8")),r=s.packages,i=s.odr_packages||{};for(const e in r){if(e.endsWith(k)){const t=r[e],n=e.split(k)[0];i[n]||(i[n]={}),i[n]=Object.assign(Object.assign({},i[n]),{root:t.root,code_output:t.output,code_md5:t.md5,main:t.main}),delete r[e]}if(e.endsWith(S)){const t=e.split(S)[0],n=r[e];i[t]=Object.assign(Object.assign({},i[t]),{root:n.root,asset_output:n.output,asset_md5:n.md5}),delete r[e]}}s.odr_packages=i,n.writeFileSync(o,JSON.stringify(s,null,2)),T.info("writeOdrPackagesConfig end")}(r)}catch(e){T.error(`pack error:${e.message}`),a.error_message=e.message}o.writeFileSync(t.join(r,"output.json"),JSON.stringify(a),"utf-8"),T.info(`compile end:${Date.now()-c}ms`)}async function pe(){await ce()}async function de({source_dir:e,output_dir:n}){let s=Date.now();T.init(n),T.info("TTMG_COMPILE_VERSION: 0.0.1-beta.18"),T.info(`compile start, startTime:${s}`);try{await le({entryDir:e,context:{projectSizeLimit:w,subpackageSizeLimit:_,mainPackageSizeLimit:$}}),await U({gameEntry:e,gameOutput:n}),function(e){T.info("mergePkgs start");const n=t.join(e,p);let s;try{s=JSON.parse(o.readFileSync(n,"utf-8"))}catch(e){return void T.error(`读取配置文件失败: ${n}, err: ${e.message}`)}const r=s.packages;if(r&&"object"==typeof r){for(const n of Object.keys(r)){const s=t.join(e,n);if(!o.existsSync(s)){T.warn(`package 目录不存在: ${s}`);continue}const r=o.readdirSync(s);for(const n of r){const r=t.join(s,n),i=t.join(e,n);try{const e=o.statSync(r);if(e.isFile())o.copyFileSync(r,i);else if(e.isDirectory())o.cpSync(r,i,{recursive:!0});else if(e.isSymbolicLink()){const t=o.readlinkSync(r);o.existsSync(i)&&o.rmSync(i,{force:!0}),o.symlinkSync(t,i,e.isDirectory()?"dir":"file")}T.info(`合并文件/目录: ${r} -> ${i}`)}catch(e){T.error(`处理文件失败: ${r}, err: ${e.message}`)}}try{o.rmSync(s,{recursive:!0,force:!0}),T.info(`已删除 package 目录: ${s}`)}catch(e){T.error(`删除 package 目录失败: ${s}, err: ${e.message}`)}}T.info("mergePkgs 完成")}else T.error("配置文件中 packages 字段无效, 请检查配置")}(n)}catch(e){T.error(`pack error:${e.message}`),e.message}T.info(`compile end:${Date.now()-s}ms`)}export{me as compile,pe as odr,de as pack};
3
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/constants/index.ts","../../src/utils/ensureDirSync.ts","../../src/utils/logger.ts","../../src/utils/removeEmptyDir.ts","../../src/utils/collectAssets.ts","../../src/utils/createBuffer.ts","../../src/utils/Deferred.ts","../../src/utils/compress.ts","../../src/utils/getDirSizeSync.ts","../../src/utils/deleteJsFilesSync.ts","../../src/utils/deleteNoJsFilesSync.ts","../../src/utils/removeSystemUseless.ts","../../src/libs/makePkgs/setup.ts","../../src/libs/makePkgs/collectMaps.ts","../../src/libs/makePkgs/collectDeps.ts","../../src/libs/makePkgs/pack.ts","../../src/libs/makePkgs/partition.ts","../../src/libs/makePkgs/index.ts","../node_modules/buffer-xor/index.js","../node_modules/safe-buffer/index.js","../../src/libs/encryptPkgs/encrypt.ts","../../src/libs/encryptPkgs/index.ts","../../src/libs/encryptPkgs/header.ts","../../src/utils/getMd5.ts","../../src/libs/compressPkgs/index.ts","../../src/libs/compressPkgs/header.ts","../../src/utils/accBuffer.ts","../../src/libs/odrPkgs/mock.ts","../../src/libs/odrPkgs/index.ts","../../src/libs/odrPkgs/utils.ts","../../src/libs/checkPkgs/checkProject.ts","../../src/libs/checkPkgs/checkMainpackage.ts","../../src/libs/checkPkgs/checkSubpackages.ts","../../src/libs/checkPkgs/index.ts","../../src/scripts/compile.ts","../../src/libs/odrPkgs/makeOdrPkgs.ts","../../src/libs/odrPkgs/writeOdrpkgsConfig.ts","../../src/scripts/odr.ts","../../src/scripts/pack.ts","../../src/libs/mergePkgs/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function xor (a, b) {\n var length = Math.max(a.length, b.length)\n var buffer = Buffer.allocUnsafe(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["GAME_PACK_CONFIG_FILE_NAME","GAME_ORIGIN_CONFIG_FILE_NAME","GAME_MAIN_PACKAGE_NAME","STTPKG_EXT","SUBPACKAGES_DIR_NAME","ODR_CODE_DIR_SUFFIX","ODR_ASSET_DIR_SUFFIX","ONE_ODR_PKG_LIMIT","AVAILABLE_ODR_TAG_LIST","PROJECT_SIZE_LIMIT","SUBPACKAGE_SIZE_LIMIT","MAINPACKAGE_SIZE_LIMIT","ensureDirSync","dir","fs","existsSync","mkdirSync","recursive","logger","constructor","this","init","output","winston","createLogger","level","format","combine","timestamp","json","transports","File","filename","path","join","Console","info","msg","error","warn","debug","setOutput","removeEmptyDir","statSync","isDirectory","isEmpty","files","readdirSync","file","fullPath","rmSync","collectAssets","rootDir","entryDir","pkgName","excludeFileExt","flattenFiles","filePath","push","ext","extname","includes","relativePath","relative","name","buffer","readFileSync","createBuffer","content","type","Buffer","from","buf","alloc","writeUInt16LE","writeUInt32LE","noop","Deferred","taskResolver","taskRejecter","task","Promise","resolve","reject","value","reason","then","params","catch","zstd","zstdInitPromise","async","compressWithZStd","code","require","e","zstdInit","compress","getDirSizeSync","filterDirs","totalSize","entries","withFileTypes","entry","isFile","size","deleteJsFilesSync","endsWith","unlinkSync","err","deleteNoJsFilesSync","uselessDirs","uselessFiles","setup","outputDir","gameJsonPath","gameJson","JSON","parse","packages","url","md5","root","main","configs","length","normalizeName","String","replace","normalizeRoot","trim","str","test","map","config","idx","indexOf","slice","transformSubPackages","subpackages","forEach","sub","result","Object","keys","pkg","pkgPath","Error","writeFileSync","stringify","flattenMaps","allMaps","list","values","arr","collectAllJsFiles","exts","excludeDirs","concat","some","collectDeps","gameEntry","rootPrefixes","filter","getRootPrefixes","glob","sync","cwd","ignore","requireCalls","ast","acorn","ecmaVersion","sourceType","walkAst","node","callee","arguments","requirePath","resolvedPath","startsWith","dirname","prefix","fileExistsWithExtensions","newRequireCalls","i","depModule","curModule","assign","reduce","acc","cur","f","cb","key","hasOwnProperty","child","Array","isArray","c","pack","gameOutput","allDeps","pkgConfig","destRoot","startTime","Date","now","packMap","moduleConfig","deps","packFileName","relPaths","Bundle","separator","relPath","absPath","basename","fileId","defineHeader","defineFooter","fileMagic","MagicString","wrapped","appendLeft","toString","append","addSource","outFile","generateMap","hires","includeContent","partition","pkgRoot","packedFiles","skipDirs","isRoot","srcPath","destPath","copyFileSync","makePkgs","removeUselessDirs","console","stat","force","log","removeSystemUseless","subRoots","split","sep","Boolean","uniqueSubRoots","Set","srcRoot","jsFiles","packNameRoot","collectMaps","require$$0","copyProps","src","dst","SafeBuffer","arg","encodingOrOffset","allocUnsafe","allocUnsafeSlow","module","exports","prototype","create","TypeError","fill","encoding","undefined","SlowBuffer","bufferXor","a","b","Math","max","bdsword","bdswordInitPromise","encrypt","buffers","count","InitBDSword","bdswordInit","sliceCode","RC4Encrypt","encData","codeBytes","sliceKey","xor","encryptPkg","ttpkg","context","sttpkgsStartTime","seed","sttpkg","needEncrypt","salt","encryptKey","crypto","createHash","update","digest","byteLength","sttpkgHeader","useBrotli","saltId","saltLength","saltInfoLength","saltIdLength","extensionLength","getSTTPKGHeader","compressPkg","headerBuffers","getTTPKGHeader","offset","prev","assets","fileBuffers","sortedAssets","appConfigAsset","asset","unshift","filterAssets","fileInfoZoneLen","nameLen","UNIT32_LEN","offsetToFileZone","temp","write","writeInt32LE","accBuffer","input","isBuffer","zlib","brotliCompress","compressedData","odrPackages","__GAME__","code_url","asset_url","asset_md5","configBundle","gameBundle","mainBundle","resources","iceAndFire","pushstone","gameOdrPackages","id","random","odrpkgs","TEMP_DIR","__dirname","games","fetchAllGames","tempDir","game","gameId","gameDir","packageName","packageInfo","execSync","fileName","downloadAndSaveCodesSync","gamesContentSize","odrTagGameMap","tag","TTMGODRConfig","gameSize","assignedTag","odrTag","odrTagDir","sum","gid","srcDir","destDir","cpSync","configPath","checkProject","projectSizeLimit","errMsg","checkConfig","limit","gameSizeMB","round","limitMB","checkProjectSize","checkMainPackage","mainPackageSizeLimit","gameJsPath","mainPkgSize","mainPkgSizeMB","checkMainPackageSize","checkSubpackages","subpackageSizeLimit","subpackageEntryDir","subpackageRoot","subPkgName","subPkgDir","subPkgSize","sizeMB","checkSubPackageSize","checkPkgs","compile","source_dir","output_dir","client_key","packResult","error_message","config_path","outputPath","pkgOutput","codeOutput","assetOutput","code_md5","makeOdrPkgs","ttpkgsResult","ttpkgsStartTime","pLimit","results","compressPkgs","ttpkgs","sttpkgs","all","sttpkgResult","encryptPkgs","odr_packages","relatedPkgName","code_output","asset_output","writeOdrPkgsConfig","message","odr","gamePackConfigPath","gamePackConfig","pkgDir","isSymbolicLink","linkTarget","readlinkSync","symlinkSync","mergePkgs"],"mappings":"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","x_google_ignoreList":[18,19]}
@@ -1 +0,0 @@
1
- {"Success":-1,"error":{"code":4008,"request_id":"3e76879aaec2f984689aaec2-ade5a94","message":"not found","ec":"0005-00000036","recommend_doc":"https://cloud.bytedance.net/docs/tos/docs/64db3bc855f10602a14c81dc/671f54f792fb7b0328303157"}}
@@ -1 +0,0 @@
1
- {"Success":-1,"error":{"code":4008,"request_id":"df62f9aaed265e3689aaed2-fdbdgdc61g18g179gg27","message":"not found","ec":"0005-00000036","recommend_doc":"https://cloud.bytedance.net/docs/tos/docs/64db3bc855f10602a14c81dc/671f54f792fb7b0328303157"}}