@cloudcare/cocos-sdk 0.1.0 → 0.1.1-alpha.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 (139) hide show
  1. package/README.md +35 -6
  2. package/bin/cli.cjs +42 -5
  3. package/bin/project-configuration.cjs +135 -0
  4. package/bin/web-assets.cjs +32 -0
  5. package/dist/creator2/core/auto-tracking.js.map +1 -1
  6. package/dist/creator2/core/client.d.ts +1 -0
  7. package/dist/creator2/core/client.d.ts.map +1 -1
  8. package/dist/creator2/core/client.js +13 -0
  9. package/dist/creator2/core/client.js.map +1 -1
  10. package/dist/creator2/core/index.js.map +1 -1
  11. package/dist/creator2/core/modules.js.map +1 -1
  12. package/dist/creator2/core/platform-client.d.ts +46 -0
  13. package/dist/creator2/core/platform-client.d.ts.map +1 -0
  14. package/dist/creator2/core/platform-client.js +195 -0
  15. package/dist/creator2/core/platform-client.js.map +1 -0
  16. package/dist/creator2/core/platform-options.d.ts +30 -0
  17. package/dist/creator2/core/platform-options.d.ts.map +1 -0
  18. package/dist/creator2/core/platform-options.js +3 -0
  19. package/dist/creator2/core/platform-options.js.map +1 -0
  20. package/dist/creator2/core/platform-runtime.d.ts +59 -0
  21. package/dist/creator2/core/platform-runtime.d.ts.map +1 -0
  22. package/dist/creator2/core/platform-runtime.js +36 -0
  23. package/dist/creator2/core/platform-runtime.js.map +1 -0
  24. package/dist/creator2/core/plugin-api.d.ts +1 -1
  25. package/dist/creator2/core/plugin-api.d.ts.map +1 -1
  26. package/dist/creator2/core/plugin-api.js.map +1 -1
  27. package/dist/creator2/core/transport.d.ts +1 -1
  28. package/dist/creator2/core/transport.d.ts.map +1 -1
  29. package/dist/creator2/core/transport.js.map +1 -1
  30. package/dist/creator2/core/types.js.map +1 -1
  31. package/dist/creator2/core/validation.js.map +1 -1
  32. package/dist/creator2/core/version.d.ts +1 -1
  33. package/dist/creator2/core/version.d.ts.map +1 -1
  34. package/dist/creator2/core/version.js +1 -1
  35. package/dist/creator2/core/version.js.map +1 -1
  36. package/dist/creator2/creator2/auto.js.map +1 -1
  37. package/dist/creator2/creator2/index.d.ts +6 -3
  38. package/dist/creator2/creator2/index.d.ts.map +1 -1
  39. package/dist/creator2/creator2/index.js +12 -8
  40. package/dist/creator2/creator2/index.js.map +1 -1
  41. package/dist/creator2/creator2/transport.js.map +1 -1
  42. package/dist/creator2/native/bootstrap.d.ts +2 -0
  43. package/dist/creator2/native/bootstrap.d.ts.map +1 -0
  44. package/dist/creator2/native/bootstrap.js +34 -0
  45. package/dist/creator2/native/bootstrap.js.map +1 -0
  46. package/dist/creator2/web/bootstrap.d.ts +3 -0
  47. package/dist/creator2/web/bootstrap.d.ts.map +1 -0
  48. package/dist/creator2/web/bootstrap.js +15 -0
  49. package/dist/creator2/web/bootstrap.js.map +1 -0
  50. package/dist/creator2/web/client.d.ts +60 -0
  51. package/dist/creator2/web/client.d.ts.map +1 -0
  52. package/dist/creator2/web/client.js +293 -0
  53. package/dist/creator2/web/client.js.map +1 -0
  54. package/dist/creator2/web/creator2.d.ts +5 -0
  55. package/dist/creator2/web/creator2.d.ts.map +1 -0
  56. package/dist/creator2/web/creator2.js +27 -0
  57. package/dist/creator2/web/creator2.js.map +1 -0
  58. package/dist/creator2/web/privacy.d.ts +3 -0
  59. package/dist/creator2/web/privacy.d.ts.map +1 -0
  60. package/dist/creator2/web/privacy.js +39 -0
  61. package/dist/creator2/web/privacy.js.map +1 -0
  62. package/dist/creator2/web/runtime.d.ts +23 -0
  63. package/dist/creator2/web/runtime.d.ts.map +1 -0
  64. package/dist/creator2/web/runtime.js +265 -0
  65. package/dist/creator2/web/runtime.js.map +1 -0
  66. package/dist/creator2/web/types.d.ts +91 -0
  67. package/dist/creator2/web/types.d.ts.map +1 -0
  68. package/dist/creator2/web/types.js +3 -0
  69. package/dist/creator2/web/types.js.map +1 -0
  70. package/dist/creator3/core/client.d.ts +1 -0
  71. package/dist/creator3/core/client.d.ts.map +1 -1
  72. package/dist/creator3/core/client.js +5 -0
  73. package/dist/creator3/core/client.js.map +1 -1
  74. package/dist/creator3/core/platform-client.d.ts +46 -0
  75. package/dist/creator3/core/platform-client.d.ts.map +1 -0
  76. package/dist/creator3/core/platform-client.js +135 -0
  77. package/dist/creator3/core/platform-client.js.map +1 -0
  78. package/dist/creator3/core/platform-options.d.ts +30 -0
  79. package/dist/creator3/core/platform-options.d.ts.map +1 -0
  80. package/dist/creator3/core/platform-options.js +2 -0
  81. package/dist/creator3/core/platform-options.js.map +1 -0
  82. package/dist/creator3/core/platform-runtime.d.ts +59 -0
  83. package/dist/creator3/core/platform-runtime.d.ts.map +1 -0
  84. package/dist/creator3/core/platform-runtime.js +29 -0
  85. package/dist/creator3/core/platform-runtime.js.map +1 -0
  86. package/dist/creator3/core/plugin-api.d.ts +1 -1
  87. package/dist/creator3/core/plugin-api.d.ts.map +1 -1
  88. package/dist/creator3/core/transport.d.ts +1 -1
  89. package/dist/creator3/core/transport.d.ts.map +1 -1
  90. package/dist/creator3/core/version.d.ts +1 -1
  91. package/dist/creator3/core/version.d.ts.map +1 -1
  92. package/dist/creator3/core/version.js +1 -1
  93. package/dist/creator3/core/version.js.map +1 -1
  94. package/dist/creator3/creator3/index.d.ts +6 -3
  95. package/dist/creator3/creator3/index.d.ts.map +1 -1
  96. package/dist/creator3/creator3/index.js +13 -8
  97. package/dist/creator3/creator3/index.js.map +1 -1
  98. package/dist/creator3/native/bootstrap.d.ts +2 -0
  99. package/dist/creator3/native/bootstrap.d.ts.map +1 -0
  100. package/dist/creator3/native/bootstrap.js +32 -0
  101. package/dist/creator3/native/bootstrap.js.map +1 -0
  102. package/dist/creator3/web/bootstrap.d.ts +3 -0
  103. package/dist/creator3/web/bootstrap.d.ts.map +1 -0
  104. package/dist/creator3/web/bootstrap.js +11 -0
  105. package/dist/creator3/web/bootstrap.js.map +1 -0
  106. package/dist/creator3/web/client.d.ts +60 -0
  107. package/dist/creator3/web/client.d.ts.map +1 -0
  108. package/dist/creator3/web/client.js +255 -0
  109. package/dist/creator3/web/client.js.map +1 -0
  110. package/dist/creator3/web/creator3.d.ts +5 -0
  111. package/dist/creator3/web/creator3.d.ts.map +1 -0
  112. package/dist/creator3/web/creator3.js +11 -0
  113. package/dist/creator3/web/creator3.js.map +1 -0
  114. package/dist/creator3/web/privacy.d.ts +3 -0
  115. package/dist/creator3/web/privacy.d.ts.map +1 -0
  116. package/dist/creator3/web/privacy.js +26 -0
  117. package/dist/creator3/web/privacy.js.map +1 -0
  118. package/dist/creator3/web/runtime.d.ts +23 -0
  119. package/dist/creator3/web/runtime.d.ts.map +1 -0
  120. package/dist/creator3/web/runtime.js +267 -0
  121. package/dist/creator3/web/runtime.js.map +1 -0
  122. package/dist/creator3/web/types.d.ts +91 -0
  123. package/dist/creator3/web/types.d.ts.map +1 -0
  124. package/dist/creator3/web/types.js +2 -0
  125. package/dist/creator3/web/types.js.map +1 -0
  126. package/extensions/creator2/install-web.cjs +69 -0
  127. package/extensions/creator2/main.js +19 -2
  128. package/extensions/creator2/project-configuration.cjs +135 -0
  129. package/extensions/creator3/dist/hooks.js +13 -0
  130. package/extensions/creator3/install-web.cjs +69 -0
  131. package/extensions/creator3/project-configuration.cjs +135 -0
  132. package/native/ios/FTCocosBridge.podspec +1 -1
  133. package/package.json +19 -3
  134. package/runtime/native.js +1191 -0
  135. package/web/bootstrap/package.json +4 -0
  136. package/web/bootstrap.js +1042 -0
  137. package/web/bootstrap.js.map +7 -0
  138. package/web/creator2/package.json +4 -0
  139. package/web/creator3/package.json +4 -0
