@playcraft/build 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 (74) hide show
  1. package/README.md +96 -0
  2. package/dist/base-builder.d.ts +66 -0
  3. package/dist/base-builder.js +415 -0
  4. package/dist/converter.d.ts +35 -0
  5. package/dist/converter.js +148 -0
  6. package/dist/generators/config-generator.d.ts +7 -0
  7. package/dist/generators/config-generator.js +122 -0
  8. package/dist/generators/settings-generator.d.ts +14 -0
  9. package/dist/generators/settings-generator.js +100 -0
  10. package/dist/index.d.ts +14 -0
  11. package/dist/index.js +14 -0
  12. package/dist/loaders/playcanvas-loader.d.ts +10 -0
  13. package/dist/loaders/playcanvas-loader.js +18 -0
  14. package/dist/loaders/playcraft-loader.d.ts +10 -0
  15. package/dist/loaders/playcraft-loader.js +51 -0
  16. package/dist/platforms/applovin.d.ts +10 -0
  17. package/dist/platforms/applovin.js +67 -0
  18. package/dist/platforms/base.d.ts +29 -0
  19. package/dist/platforms/base.js +11 -0
  20. package/dist/platforms/bigo.d.ts +15 -0
  21. package/dist/platforms/bigo.js +77 -0
  22. package/dist/platforms/facebook.d.ts +9 -0
  23. package/dist/platforms/facebook.js +37 -0
  24. package/dist/platforms/google.d.ts +10 -0
  25. package/dist/platforms/google.js +53 -0
  26. package/dist/platforms/index.d.ts +14 -0
  27. package/dist/platforms/index.js +47 -0
  28. package/dist/platforms/ironsource.d.ts +10 -0
  29. package/dist/platforms/ironsource.js +71 -0
  30. package/dist/platforms/liftoff.d.ts +10 -0
  31. package/dist/platforms/liftoff.js +56 -0
  32. package/dist/platforms/moloco.d.ts +10 -0
  33. package/dist/platforms/moloco.js +53 -0
  34. package/dist/platforms/snapchat.d.ts +10 -0
  35. package/dist/platforms/snapchat.js +59 -0
  36. package/dist/platforms/tiktok.d.ts +15 -0
  37. package/dist/platforms/tiktok.js +65 -0
  38. package/dist/platforms/unity.d.ts +10 -0
  39. package/dist/platforms/unity.js +69 -0
  40. package/dist/playable-builder.d.ts +97 -0
  41. package/dist/playable-builder.js +590 -0
  42. package/dist/types.d.ts +90 -0
  43. package/dist/types.js +1 -0
  44. package/dist/vite/config-builder.d.ts +15 -0
  45. package/dist/vite/config-builder.js +212 -0
  46. package/dist/vite/platform-configs.d.ts +38 -0
  47. package/dist/vite/platform-configs.js +257 -0
  48. package/dist/vite/plugin-model-compression.d.ts +11 -0
  49. package/dist/vite/plugin-model-compression.js +63 -0
  50. package/dist/vite/plugin-platform.d.ts +17 -0
  51. package/dist/vite/plugin-platform.js +241 -0
  52. package/dist/vite/plugin-playcanvas.d.ts +18 -0
  53. package/dist/vite/plugin-playcanvas.js +711 -0
  54. package/dist/vite/plugin-source-builder.d.ts +15 -0
  55. package/dist/vite/plugin-source-builder.js +344 -0
  56. package/dist/vite-builder.d.ts +51 -0
  57. package/dist/vite-builder.js +122 -0
  58. package/package.json +51 -0
  59. package/templates/__loading__.js +100 -0
  60. package/templates/__modules__.js +47 -0
  61. package/templates/__settings__.template.js +20 -0
  62. package/templates/__start__.js +332 -0
  63. package/templates/index.html +18 -0
  64. package/templates/logo.png +0 -0
  65. package/templates/manifest.json +1 -0
  66. package/templates/patches/cannon.min.js +28 -0
  67. package/templates/patches/lz4.js +10 -0
  68. package/templates/patches/one-page-http-get.js +20 -0
  69. package/templates/patches/one-page-inline-game-scripts.js +20 -0
  70. package/templates/patches/one-page-mraid-resize-canvas.js +46 -0
  71. package/templates/patches/p2.min.js +27 -0
  72. package/templates/patches/playcraft-no-xhr.js +52 -0
  73. package/templates/playcanvas-stable.min.js +16363 -0
  74. package/templates/styles.css +43 -0
@@ -0,0 +1,69 @@
1
+ import { PlatformAdapter } from './base.js';
2
+ export class UnityAdapter extends PlatformAdapter {
3
+ getName() {
4
+ return 'Unity Ads';
5
+ }
6
+ getSizeLimit() {
7
+ // Unity Ads: 5MB
8
+ return 5 * 1024 * 1024;
9
+ }
10
+ getDefaultFormat() {
11
+ return 'html';
12
+ }
13
+ modifyHTML(html, assets) {
14
+ // Unity Ads 需要 MRAID 3.0 支持
15
+ const unityScript = `
16
+ <script>
17
+ // MRAID 3.0 API
18
+ window.mraid = window.mraid || {
19
+ getVersion: function() { return '3.0'; },
20
+ isReady: function() { return true; },
21
+ open: function(url) {
22
+ console.log('Unity Ads CTA: opening store');
23
+ window.open(url);
24
+ },
25
+ close: function() { window.close(); },
26
+ addEventListener: function(event, listener) {
27
+ if (event === 'ready' || event === 'viewableChange') {
28
+ setTimeout(() => listener({ viewable: true }), 0);
29
+ }
30
+ },
31
+ removeEventListener: function(event, listener) {},
32
+ getState: function() { return 'default'; },
33
+ getPlacementType: function() { return 'interstitial'; },
34
+ isViewable: function() { return true; }
35
+ };
36
+ </script>
37
+ <!--
38
+ 注意:
39
+ - Unity Ads 要求 MRAID 3.0
40
+ - 需等待 mraid.viewableChange 事件后再启动游戏
41
+ - 使用 mraid.open() 跳转应用商店
42
+ - 不允许自动重定向
43
+ - 支持 Android ≥4.4, iOS ≥9.0
44
+ -->
45
+ `;
46
+ // 在 </head> 之前插入
47
+ return html.replace('</head>', `${unityScript}</head>`);
48
+ }
49
+ getPlatformScript() {
50
+ return `
51
+ // Unity Ads Playable
52
+ // 等待 viewableChange 事件
53
+
54
+ if (typeof mraid !== 'undefined') {
55
+ mraid.addEventListener('viewableChange', function(viewable) {
56
+ if (viewable) {
57
+ console.log('Unity Ads: playable is viewable, starting game');
58
+ // 这里启动游戏内容
59
+ }
60
+ });
61
+ }
62
+ `;
63
+ }
64
+ validateOptions() {
65
+ if (this.options.format && this.options.format !== 'html') {
66
+ console.warn('警告: Unity Ads 使用单文件 HTML 格式');
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,97 @@
1
+ import type { BuildOptions, SizeReport } from './types.js';
2
+ export interface PlayableBuildOutput {
3
+ outputPath: string;
4
+ size: number;
5
+ sizeLimit: number;
6
+ valid: boolean;
7
+ }
8
+ /**
9
+ * Playable Ads 打包器 - 将多文件版本转换为单HTML
10
+ *
11
+ * 职责:
12
+ * 1. 读取阶段1的多文件构建产物
13
+ * 2. 将所有文件内联到单个HTML
14
+ * 3. 应用渠道特定配置和限制
15
+ * 4. 优化文件大小
16
+ */
17
+ export declare class PlayableBuilder {
18
+ private baseBuildDir;
19
+ private options;
20
+ private platformAdapter;
21
+ private sizeReport;
22
+ constructor(baseBuildDir: string, options: BuildOptions);
23
+ /**
24
+ * 执行打包
25
+ */
26
+ build(): Promise<string>;
27
+ /**
28
+ * 验证基础构建
29
+ */
30
+ private validateBaseBuild;
31
+ /**
32
+ * 转换为单HTML
33
+ */
34
+ private convertToSingleHTML;
35
+ /**
36
+ * 内联 CSS 文件
37
+ */
38
+ private inlineCSS;
39
+ /**
40
+ * 内联 manifest.json
41
+ */
42
+ private inlineManifest;
43
+ /**
44
+ * 内联 PlayCanvas Engine
45
+ */
46
+ private inlineEngine;
47
+ /**
48
+ * 内联 __settings__.js 并转换资源URL
49
+ */
50
+ private inlineSettings;
51
+ /**
52
+ * 生成并内联 settings(如果 __settings__.js 不存在)
53
+ */
54
+ private generateAndInlineSettings;
55
+ /**
56
+ * 转换 CONFIG_FILENAME 为 data URL
57
+ */
58
+ private convertConfigFilename;
59
+ /**
60
+ * 转换 SCENE_PATH 为 data URL
61
+ */
62
+ private convertScenePath;
63
+ /**
64
+ * 转换 PRELOAD_MODULES 中的资源URL
65
+ * 对于 Playable Ads,优先使用 fallback JS 版本(跳过 WASM)
66
+ */
67
+ private convertPreloadModules;
68
+ /**
69
+ * 从 config.json 提取 PRELOAD_MODULES
70
+ */
71
+ private extractPreloadModules;
72
+ private stripAmmoAssets;
73
+ private injectPhysicsLibrary;
74
+ private isAmmoModule;
75
+ private readPatchFile;
76
+ /**
77
+ * 内联 __modules__.js
78
+ */
79
+ private inlineModules;
80
+ /**
81
+ * 内联 __game-scripts.js
82
+ * 游戏脚本需要在内联到HTML中,以便PlayCanvas可以加载它们
83
+ */
84
+ private inlineGameScripts;
85
+ /**
86
+ * 内联 __start__.js
87
+ */
88
+ private inlineStart;
89
+ /**
90
+ * 内联 __loading__.js
91
+ */
92
+ private inlineLoading;
93
+ /**
94
+ * 获取大小报告
95
+ */
96
+ getSizeReport(): SizeReport;
97
+ }