@@ -15,15 +15,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.guanceSdk = void 0;
18
- var auto_tracking_js_1 = require("../core/auto-tracking.js");
19
- var client_js_1 = require("../core/client.js");
20
- var modules_js_1 = require("../core/modules.js");
18
+ var platform_client_js_1 = require("../core/platform-client.js");
21
19
  var auto_js_1 = require("./auto.js");
22
- var transport_js_1 = require("./transport.js");
23
- var transport = new transport_js_1.FTCreator2Transport();
20
+ var privacy_js_1 = require("../web/privacy.js");
24
21
  var hooks = new auto_js_1.FTCreator2TrackingHooks();
25
- var autoTracking = new auto_tracking_js_1.FTDefaultAutoTracking(new modules_js_1.FTRUM(transport), new modules_js_1.FTLogger(transport), new modules_js_1.FTTrace(transport), hooks);
26
- /** Shared SDK entry point for Cocos Creator 2.4 applications. */
27
- exports.guanceSdk = new client_js_1.FTCocosSDK(transport, autoTracking, 'creator2');
22
+ /** Shared native and Web entry point for Cocos Creator 2.4 applications. */
23
+ exports.guanceSdk = new platform_client_js_1.FTCocosPlatformSDK('creator2', function () {
24
+ var isNative = (typeof CC_JSB !== 'undefined' && CC_JSB) || typeof jsb !== 'undefined';
25
+ var platform = typeof CC_EDITOR !== 'undefined' && CC_EDITOR ? 'unsupported' : !isNative ? 'web'
26
+ : (typeof CC_ANDROID !== 'undefined' && CC_ANDROID) || cc.sys.os === cc.sys.OS_ANDROID ? 'android'
27
+ : (typeof CC_IOS !== 'undefined' && CC_IOS) || cc.sys.os === cc.sys.OS_IOS ? 'ios' : 'unsupported';
28
+ return { engine: 'creator2', platform: platform, hooks: hooks, engineApi: cc,
29
+ reflection: isNative && typeof jsb !== 'undefined' ? jsb.reflection : undefined,
30
+ canvasIsPublic: function () { return (0, privacy_js_1.isScenePublic)(cc.director.getScene(), false); } };
31
+ });
28
32
  __exportStar(require("../core/index.js"), exports);
29
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/creator2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAAiE;AACjE,+CAA+C;AAC/C,iDAA8D;AAC9D,qCAAoD;AACpD,+CAAqD;AAErD,IAAM,SAAS,GAAG,IAAI,kCAAmB,EAAE,CAAC;AAC5C,IAAM,KAAK,GAAG,IAAI,iCAAuB,EAAE,CAAC;AAC5C,IAAM,YAAY,GAAG,IAAI,wCAAqB,CAC5C,IAAI,kBAAK,CAAC,SAAS,CAAC,EACpB,IAAI,qBAAQ,CAAC,SAAS,CAAC,EACvB,IAAI,oBAAO,CAAC,SAAS,CAAC,EACtB,KAAK,CACN,CAAC;AAEF,iEAAiE;AACpD,QAAA,SAAS,GAAG,IAAI,sBAAU,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE7E,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/creator2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAgE;AAChE,qCAAoD;AACpD,gDAAkD;AAElD,IAAM,KAAK,GAAG,IAAI,iCAAuB,EAAE,CAAC;AAC5C,4EAA4E;AAC/D,QAAA,SAAS,GAAG,IAAI,uCAAkB,CAAC,UAAU,EAAE;IAC1D,IAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC;IACzF,IAAM,QAAQ,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QAChG,CAAC,CAAC,CAAC,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAChG,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;IACvG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,SAAS,EAAE,EAAE;QACzD,UAAU,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC/E,cAAc,EAAE,cAAM,OAAA,IAAA,0BAAa,EAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,EAA5C,CAA4C,EAAE,CAAC;AACzE,CAAC,CAAC,CAAC;AACH,mDAAiC","sourcesContent":["import { FTCocosPlatformSDK } from '../core/platform-client.js';\nimport { FTCreator2TrackingHooks } from './auto.js';\nimport { isScenePublic } from '../web/privacy.js';\n\nconst hooks = new FTCreator2TrackingHooks();\n/** Shared native and Web entry point for Cocos Creator 2.4 applications. */\nexport const guanceSdk = new FTCocosPlatformSDK('creator2', () => {\n const isNative = (typeof CC_JSB !== 'undefined' && CC_JSB) || typeof jsb !== 'undefined';\n const platform = typeof CC_EDITOR !== 'undefined' && CC_EDITOR ? 'unsupported' : !isNative ? 'web'\n : (typeof CC_ANDROID !== 'undefined' && CC_ANDROID) || cc.sys.os === cc.sys.OS_ANDROID ? 'android'\n : (typeof CC_IOS !== 'undefined' && CC_IOS) || cc.sys.os === cc.sys.OS_IOS ? 'ios' : 'unsupported';\n return { engine: 'creator2', platform, hooks, engineApi: cc,\n reflection: isNative && typeof jsb !== 'undefined' ? jsb.reflection : undefined,\n canvasIsPublic: () => isScenePublic(cc.director.getScene(), false) };\n});\nexport * from '../core/index.js';\nexport type { FTCocosPlatformConfig } from '../core/platform-client.js';\nexport type { FTCocosWebConfig, FTWebConfig, FTWebReplayConfig } from '../web/types.js';\nexport type { FTNativeReplayConfig, FTCocosProjectConfiguration } from '../core/platform-options.js';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/creator2/transport.ts"],"names":[],"mappings":";;;AAAA,qDAAsF;AAGtF;IAAA;QACW,aAAQ,GAAsC,uBAAuB,EAAE,CAAC;IAgBnF,CAAC;IAdC,oCAAM,GAAN,UAAoB,MAAc,EAAE,OAAiB;QACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa;YAAE,OAAO,SAAS,CAAC;QACtD,IAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpE,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAC7B,gCAAgC,EAChC,QAAQ,EACR,0DAA0D,EAC1D,MAAM,EACN,IAAI,CACL;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO,IAAA,qCAAsB,EAAI,GAAG,CAAC,CAAC;IACxC,CAAC;IACH,0BAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,kDAAmB;AAmBhC,SAAS,uBAAuB;;IAC9B,IAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC;IACzF,IAAI,CAAC,QAAQ;QAAE,OAAO,aAAa,CAAC;IACpC,IACE,CAAC,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC;WAC9C,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,IACE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC;WACtC,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/creator2/transport.ts"],"names":[],"mappings":";;;AAAA,qDAAsF;AAGtF;IAAA;QACW,aAAQ,GAAsC,uBAAuB,EAAE,CAAC;IAgBnF,CAAC;IAdC,oCAAM,GAAN,UAAoB,MAAc,EAAE,OAAiB;QACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa;YAAE,OAAO,SAAS,CAAC;QACtD,IAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpE,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAC7B,gCAAgC,EAChC,QAAQ,EACR,0DAA0D,EAC1D,MAAM,EACN,IAAI,CACL;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO,IAAA,qCAAsB,EAAI,GAAG,CAAC,CAAC;IACxC,CAAC;IACH,0BAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,kDAAmB;AAmBhC,SAAS,uBAAuB;;IAC9B,IAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC;IACzF,IAAI,CAAC,QAAQ;QAAE,OAAO,aAAa,CAAC;IACpC,IACE,CAAC,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC;WAC9C,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,IACE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC;WACtC,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import { parseTransportResponse, type FTNativeTransport } from '../core/transport.js';\nimport type { FTValue } from '../core/types.js';\n\nexport class FTCreator2Transport implements FTNativeTransport {\n readonly platform: 'android' | 'ios' | 'unsupported' = resolveCreator2Platform();\n\n invoke<T = FTValue>(method: string, payload?: unknown): T | undefined {\n if (this.platform === 'unsupported') return undefined;\n const json = payload === undefined ? '{}' : JSON.stringify(payload);\n const raw = this.platform === 'android'\n ? jsb.reflection.callStaticMethod(\n 'com/ft/sdk/cocos/FTCocosBridge',\n 'invoke',\n '(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;',\n method,\n json,\n )\n : jsb.reflection.callStaticMethod('FTCocosBridge', 'invoke:payload:', method, json);\n return parseTransportResponse<T>(raw);\n }\n}\n\nfunction resolveCreator2Platform(): 'android' | 'ios' | 'unsupported' {\n const isNative = (typeof CC_JSB !== 'undefined' && CC_JSB) || typeof jsb !== 'undefined';\n if (!isNative) return 'unsupported';\n if (\n (typeof CC_ANDROID !== 'undefined' && CC_ANDROID)\n || (typeof cc !== 'undefined' && cc.sys?.os === cc.sys.OS_ANDROID)\n ) return 'android';\n if (\n (typeof CC_IOS !== 'undefined' && CC_IOS)\n || (typeof cc !== 'undefined' && cc.sys?.os === cc.sys.OS_IOS)\n ) return 'ios';\n return 'unsupported';\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/native/bootstrap.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var auto_tracking_js_1 = require("../core/auto-tracking.js");
4
+ var client_js_1 = require("../core/client.js");
5
+ var modules_js_1 = require("../core/modules.js");
6
+ var transport_js_1 = require("../core/transport.js");
7
+ var platform_runtime_js_1 = require("../core/platform-runtime.js");
8
+ var version_js_1 = require("../core/version.js");
9
+ /** Installed as a native/Editor plugin script; never imported by the game's module graph. */
10
+ (0, platform_runtime_js_1.platformGlobal)().__FT_COCOS_NATIVE_FACTORY__ = {
11
+ protocol: 1,
12
+ version: version_js_1.FT_COCOS_SDK_VERSION,
13
+ create: function (context) {
14
+ if (context.platform === 'web')
15
+ throw new Error('Native runtime cannot serve a Web application');
16
+ var transport = {
17
+ platform: context.platform,
18
+ invoke: function (method, payload) {
19
+ if (context.platform === 'unsupported')
20
+ return undefined;
21
+ if (!context.reflection)
22
+ throw new Error('Cocos native reflection is unavailable');
23
+ var json = payload === undefined ? '{}' : JSON.stringify(payload);
24
+ var raw = context.platform === 'android'
25
+ ? context.reflection.callStaticMethod('com/ft/sdk/cocos/FTCocosBridge', 'invoke', '(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;', method, json)
26
+ : context.reflection.callStaticMethod('FTCocosBridge', 'invoke:payload:', method, json);
27
+ return (0, transport_js_1.parseTransportResponse)(raw);
28
+ },
29
+ };
30
+ var tracking = new auto_tracking_js_1.FTDefaultAutoTracking(new modules_js_1.FTRUM(transport), new modules_js_1.FTLogger(transport), new modules_js_1.FTTrace(transport), context.hooks);
31
+ return new client_js_1.FTCocosSDK(transport, tracking, context.engine);
32
+ },
33
+ };
34
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../../src/native/bootstrap.ts"],"names":[],"mappings":";;AAAA,6DAAiE;AACjE,+CAA+C;AAC/C,iDAA8D;AAC9D,qDAAsF;AACtF,mEAAqF;AACrF,iDAA0D;AAE1D,6FAA6F;AAC7F,IAAA,oCAAc,GAAE,CAAC,2BAA2B,GAAG;IAC7C,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,iCAAoB;IAC7B,MAAM,YAAC,OAA0B;QAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACjG,IAAM,SAAS,GAAsB;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,YAAI,MAAc,EAAE,OAAiB;gBACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa;oBAAE,OAAO,SAAS,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACnF,IAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACpE,IAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS;oBACxC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,gCAAgC,EAAE,QAAQ,EAAE,0DAA0D,EAAE,MAAM,EAAE,IAAI,CAAC;oBAC3J,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC1F,OAAO,IAAA,qCAAsB,EAAI,GAAG,CAAC,CAAC;YACxC,CAAC;SACF,CAAC;QACF,IAAM,QAAQ,GAAG,IAAI,wCAAqB,CAAC,IAAI,kBAAK,CAAC,SAAS,CAAC,EAAE,IAAI,qBAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,oBAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjI,OAAO,IAAI,sBAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC","sourcesContent":["import { FTDefaultAutoTracking } from '../core/auto-tracking.js';\nimport { FTCocosSDK } from '../core/client.js';\nimport { FTLogger, FTRUM, FTTrace } from '../core/modules.js';\nimport { parseTransportResponse, type FTNativeTransport } from '../core/transport.js';\nimport { platformGlobal, type FTPlatformContext } from '../core/platform-runtime.js';\nimport { FT_COCOS_SDK_VERSION } from '../core/version.js';\n\n/** Installed as a native/Editor plugin script; never imported by the game's module graph. */\nplatformGlobal().__FT_COCOS_NATIVE_FACTORY__ = {\n protocol: 1,\n version: FT_COCOS_SDK_VERSION,\n create(context: FTPlatformContext): FTCocosSDK {\n if (context.platform === 'web') throw new Error('Native runtime cannot serve a Web application');\n const transport: FTNativeTransport = {\n platform: context.platform,\n invoke<T>(method: string, payload?: unknown): T | undefined {\n if (context.platform === 'unsupported') return undefined;\n if (!context.reflection) throw new Error('Cocos native reflection is unavailable');\n const json = payload === undefined ? '{}' : JSON.stringify(payload);\n const raw = context.platform === 'android'\n ? context.reflection.callStaticMethod('com/ft/sdk/cocos/FTCocosBridge', 'invoke', '(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;', method, json)\n : context.reflection.callStaticMethod('FTCocosBridge', 'invoke:payload:', method, json);\n return parseTransportResponse<T>(raw);\n },\n };\n const tracking = new FTDefaultAutoTracking(new FTRUM(transport), new FTLogger(transport), new FTTrace(transport), context.hooks);\n return new FTCocosSDK(transport, tracking, context.engine);\n },\n};\n"]}
@@ -0,0 +1,3 @@
1
+ export { bootstrapWeb } from './runtime.js';
2
+ export type { FTCocosWebConfig, FTWebConfig, FTWebReplayConfig } from './types.js';
3
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../../../src/web/bootstrap.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrapWeb = void 0;
4
+ var client_js_1 = require("./client.js");
5
+ var platform_runtime_js_1 = require("../core/platform-runtime.js");
6
+ var version_js_1 = require("../core/version.js");
7
+ /** Available before game modules, with Browser collectors initialized by bootstrapWeb(). */
8
+ (0, platform_runtime_js_1.platformGlobal)().__FT_COCOS_WEB_FACTORY__ = {
9
+ protocol: 1,
10
+ version: version_js_1.FT_COCOS_SDK_VERSION,
11
+ create: function (context, target) { return new client_js_1.FTCocosWebSDK(context.hooks, context.canvasIsPublic, target); },
12
+ };
13
+ var runtime_js_1 = require("./runtime.js");
14
+ Object.defineProperty(exports, "bootstrapWeb", { enumerable: true, get: function () { return runtime_js_1.bootstrapWeb; } });
15
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../../src/web/bootstrap.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,mEAA6D;AAC7D,iDAA0D;AAG1D,4FAA4F;AAC5F,IAAA,oCAAc,GAAE,CAAC,wBAAwB,GAAG;IAC1C,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,iCAAoB;IAC7B,MAAM,EAAE,UAAC,OAAO,EAAE,MAAM,IAAK,OAAA,IAAI,yBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,MAAqB,CAAC,EAA/E,CAA+E;CAC7G,CAAC;AACF,2CAA4C;AAAnC,0GAAA,YAAY,OAAA","sourcesContent":["import { FTCocosWebSDK } from './client.js';\nimport { platformGlobal } from '../core/platform-runtime.js';\nimport { FT_COCOS_SDK_VERSION } from '../core/version.js';\nimport type { FTWebWindow } from './types.js';\n\n/** Available before game modules, with Browser collectors initialized by bootstrapWeb(). */\nplatformGlobal().__FT_COCOS_WEB_FACTORY__ = {\n protocol: 1,\n version: FT_COCOS_SDK_VERSION,\n create: (context, target) => new FTCocosWebSDK(context.hooks, context.canvasIsPublic, target as FTWebWindow),\n};\nexport { bootstrapWeb } from './runtime.js';\nexport type { FTCocosWebConfig, FTWebConfig, FTWebReplayConfig } from './types.js';\n"]}
@@ -0,0 +1,60 @@
1
+ import { FTLogger, FTMobileAgent, FTRUM, FTTrace } from '../core/modules.js';
2
+ import type { FTEngineTrackingHooks } from '../core/auto-tracking.js';
3
+ import type { FTCocosConfig, FTCocosEnterOptions } from '../core/types.js';
4
+ import type { FTCocosWebAttachConfig, FTCocosWebConfig, FTWebWindow } from './types.js';
5
+ /** Web facade. Browser owns page-wide collectors; detach only removes Cocos instrumentation. */
6
+ export declare class FTCocosWebSDK {
7
+ private readonly hooks;
8
+ private readonly canvasIsPublic;
9
+ private readonly target;
10
+ private readonly consoleObject;
11
+ readonly platform: "web";
12
+ readonly capabilities: {
13
+ readonly timedActions: false;
14
+ readonly manualResourceTiming: false;
15
+ readonly manualLongTasks: false;
16
+ readonly manualTraceHeaders: false;
17
+ readonly shutdown: false;
18
+ readonly nodeReplayMasks: false;
19
+ };
20
+ readonly mobile: FTMobileAgent;
21
+ readonly rum: FTRUM;
22
+ readonly logger: FTLogger;
23
+ readonly trace: FTTrace;
24
+ private runtime;
25
+ private tracking;
26
+ private state;
27
+ private stops;
28
+ private activeView;
29
+ private readonly privateNodes;
30
+ get lifecycleMode(): 'idle' | 'standalone' | 'hybrid';
31
+ get isCocosEntered(): boolean;
32
+ readonly replay: {
33
+ /** Recording settings belong to the pre-engine Web bootstrap. */
34
+ start: () => void;
35
+ stop: () => void;
36
+ isRecording: () => boolean;
37
+ /** Any protected node blocks the entire Cocos canvas; Browser Replay cannot render node masks. */
38
+ setPrivacy: (node: unknown, mode: "mask" | "hide" | "unmask") => void;
39
+ };
40
+ constructor(hooks: FTEngineTrackingHooks, canvasIsPublic: () => boolean, target?: FTWebWindow, consoleObject?: Console);
41
+ /** Starts standalone Cocos tracking, reusing pre-engine configuration when installed. */
42
+ start(config?: FTCocosWebConfig | FTCocosConfig): void;
43
+ /** Attaches to bootstrapWeb(), without initializing Browser collectors a second time. */
44
+ attach(config?: FTCocosWebAttachConfig): void;
45
+ enterCocos(options?: FTCocosEnterOptions): void;
46
+ /** Transitions to web.outsideViewName (CocosInactive by default). Browser session/network collection continues. */
47
+ leaveCocos(): void;
48
+ /** Releases Cocos hooks and Replay. Browser page collectors remain initialized until navigation/unload. */
49
+ detach(): void;
50
+ /** Stops this Cocos instance while retaining the page runtime. */
51
+ stop(): void;
52
+ shutdown(): never;
53
+ setReplayCamera(_camera: unknown): never;
54
+ private bind;
55
+ private startPage;
56
+ private stopPage;
57
+ private requireRuntime;
58
+ private trackConsole;
59
+ }
60
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/web/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAwB,aAAa,EAAE,mBAAmB,EAAW,MAAM,kBAAkB,CAAC;AAE1G,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAoB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1G,gGAAgG;AAChG,qBAAa,aAAa;IAmCtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IArChC,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;IACnC,QAAQ,CAAC,YAAY;;;;;;;MAGV;IACX,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,KAAK,CAA0D;IACvE,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAC3D,IAAI,aAAa,IAAI,MAAM,GAAG,YAAY,GAAG,QAAQ,CAEpD;IACD,IAAI,cAAc,IAAI,OAAO,CAAoE;IACjG,QAAQ,CAAC,MAAM;QACb,iEAAiE;qBACtD,IAAI;oBACL,IAAI;2BACG,OAAO;QACxB,kGAAkG;2BAC/E,OAAO,QAAQ,MAAM,GAAG,MAAM,GAAG,QAAQ,KAAG,IAAI;MAMnE;gBAGiB,KAAK,EAAE,qBAAqB,EAC5B,cAAc,EAAE,MAAM,OAAO,EAC7B,MAAM,GAAE,WAAmC,EAC3C,aAAa,GAAE,OAAiB;IAYnD,yFAAyF;IACzF,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,aAAa,GAAG,IAAI;IAoBtD,yFAAyF;IACzF,MAAM,CAAC,MAAM,GAAE,sBAA2B,GAAG,IAAI;IAejD,UAAU,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;IAWnD,mHAAmH;IACnH,UAAU,IAAI,IAAI;IAKlB,2GAA2G;IAC3G,MAAM,IAAI,IAAI;IAQd,kEAAkE;IAClE,IAAI,IAAI,IAAI;IACZ,QAAQ,IAAI,KAAK;IAGjB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAIxC,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;CAcrB"}
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.FTCocosWebSDK = void 0;
15
+ var modules_js_1 = require("../core/modules.js");
16
+ var runtime_js_1 = require("./runtime.js");
17
+ /** Web facade. Browser owns page-wide collectors; detach only removes Cocos instrumentation. */
18
+ var FTCocosWebSDK = /** @class */ (function () {
19
+ function FTCocosWebSDK(hooks, canvasIsPublic, target, consoleObject) {
20
+ if (target === void 0) { target = window; }
21
+ if (consoleObject === void 0) { consoleObject = console; }
22
+ var _this = this;
23
+ this.hooks = hooks;
24
+ this.canvasIsPublic = canvasIsPublic;
25
+ this.target = target;
26
+ this.consoleObject = consoleObject;
27
+ this.platform = 'web';
28
+ this.capabilities = {
29
+ timedActions: false, manualResourceTiming: false, manualLongTasks: false,
30
+ manualTraceHeaders: false, shutdown: false, nodeReplayMasks: false,
31
+ };
32
+ this.tracking = {};
33
+ this.state = 'idle';
34
+ this.stops = [];
35
+ this.activeView = false;
36
+ this.privateNodes = new Map();
37
+ this.replay = {
38
+ /** Recording settings belong to the pre-engine Web bootstrap. */
39
+ start: function () { _this.requireRuntime().startReplay(); },
40
+ stop: function () { _this.requireRuntime().stopReplay(); },
41
+ isRecording: function () { var _a; return ((_a = _this.runtime) === null || _a === void 0 ? void 0 : _a.isRecording()) || false; },
42
+ /** Any protected node blocks the entire Cocos canvas; Browser Replay cannot render node masks. */
43
+ setPrivacy: function (node, mode) {
44
+ if (!node)
45
+ throw new Error('A Cocos node is required');
46
+ if (mode === 'unmask')
47
+ _this.privateNodes.delete(node);
48
+ else if (mode === 'mask' || mode === 'hide')
49
+ _this.privateNodes.set(node, mode);
50
+ else
51
+ throw new Error('Unknown Replay privacy mode');
52
+ },
53
+ };
54
+ var transport = {
55
+ platform: 'web',
56
+ invoke: function (method, payload) { return _this.requireRuntime().invoke(method, payload); },
57
+ };
58
+ this.mobile = new modules_js_1.FTMobileAgent(transport);
59
+ this.rum = new modules_js_1.FTRUM(transport);
60
+ this.logger = new modules_js_1.FTLogger(transport);
61
+ this.trace = new modules_js_1.FTTrace(transport);
62
+ }
63
+ Object.defineProperty(FTCocosWebSDK.prototype, "lifecycleMode", {
64
+ get: function () {
65
+ return this.state === 'idle' ? 'idle' : this.state === 'standalone' ? 'standalone' : 'hybrid';
66
+ },
67
+ enumerable: false,
68
+ configurable: true
69
+ });
70
+ Object.defineProperty(FTCocosWebSDK.prototype, "isCocosEntered", {
71
+ get: function () { return this.state === 'standalone' || this.state === 'entered'; },
72
+ enumerable: false,
73
+ configurable: true
74
+ });
75
+ /** Starts standalone Cocos tracking, reusing pre-engine configuration when installed. */
76
+ FTCocosWebSDK.prototype.start = function (config) {
77
+ if (this.state !== 'idle')
78
+ throw new Error('Web SDK already started or attached');
79
+ if (config && 'replay' in config)
80
+ throw new Error('Configure Web Replay at web.replay before engine boot');
81
+ var runtime = this.target.__FT_COCOS_WEB__;
82
+ if (runtime) {
83
+ if (config)
84
+ assertBootstrapConfiguration(config, runtime.config);
85
+ this.attach({ autoTrack: config === null || config === void 0 ? void 0 : config.autoTrack });
86
+ }
87
+ else {
88
+ if (!config || !('web' in config))
89
+ throw new Error('Configure web explicitly or install the pre-engine Web bootstrap');
90
+ runtime = new runtime_js_1.FTWebRuntime(config, this.target);
91
+ this.target.__FT_COCOS_WEB__ = runtime;
92
+ this.bind(runtime, config.autoTrack || {});
93
+ }
94
+ this.state = 'standalone';
95
+ try {
96
+ this.startPage();
97
+ }
98
+ catch (error) {
99
+ try {
100
+ this.detach();
101
+ }
102
+ catch ( /* Preserve the startup error. */_a) { /* Preserve the startup error. */ }
103
+ throw error;
104
+ }
105
+ };
106
+ /** Attaches to bootstrapWeb(), without initializing Browser collectors a second time. */
107
+ FTCocosWebSDK.prototype.attach = function (config) {
108
+ var _a;
109
+ if (config === void 0) { config = {}; }
110
+ if (this.state === 'standalone')
111
+ throw new Error('start() and attach() are mutually exclusive');
112
+ if (this.state !== 'idle')
113
+ return;
114
+ if ('replay' in config)
115
+ throw new Error('Configure Web Replay at web.replay in the page bootstrap');
116
+ var runtime = this.target.__FT_COCOS_WEB__;
117
+ if (!runtime || runtime.protocol !== 1)
118
+ throw new Error('Run the Cocos Web bootstrap before attach()');
119
+ if (config.applicationId && config.applicationId !== runtime.config.web.applicationId)
120
+ throw new Error('Web applicationId does not match page bootstrap');
121
+ var tracking = __assign(__assign({}, runtime.config.autoTrack), config.autoTrack);
122
+ for (var _i = 0, _b = ['network', 'errors']; _i < _b.length; _i++) {
123
+ var key = _b[_i];
124
+ if (!!tracking[key] !== !!((_a = runtime.config.autoTrack) === null || _a === void 0 ? void 0 : _a[key]))
125
+ throw new Error("Configure autoTrack.".concat(key, " at page bootstrap"));
126
+ }
127
+ this.bind(runtime, tracking);
128
+ this.state = 'attached';
129
+ };
130
+ FTCocosWebSDK.prototype.enterCocos = function (options) {
131
+ var _a;
132
+ if (options === void 0) { options = {}; }
133
+ if (this.state === 'idle')
134
+ throw new Error('Call attach() before enterCocos()');
135
+ if (this.state === 'standalone')
136
+ throw new Error('enterCocos() requires attach()');
137
+ if (this.state === 'entered')
138
+ return;
139
+ if (!this.tracking.scenes && !((_a = options.viewName) === null || _a === void 0 ? void 0 : _a.trim()))
140
+ throw new Error('enterCocos.viewName is required when scene tracking is disabled');
141
+ try {
142
+ this.startPage(options.viewName);
143
+ this.state = 'entered';
144
+ }
145
+ catch (error) {
146
+ try {
147
+ this.stopPage();
148
+ }
149
+ catch ( /* Preserve the entry error. */_b) { /* Preserve the entry error. */ }
150
+ throw error;
151
+ }
152
+ };
153
+ /** Transitions to web.outsideViewName (CocosInactive by default). Browser session/network collection continues. */
154
+ FTCocosWebSDK.prototype.leaveCocos = function () {
155
+ if (this.state === 'standalone')
156
+ throw new Error('Use detach() to stop standalone Cocos instrumentation on Web');
157
+ if (this.state !== 'entered')
158
+ return;
159
+ try {
160
+ this.stopPage();
161
+ }
162
+ finally {
163
+ this.state = 'attached';
164
+ }
165
+ };
166
+ /** Releases Cocos hooks and Replay. Browser page collectors remain initialized until navigation/unload. */
167
+ FTCocosWebSDK.prototype.detach = function () {
168
+ if (this.state === 'idle')
169
+ return;
170
+ try {
171
+ this.stopPage();
172
+ }
173
+ finally {
174
+ this.runtime.release(this);
175
+ this.runtime = undefined;
176
+ this.state = 'idle';
177
+ this.privateNodes.clear();
178
+ }
179
+ };
180
+ /** Stops this Cocos instance while retaining the page runtime. */
181
+ FTCocosWebSDK.prototype.stop = function () { this.detach(); };
182
+ FTCocosWebSDK.prototype.shutdown = function () {
183
+ throw new Error('Browser SDK has no public shutdown API. Use detach() to release Cocos hooks; page collectors continue until unload.');
184
+ };
185
+ FTCocosWebSDK.prototype.setReplayCamera = function (_camera) {
186
+ throw new Error('Browser Replay captures the configured canvas, not a Cocos camera');
187
+ };
188
+ FTCocosWebSDK.prototype.bind = function (runtime, tracking) {
189
+ var _this = this;
190
+ if ((tracking.scenes || tracking.actions || tracking.errors || tracking.network) && !runtime.config.rum)
191
+ throw new Error('Cocos RUM tracking requires rum configuration');
192
+ if (tracking.console && !runtime.config.logger)
193
+ throw new Error('Console tracking requires logger');
194
+ runtime.claim(this);
195
+ this.runtime = runtime;
196
+ this.tracking = tracking;
197
+ runtime.setPrivacyCheck(this, function () { return _this.privateNodes.size === 0 && _this.canvasIsPublic(); });
198
+ };
199
+ FTCocosWebSDK.prototype.startPage = function (viewName) {
200
+ var _this = this;
201
+ var view = function (name) { _this.rum.startView(name); _this.activeView = true; };
202
+ if (viewName)
203
+ view(viewName);
204
+ if (this.tracking.scenes)
205
+ this.stops.push(this.hooks.onSceneChanged(view, !viewName));
206
+ if (this.tracking.actions)
207
+ this.stops.push(this.hooks.onAction(function (name, attributes) { return _this.rum.addAction(name, 'click', attributes); }));
208
+ if (this.tracking.console)
209
+ this.trackConsole();
210
+ if (this.runtime.config.web.replay)
211
+ this.runtime.startReplay();
212
+ };
213
+ FTCocosWebSDK.prototype.stopPage = function () {
214
+ var _this = this;
215
+ var failure;
216
+ var clean = function (fn) { try {
217
+ fn();
218
+ }
219
+ catch (error) {
220
+ if (!failure)
221
+ failure = error;
222
+ } };
223
+ clean(function () { var _a; return (_a = _this.runtime) === null || _a === void 0 ? void 0 : _a.stopReplay(); });
224
+ this.stops.splice(0).reverse().forEach(clean);
225
+ if (this.activeView) {
226
+ clean(function () { return _this.rum.stopView(); });
227
+ this.activeView = false;
228
+ }
229
+ if (failure)
230
+ throw failure;
231
+ };
232
+ FTCocosWebSDK.prototype.requireRuntime = function () {
233
+ if (!this.runtime)
234
+ throw new Error('Start or attach the Cocos Web SDK first');
235
+ return this.runtime;
236
+ };
237
+ FTCocosWebSDK.prototype.trackConsole = function () {
238
+ var _this = this;
239
+ ['log', 'info', 'warn', 'error'].forEach(function (method) {
240
+ var original = _this.consoleObject[method];
241
+ var wrapped = function () {
242
+ var values = [];
243
+ for (var _i = 0; _i < arguments.length; _i++) {
244
+ values[_i] = arguments[_i];
245
+ }
246
+ original.apply(_this.consoleObject, values);
247
+ _this.logger.log(values.map(function (value) {
248
+ if (typeof value === 'string')
249
+ return value;
250
+ try {
251
+ return JSON.stringify(value);
252
+ }
253
+ catch (_a) {
254
+ return String(value);
255
+ }
256
+ }).join(' '), method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info');
257
+ };
258
+ _this.consoleObject[method] = wrapped;
259
+ _this.stops.push(function () { if (_this.consoleObject[method] === wrapped)
260
+ _this.consoleObject[method] = original; });
261
+ });
262
+ };
263
+ return FTCocosWebSDK;
264
+ }());
265
+ exports.FTCocosWebSDK = FTCocosWebSDK;
266
+ /** Native-only options may coexist, but settings used by Browser cannot change after bootstrap. */
267
+ function assertBootstrapConfiguration(config, installed) {
268
+ var shared = {
269
+ sdk: ['serviceName', 'env', 'globalContext'],
270
+ rum: ['sessionSamplingRate', 'sampleRate', 'sessionOnErrorSamplingRate', 'sessionOnErrorSampleRate', 'globalContext'],
271
+ logger: ['logSamplingRate', 'sampleRate', 'enableCustomLog', 'logLevelFilters', 'globalContext'],
272
+ trace: ['traceType', 'traceSamplingRate', 'sampleRate'],
273
+ web: Object.keys(('web' in config && config.web) || {}),
274
+ };
275
+ Object.keys(shared).forEach(function (group) {
276
+ var requested = config[group];
277
+ if (requested === undefined)
278
+ return;
279
+ var actual = installed[group];
280
+ if (actual === undefined)
281
+ throw new Error("Configure ".concat(group, " in the pre-engine Web bootstrap"));
282
+ shared[group].forEach(function (key) {
283
+ if (requested[key] !== undefined && stableValue(requested[key]) !== stableValue(actual[key])) {
284
+ throw new Error("Configure ".concat(group, ".").concat(key, " in the pre-engine Web bootstrap; collectors are already initialized"));
285
+ }
286
+ });
287
+ });
288
+ }
289
+ function stableValue(value) {
290
+ return JSON.stringify(value, function (_key, item) { return item && typeof item === 'object' && !Array.isArray(item)
291
+ ? Object.keys(item).sort().reduce(function (result, key) { result[key] = item[key]; return result; }, {}) : item; });
292
+ }
293
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/web/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { FTLogger, FTMobileAgent, FTRUM, FTTrace } from '../core/modules.js';\nimport type { FTEngineTrackingHooks } from '../core/auto-tracking.js';\nimport type { FTNativeTransport } from '../core/transport.js';\nimport type { FTAutoTrackingConfig, FTCocosConfig, FTCocosEnterOptions, FTValue } from '../core/types.js';\nimport { FTWebRuntime } from './runtime.js';\nimport type { FTCocosWebAttachConfig, FTCocosWebConfig, FTWebPageRuntime, FTWebWindow } from './types.js';\n\n/** Web facade. Browser owns page-wide collectors; detach only removes Cocos instrumentation. */\nexport class FTCocosWebSDK {\n readonly platform = 'web' as const;\n readonly capabilities = {\n timedActions: false, manualResourceTiming: false, manualLongTasks: false,\n manualTraceHeaders: false, shutdown: false, nodeReplayMasks: false,\n } as const;\n readonly mobile: FTMobileAgent;\n readonly rum: FTRUM;\n readonly logger: FTLogger;\n readonly trace: FTTrace;\n private runtime: FTWebPageRuntime | undefined;\n private tracking: FTAutoTrackingConfig = {};\n private state: 'idle' | 'attached' | 'entered' | 'standalone' = 'idle';\n private stops: Array<() => void> = [];\n private activeView = false;\n private readonly privateNodes = new Map<unknown, string>();\n get lifecycleMode(): 'idle' | 'standalone' | 'hybrid' {\n return this.state === 'idle' ? 'idle' : this.state === 'standalone' ? 'standalone' : 'hybrid';\n }\n get isCocosEntered(): boolean { return this.state === 'standalone' || this.state === 'entered'; }\n readonly replay = {\n /** Recording settings belong to the pre-engine Web bootstrap. */\n start: (): void => { this.requireRuntime().startReplay(); },\n stop: (): void => { this.requireRuntime().stopReplay(); },\n isRecording: (): boolean => this.runtime?.isRecording() || false,\n /** Any protected node blocks the entire Cocos canvas; Browser Replay cannot render node masks. */\n setPrivacy: (node: unknown, mode: 'mask' | 'hide' | 'unmask'): void => {\n if (!node) throw new Error('A Cocos node is required');\n if (mode === 'unmask') this.privateNodes.delete(node);\n else if (mode === 'mask' || mode === 'hide') this.privateNodes.set(node, mode);\n else throw new Error('Unknown Replay privacy mode');\n },\n };\n\n constructor(\n private readonly hooks: FTEngineTrackingHooks,\n private readonly canvasIsPublic: () => boolean,\n private readonly target: FTWebWindow = window as FTWebWindow,\n private readonly consoleObject: Console = console,\n ) {\n const transport: FTNativeTransport = {\n platform: 'web',\n invoke: <T = FTValue>(method: string, payload?: unknown): T | undefined => this.requireRuntime().invoke<T>(method, payload),\n };\n this.mobile = new FTMobileAgent(transport);\n this.rum = new FTRUM(transport);\n this.logger = new FTLogger(transport);\n this.trace = new FTTrace(transport);\n }\n\n /** Starts standalone Cocos tracking, reusing pre-engine configuration when installed. */\n start(config?: FTCocosWebConfig | FTCocosConfig): void {\n if (this.state !== 'idle') throw new Error('Web SDK already started or attached');\n if (config && 'replay' in config) throw new Error('Configure Web Replay at web.replay before engine boot');\n let runtime = this.target.__FT_COCOS_WEB__;\n if (runtime) {\n if (config) assertBootstrapConfiguration(config, runtime.config);\n this.attach({ autoTrack: config?.autoTrack });\n } else {\n if (!config || !('web' in config)) throw new Error('Configure web explicitly or install the pre-engine Web bootstrap');\n runtime = new FTWebRuntime(config, this.target);\n this.target.__FT_COCOS_WEB__ = runtime;\n this.bind(runtime, config.autoTrack || {});\n }\n this.state = 'standalone';\n try { this.startPage(); } catch (error) {\n try { this.detach(); } catch { /* Preserve the startup error. */ }\n throw error;\n }\n }\n\n /** Attaches to bootstrapWeb(), without initializing Browser collectors a second time. */\n attach(config: FTCocosWebAttachConfig = {}): void {\n if (this.state === 'standalone') throw new Error('start() and attach() are mutually exclusive');\n if (this.state !== 'idle') return;\n if ('replay' in config) throw new Error('Configure Web Replay at web.replay in the page bootstrap');\n const runtime = this.target.__FT_COCOS_WEB__;\n if (!runtime || runtime.protocol !== 1) throw new Error('Run the Cocos Web bootstrap before attach()');\n if (config.applicationId && config.applicationId !== runtime.config.web.applicationId) throw new Error('Web applicationId does not match page bootstrap');\n const tracking = { ...runtime.config.autoTrack, ...config.autoTrack };\n for (const key of ['network', 'errors'] as const) {\n if (!!tracking[key] !== !!runtime.config.autoTrack?.[key]) throw new Error(`Configure autoTrack.${key} at page bootstrap`);\n }\n this.bind(runtime, tracking);\n this.state = 'attached';\n }\n\n enterCocos(options: FTCocosEnterOptions = {}): void {\n if (this.state === 'idle') throw new Error('Call attach() before enterCocos()');\n if (this.state === 'standalone') throw new Error('enterCocos() requires attach()');\n if (this.state === 'entered') return;\n if (!this.tracking.scenes && !options.viewName?.trim()) throw new Error('enterCocos.viewName is required when scene tracking is disabled');\n try { this.startPage(options.viewName); this.state = 'entered'; }\n catch (error) {\n try { this.stopPage(); } catch { /* Preserve the entry error. */ }\n throw error;\n }\n }\n /** Transitions to web.outsideViewName (CocosInactive by default). Browser session/network collection continues. */\n leaveCocos(): void {\n if (this.state === 'standalone') throw new Error('Use detach() to stop standalone Cocos instrumentation on Web');\n if (this.state !== 'entered') return;\n try { this.stopPage(); } finally { this.state = 'attached'; }\n }\n /** Releases Cocos hooks and Replay. Browser page collectors remain initialized until navigation/unload. */\n detach(): void {\n if (this.state === 'idle') return;\n try { this.stopPage(); }\n finally {\n this.runtime!.release(this);\n this.runtime = undefined; this.state = 'idle'; this.privateNodes.clear();\n }\n }\n /** Stops this Cocos instance while retaining the page runtime. */\n stop(): void { this.detach(); }\n shutdown(): never {\n throw new Error('Browser SDK has no public shutdown API. Use detach() to release Cocos hooks; page collectors continue until unload.');\n }\n setReplayCamera(_camera: unknown): never {\n throw new Error('Browser Replay captures the configured canvas, not a Cocos camera');\n }\n\n private bind(runtime: FTWebPageRuntime, tracking: FTAutoTrackingConfig): void {\n if ((tracking.scenes || tracking.actions || tracking.errors || tracking.network) && !runtime.config.rum) throw new Error('Cocos RUM tracking requires rum configuration');\n if (tracking.console && !runtime.config.logger) throw new Error('Console tracking requires logger');\n runtime.claim(this);\n this.runtime = runtime; this.tracking = tracking;\n runtime.setPrivacyCheck(this, () => this.privateNodes.size === 0 && this.canvasIsPublic());\n }\n private startPage(viewName?: string): void {\n const view = (name: string): void => { this.rum.startView(name); this.activeView = true; };\n if (viewName) view(viewName);\n if (this.tracking.scenes) this.stops.push(this.hooks.onSceneChanged(view, !viewName));\n if (this.tracking.actions) this.stops.push(this.hooks.onAction((name, attributes) => this.rum.addAction(name, 'click', attributes)));\n if (this.tracking.console) this.trackConsole();\n if (this.runtime!.config.web.replay) this.runtime!.startReplay();\n }\n private stopPage(): void {\n let failure: unknown;\n const clean = (fn: () => void): void => { try { fn(); } catch (error) { if (!failure) failure = error; } };\n clean(() => this.runtime?.stopReplay());\n this.stops.splice(0).reverse().forEach(clean);\n if (this.activeView) { clean(() => this.rum.stopView()); this.activeView = false; }\n if (failure) throw failure;\n }\n private requireRuntime(): FTWebPageRuntime {\n if (!this.runtime) throw new Error('Start or attach the Cocos Web SDK first');\n return this.runtime;\n }\n private trackConsole(): void {\n (['log', 'info', 'warn', 'error'] as const).forEach(method => {\n const original = this.consoleObject[method];\n const wrapped = (...values: unknown[]): void => {\n original.apply(this.consoleObject, values);\n this.logger.log(values.map(value => {\n if (typeof value === 'string') return value;\n try { return JSON.stringify(value); } catch { return String(value); }\n }).join(' '), method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info');\n };\n this.consoleObject[method] = wrapped;\n this.stops.push(() => { if (this.consoleObject[method] === wrapped) this.consoleObject[method] = original; });\n });\n }\n}\n\n/** Native-only options may coexist, but settings used by Browser cannot change after bootstrap. */\nfunction assertBootstrapConfiguration(config: FTCocosConfig | FTCocosWebConfig, installed: FTCocosWebConfig): void {\n const shared: Record<string, string[]> = {\n sdk: ['serviceName', 'env', 'globalContext'],\n rum: ['sessionSamplingRate', 'sampleRate', 'sessionOnErrorSamplingRate', 'sessionOnErrorSampleRate', 'globalContext'],\n logger: ['logSamplingRate', 'sampleRate', 'enableCustomLog', 'logLevelFilters', 'globalContext'],\n trace: ['traceType', 'traceSamplingRate', 'sampleRate'],\n web: Object.keys(('web' in config && config.web) || {}),\n };\n Object.keys(shared).forEach(group => {\n const requested = (config as any)[group];\n if (requested === undefined) return;\n const actual = (installed as any)[group];\n if (actual === undefined) throw new Error(`Configure ${group} in the pre-engine Web bootstrap`);\n shared[group]!.forEach(key => {\n if (requested[key] !== undefined && stableValue(requested[key]) !== stableValue(actual[key])) {\n throw new Error(`Configure ${group}.${key} in the pre-engine Web bootstrap; collectors are already initialized`);\n }\n });\n });\n}\nfunction stableValue(value: unknown): string | undefined {\n return JSON.stringify(value, (_key, item) => item && typeof item === 'object' && !Array.isArray(item)\n ? Object.keys(item).sort().reduce((result: Record<string, unknown>, key) => { result[key] = item[key]; return result; }, {}) : item);\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { FTCocosWebSDK } from './client.js';
2
+ export declare const guanceSdk: FTCocosWebSDK;
3
+ export type * from './types.js';
4
+ export * from '../core/index.js';
5
+ //# sourceMappingURL=creator2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creator2.d.ts","sourceRoot":"","sources":["../../../../../src/web/creator2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAO5C,eAAO,MAAM,SAAS,EAC+B,aAAa,CAAC;AACnE,mBAAmB,YAAY,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.guanceSdk = void 0;
18
+ var auto_js_1 = require("../creator2/auto.js");
19
+ var client_js_1 = require("./client.js");
20
+ var platform_runtime_js_1 = require("../core/platform-runtime.js");
21
+ var privacy_js_1 = require("./privacy.js");
22
+ /** Web-only entry; no native bridge or native Replay dependencies. */
23
+ var hooks = new auto_js_1.FTCreator2TrackingHooks();
24
+ var canvasIsPublic = function () { return (0, privacy_js_1.isScenePublic)(cc.director.getScene(), false); };
25
+ exports.guanceSdk = (0, platform_runtime_js_1.platformImplementation)({ engine: 'creator2', platform: 'web', hooks: hooks, canvasIsPublic: canvasIsPublic }, undefined, function () { return new client_js_1.FTCocosWebSDK(hooks, canvasIsPublic); });
26
+ __exportStar(require("../core/index.js"), exports);
27
+ //# sourceMappingURL=creator2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creator2.js","sourceRoot":"","sources":["../../../../../src/web/creator2.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA8D;AAC9D,yCAA4C;AAC5C,mEAAqE;AACrE,2CAA6C;AAE7C,sEAAsE;AACtE,IAAM,KAAK,GAAG,IAAI,iCAAuB,EAAE,CAAC;AAC5C,IAAM,cAAc,GAAG,cAAM,OAAA,IAAA,0BAAa,EAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,EAA5C,CAA4C,CAAC;AAC7D,QAAA,SAAS,GAAG,IAAA,4CAAsB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,OAAA,EAAE,cAAc,gBAAA,EAAE,EAAE,SAAS,EACvH,cAAM,OAAA,IAAI,yBAAa,CAAC,KAAK,EAAE,cAAc,CAAC,EAAxC,CAAwC,CAAkB,CAAC;AAEnE,mDAAiC","sourcesContent":["import { FTCreator2TrackingHooks } from '../creator2/auto.js';\nimport { FTCocosWebSDK } from './client.js';\nimport { platformImplementation } from '../core/platform-runtime.js';\nimport { isScenePublic } from './privacy.js';\n\n/** Web-only entry; no native bridge or native Replay dependencies. */\nconst hooks = new FTCreator2TrackingHooks();\nconst canvasIsPublic = () => isScenePublic(cc.director.getScene(), false);\nexport const guanceSdk = platformImplementation({ engine: 'creator2', platform: 'web', hooks, canvasIsPublic }, undefined,\n () => new FTCocosWebSDK(hooks, canvasIsPublic)) as FTCocosWebSDK;\nexport type * from './types.js';\nexport * from '../core/index.js';\n"]}
@@ -0,0 +1,3 @@
1
+ /** Conservative Web policy: a protected component or editable field blocks the whole canvas. */
2
+ export declare function isScenePublic(scene: any, sceneHasComponents?: boolean): boolean;
3
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../../../../src/web/privacy.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,UAAO,GAAG,OAAO,CAgB5E"}