@cloudcare/cocos-sdk 0.1.1-alpha.1 → 0.1.1-alpha.3

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 (191) 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.d.ts +3 -1
  6. package/dist/creator2/core/auto-tracking.d.ts.map +1 -1
  7. package/dist/creator2/core/auto-tracking.js +60 -7
  8. package/dist/creator2/core/auto-tracking.js.map +1 -1
  9. package/dist/creator2/core/client.d.ts +1 -0
  10. package/dist/creator2/core/client.d.ts.map +1 -1
  11. package/dist/creator2/core/client.js +14 -3
  12. package/dist/creator2/core/client.js.map +1 -1
  13. package/dist/creator2/core/index.js.map +1 -1
  14. package/dist/creator2/core/modules.d.ts.map +1 -1
  15. package/dist/creator2/core/modules.js +2 -2
  16. package/dist/creator2/core/modules.js.map +1 -1
  17. package/dist/creator2/core/observation.d.ts +25 -0
  18. package/dist/creator2/core/observation.d.ts.map +1 -0
  19. package/dist/creator2/core/observation.js +93 -0
  20. package/dist/creator2/core/observation.js.map +1 -0
  21. package/dist/creator2/core/platform-client.d.ts +46 -0
  22. package/dist/creator2/core/platform-client.d.ts.map +1 -0
  23. package/dist/creator2/core/platform-client.js +195 -0
  24. package/dist/creator2/core/platform-client.js.map +1 -0
  25. package/dist/creator2/core/platform-options.d.ts +30 -0
  26. package/dist/creator2/core/platform-options.d.ts.map +1 -0
  27. package/dist/creator2/core/platform-options.js +3 -0
  28. package/dist/creator2/core/platform-options.js.map +1 -0
  29. package/dist/creator2/core/platform-runtime.d.ts +60 -0
  30. package/dist/creator2/core/platform-runtime.d.ts.map +1 -0
  31. package/dist/creator2/core/platform-runtime.js +36 -0
  32. package/dist/creator2/core/platform-runtime.js.map +1 -0
  33. package/dist/creator2/core/plugin-api.d.ts +1 -1
  34. package/dist/creator2/core/plugin-api.d.ts.map +1 -1
  35. package/dist/creator2/core/plugin-api.js.map +1 -1
  36. package/dist/creator2/core/transport.d.ts +1 -1
  37. package/dist/creator2/core/transport.d.ts.map +1 -1
  38. package/dist/creator2/core/transport.js.map +1 -1
  39. package/dist/creator2/core/types.d.ts +9 -0
  40. package/dist/creator2/core/types.d.ts.map +1 -1
  41. package/dist/creator2/core/types.js.map +1 -1
  42. package/dist/creator2/core/validation.d.ts +1 -0
  43. package/dist/creator2/core/validation.d.ts.map +1 -1
  44. package/dist/creator2/core/validation.js +13 -0
  45. package/dist/creator2/core/validation.js.map +1 -1
  46. package/dist/creator2/core/version.d.ts +1 -3
  47. package/dist/creator2/core/version.d.ts.map +1 -1
  48. package/dist/creator2/core/version.js +2 -4
  49. package/dist/creator2/core/version.js.map +1 -1
  50. package/dist/creator2/creator2/auto.js.map +1 -1
  51. package/dist/creator2/creator2/index.d.ts +6 -3
  52. package/dist/creator2/creator2/index.d.ts.map +1 -1
  53. package/dist/creator2/creator2/index.js +12 -8
  54. package/dist/creator2/creator2/index.js.map +1 -1
  55. package/dist/creator2/creator2/transport.js.map +1 -1
  56. package/dist/creator2/native/bootstrap.d.ts +2 -0
  57. package/dist/creator2/native/bootstrap.d.ts.map +1 -0
  58. package/dist/creator2/native/bootstrap.js +35 -0
  59. package/dist/creator2/native/bootstrap.js.map +1 -0
  60. package/dist/creator2/native/error-bootstrap.d.ts +2 -0
  61. package/dist/creator2/native/error-bootstrap.d.ts.map +1 -0
  62. package/dist/creator2/native/error-bootstrap.js +7 -0
  63. package/dist/creator2/native/error-bootstrap.js.map +1 -0
  64. package/dist/creator2/native/jsb-errors.d.ts +21 -0
  65. package/dist/creator2/native/jsb-errors.d.ts.map +1 -0
  66. package/dist/creator2/native/jsb-errors.js +91 -0
  67. package/dist/creator2/native/jsb-errors.js.map +1 -0
  68. package/dist/creator2/web/bootstrap.d.ts +3 -0
  69. package/dist/creator2/web/bootstrap.d.ts.map +1 -0
  70. package/dist/creator2/web/bootstrap.js +15 -0
  71. package/dist/creator2/web/bootstrap.js.map +1 -0
  72. package/dist/creator2/web/client.d.ts +60 -0
  73. package/dist/creator2/web/client.d.ts.map +1 -0
  74. package/dist/creator2/web/client.js +293 -0
  75. package/dist/creator2/web/client.js.map +1 -0
  76. package/dist/creator2/web/creator2.d.ts +5 -0
  77. package/dist/creator2/web/creator2.d.ts.map +1 -0
  78. package/dist/creator2/web/creator2.js +27 -0
  79. package/dist/creator2/web/creator2.js.map +1 -0
  80. package/dist/creator2/web/privacy.d.ts +3 -0
  81. package/dist/creator2/web/privacy.d.ts.map +1 -0
  82. package/dist/creator2/web/privacy.js +39 -0
  83. package/dist/creator2/web/privacy.js.map +1 -0
  84. package/dist/creator2/web/runtime.d.ts +23 -0
  85. package/dist/creator2/web/runtime.d.ts.map +1 -0
  86. package/dist/creator2/web/runtime.js +264 -0
  87. package/dist/creator2/web/runtime.js.map +1 -0
  88. package/dist/creator2/web/types.d.ts +91 -0
  89. package/dist/creator2/web/types.d.ts.map +1 -0
  90. package/dist/creator2/web/types.js +3 -0
  91. package/dist/creator2/web/types.js.map +1 -0
  92. package/dist/creator3/core/auto-tracking.d.ts +3 -1
  93. package/dist/creator3/core/auto-tracking.d.ts.map +1 -1
  94. package/dist/creator3/core/auto-tracking.js +60 -7
  95. package/dist/creator3/core/auto-tracking.js.map +1 -1
  96. package/dist/creator3/core/client.d.ts +1 -0
  97. package/dist/creator3/core/client.d.ts.map +1 -1
  98. package/dist/creator3/core/client.js +6 -3
  99. package/dist/creator3/core/client.js.map +1 -1
  100. package/dist/creator3/core/modules.d.ts.map +1 -1
  101. package/dist/creator3/core/modules.js +4 -9
  102. package/dist/creator3/core/modules.js.map +1 -1
  103. package/dist/creator3/core/observation.d.ts +25 -0
  104. package/dist/creator3/core/observation.d.ts.map +1 -0
  105. package/dist/creator3/core/observation.js +84 -0
  106. package/dist/creator3/core/observation.js.map +1 -0
  107. package/dist/creator3/core/platform-client.d.ts +46 -0
  108. package/dist/creator3/core/platform-client.d.ts.map +1 -0
  109. package/dist/creator3/core/platform-client.js +135 -0
  110. package/dist/creator3/core/platform-client.js.map +1 -0
  111. package/dist/creator3/core/platform-options.d.ts +30 -0
  112. package/dist/creator3/core/platform-options.d.ts.map +1 -0
  113. package/dist/creator3/core/platform-options.js +2 -0
  114. package/dist/creator3/core/platform-options.js.map +1 -0
  115. package/dist/creator3/core/platform-runtime.d.ts +60 -0
  116. package/dist/creator3/core/platform-runtime.d.ts.map +1 -0
  117. package/dist/creator3/core/platform-runtime.js +29 -0
  118. package/dist/creator3/core/platform-runtime.js.map +1 -0
  119. package/dist/creator3/core/plugin-api.d.ts +1 -1
  120. package/dist/creator3/core/plugin-api.d.ts.map +1 -1
  121. package/dist/creator3/core/transport.d.ts +1 -1
  122. package/dist/creator3/core/transport.d.ts.map +1 -1
  123. package/dist/creator3/core/types.d.ts +9 -0
  124. package/dist/creator3/core/types.d.ts.map +1 -1
  125. package/dist/creator3/core/validation.d.ts +1 -0
  126. package/dist/creator3/core/validation.d.ts.map +1 -1
  127. package/dist/creator3/core/validation.js +11 -0
  128. package/dist/creator3/core/validation.js.map +1 -1
  129. package/dist/creator3/core/version.d.ts +1 -3
  130. package/dist/creator3/core/version.d.ts.map +1 -1
  131. package/dist/creator3/core/version.js +1 -3
  132. package/dist/creator3/core/version.js.map +1 -1
  133. package/dist/creator3/creator3/index.d.ts +6 -3
  134. package/dist/creator3/creator3/index.d.ts.map +1 -1
  135. package/dist/creator3/creator3/index.js +13 -8
  136. package/dist/creator3/creator3/index.js.map +1 -1
  137. package/dist/creator3/native/bootstrap.d.ts +2 -0
  138. package/dist/creator3/native/bootstrap.d.ts.map +1 -0
  139. package/dist/creator3/native/bootstrap.js +32 -0
  140. package/dist/creator3/native/bootstrap.js.map +1 -0
  141. package/dist/creator3/native/error-bootstrap.d.ts +2 -0
  142. package/dist/creator3/native/error-bootstrap.d.ts.map +1 -0
  143. package/dist/creator3/native/error-bootstrap.js +5 -0
  144. package/dist/creator3/native/error-bootstrap.js.map +1 -0
  145. package/dist/creator3/native/jsb-errors.d.ts +21 -0
  146. package/dist/creator3/native/jsb-errors.d.ts.map +1 -0
  147. package/dist/creator3/native/jsb-errors.js +82 -0
  148. package/dist/creator3/native/jsb-errors.js.map +1 -0
  149. package/dist/creator3/web/bootstrap.d.ts +3 -0
  150. package/dist/creator3/web/bootstrap.d.ts.map +1 -0
  151. package/dist/creator3/web/bootstrap.js +11 -0
  152. package/dist/creator3/web/bootstrap.js.map +1 -0
  153. package/dist/creator3/web/client.d.ts +60 -0
  154. package/dist/creator3/web/client.d.ts.map +1 -0
  155. package/dist/creator3/web/client.js +255 -0
  156. package/dist/creator3/web/client.js.map +1 -0
  157. package/dist/creator3/web/creator3.d.ts +5 -0
  158. package/dist/creator3/web/creator3.d.ts.map +1 -0
  159. package/dist/creator3/web/creator3.js +11 -0
  160. package/dist/creator3/web/creator3.js.map +1 -0
  161. package/dist/creator3/web/privacy.d.ts +3 -0
  162. package/dist/creator3/web/privacy.d.ts.map +1 -0
  163. package/dist/creator3/web/privacy.js +26 -0
  164. package/dist/creator3/web/privacy.js.map +1 -0
  165. package/dist/creator3/web/runtime.d.ts +23 -0
  166. package/dist/creator3/web/runtime.d.ts.map +1 -0
  167. package/dist/creator3/web/runtime.js +266 -0
  168. package/dist/creator3/web/runtime.js.map +1 -0
  169. package/dist/creator3/web/types.d.ts +91 -0
  170. package/dist/creator3/web/types.d.ts.map +1 -0
  171. package/dist/creator3/web/types.js +2 -0
  172. package/dist/creator3/web/types.js.map +1 -0
  173. package/extensions/creator2/install-native.cjs +19 -1
  174. package/extensions/creator2/install-web.cjs +69 -0
  175. package/extensions/creator2/main.js +19 -2
  176. package/extensions/creator2/project-configuration.cjs +135 -0
  177. package/extensions/creator3/dist/hooks.js +13 -0
  178. package/extensions/creator3/install-native.cjs +19 -1
  179. package/extensions/creator3/install-web.cjs +69 -0
  180. package/extensions/creator3/project-configuration.cjs +135 -0
  181. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridge.java +7 -10
  182. package/native/ios/FTCocosBridge.m +6 -4
  183. package/native/ios/FTCocosBridge.podspec +1 -1
  184. package/native/jsb-errors.js +266 -0
  185. package/package.json +19 -3
  186. package/runtime/native.js +1351 -0
  187. package/web/bootstrap/package.json +4 -0
  188. package/web/bootstrap.js +1053 -0
  189. package/web/bootstrap.js.map +7 -0
  190. package/web/creator2/package.json +4 -0
  191. package/web/creator3/package.json +4 -0
package/README.md CHANGED
@@ -7,16 +7,45 @@
7
7
 
8
8
  ## Introduction
9
9
 
10
- Guance Cloud Application Monitoring collects and analyzes RUM, Log, and Trace data from Cocos Creator applications. The SDK supports native Android and iOS builds for Cocos Creator 2.4 and 3.x.
10
+ Guance Cloud Application Monitoring collects and analyzes RUM, Log, and Trace data from Cocos Creator applications. The SDK supports native Android and iOS builds, plus Web Mobile and Web Desktop builds, for Cocos Creator 2.4 and 3.x.
11
11
 
12
12
  ## Supported Scope
13
13
 
14
- | Package entry | Supported Cocos Creator | Native targets |
14
+ | Package entry | Supported Cocos Creator | Supported targets |
15
15
  | --- | --- | --- |
16
- | `@cloudcare/cocos-sdk/creator2` | 2.4.5–2.4.15 | Android API 21+, iOS 15+ |
17
- | `@cloudcare/cocos-sdk/creator3` | 3.6.3–3.8.x | Android API 21+, iOS 15+ |
18
-
19
- Cocos Creator 3.0–3.6.2 is supported on a best-effort basis because the stable native build extension API starts at 3.6.3. Web, mini-game, and desktop targets are not currently supported.
16
+ | `@cloudcare/cocos-sdk/creator2` | 2.4.5–2.4.15 | Android API 21+, iOS 15+, Web Mobile / Web Desktop |
17
+ | `@cloudcare/cocos-sdk/creator3` | 3.6.3–3.8.x | Android API 21+, iOS 15+, Web Mobile / Web Desktop |
18
+
19
+ Cocos Creator 3.0–3.6.2 is supported on a best-effort basis because the stable native build extension API starts at 3.6.3. Mini-game and native desktop targets are not currently supported.
20
+
21
+ ## Web integration
22
+
23
+ Configure Web reporting separately in `cocos-sdk.config.json`; native Android/iOS
24
+ application IDs and reporting endpoints are not reused. See the
25
+ [unified configuration example](https://github.com/GuanceCloud/datakit-cocos/blob/dev/examples/unified/cocos-sdk.config.example.json).
26
+ Install Browser RUM `3.3.22` and/or Browser Logs `3.3.22` according to the enabled
27
+ collectors; Web Replay also requires Browser WebGL `3.3.8`. Then run
28
+ `npx guance-cocos install --web`, reopen Creator, and rebuild the Web project.
29
+
30
+ Use the same `/creator2` or `/creator3` base SDK entry and call `guanceSdk.start()`
31
+ to apply project settings. The build extension initializes Browser collectors
32
+ before the engine. Configure Replay through `replay.enabled`, shared sampling,
33
+ and `replay.web`; set `replay.native: false` for Web-only Replay to avoid requiring
34
+ the native Replay package. Native `withSessionReplay(...)` composition is not
35
+ supported on Web.
36
+
37
+ Web canvas recording requires explicit `canvasPrivacy: "allow"`. Protected nodes
38
+ and input fields block the whole canvas; native node-level masking is unavailable.
39
+ Web also does not support timed Actions, manual Resource timing, manual Long Tasks,
40
+ manual trace-header generation, or shutting down page-wide Browser collectors.
41
+
42
+ Without Web configuration, importing the base SDK does not start collection.
43
+ Calling initialization or instrumentation APIs without the Web runtime throws an
44
+ error. Native-only integrations must guard SDK calls and native Replay composition
45
+ with a platform check when building for Web.
46
+
47
+ After upgrading, rerun the installer and rebuild native projects as well,
48
+ including base-only integrations, to install the matching platform runtime.
20
49
 
21
50
  ## Sampling configuration
22
51
 
package/bin/cli.cjs CHANGED
@@ -36,12 +36,19 @@ if (manager !== undefined && !['spm', 'cocoapods'].includes(manager)) {
36
36
  }
37
37
  const configFile = path.join(projectRoot, 'cocos-sdk.config.json');
38
38
  const config = readJson(configFile) || {};
39
+ const projectConfiguration = require('./project-configuration.cjs');
39
40
  if (rawArguments.includes('--replay') && rawArguments.includes('--no-replay')) fail('Choose either --replay or --no-replay.');
41
+ if (rawArguments.includes('--web') && rawArguments.includes('--no-web')) fail('Choose either --web or --no-web.');
42
+ const webEnabled = rawArguments.includes('--web') ? true : rawArguments.includes('--no-web') ? false : config.web?.enabled === true;
40
43
  const replayEnabled = rawArguments.includes('--replay') ? true
41
44
  : rawArguments.includes('--no-replay') ? false : config.replay?.enabled === true;
45
+ const effectiveConfig = { ...config, web: { ...config.web, enabled: webEnabled }, replay: { ...config.replay, enabled: replayEnabled } };
46
+ const nativeReplayEnabled = projectConfiguration.nativeReplayEnabled(effectiveConfig);
47
+ const nativeConfiguration = projectConfiguration.resolveNativeConfiguration(effectiveConfig);
48
+ const webConfiguration = projectConfiguration.resolveWebConfiguration(effectiveConfig);
42
49
  let replayRoot;
43
50
  let replayDescriptor;
44
- if (replayEnabled) {
51
+ if (nativeReplayEnabled) {
45
52
  try {
46
53
  const projectRequire = createRequire(path.join(projectRoot, 'package.json'));
47
54
  replayRoot = path.dirname(projectRequire.resolve('@cloudcare/cocos-session-replay/package.json'));
@@ -58,10 +65,33 @@ if (replayEnabled) {
58
65
  const sources = [{ root: extensionSource }, { root: path.join(packageRoot, 'native'), prefix: 'native/' }];
59
66
  if (replayRoot) sources.push({ root: path.join(replayRoot, 'native'), prefix: 'replay-native/' });
60
67
  const generated = {
61
- 'sdk-integration.json': JSON.stringify({ schemaVersion: 1, version: metadata.version, replay: replayEnabled }, null, 2) + '\n',
68
+ 'sdk-integration.json': JSON.stringify({ schemaVersion: 1, version: metadata.version, replay: nativeReplayEnabled }, null, 2) + '\n',
62
69
  };
70
+ if (webEnabled) {
71
+ try { Object.assign(generated, require('./web-assets.cjs').webAssets(projectRoot, packageRoot, webConfiguration)); }
72
+ catch (error) { fail(error.message); }
73
+ }
63
74
  if (replayDescriptor) generated['replay-integration.json'] = JSON.stringify(replayDescriptor, null, 2) + '\n';
64
75
  syncManagedDirectory(destination, sources, generated);
76
+ // Install once with platform metadata; switching build targets never rewrites game imports.
77
+ const nativePluginFlags = { isPlugin: true, loadPluginInWeb: false, loadPluginInNative: true, loadPluginInEditor: true, ...(creatorMajor === 3 ? { loadPluginInMiniGame: false } : {}) };
78
+ const nativePluginMeta = creatorMajor === 2
79
+ ? { ver: '1.0.8', uuid: '22890dac-cd02-4da1-817a-f4eb4468a2c3', importer: 'javascript', ...nativePluginFlags, subMetas: {} }
80
+ : { ver: '4.0.24', uuid: '22890dac-cd02-4da1-817a-f4eb4468a2c3', importer: 'javascript', imported: true, files: [], subMetas: {}, userData: { ...nativePluginFlags, simulateGlobals: [] } };
81
+ const runtimeDirectory = path.join(projectRoot, 'assets', 'guance-cocos-sdk-runtime');
82
+ const nativeMetaFile = path.join(runtimeDirectory, 'native.js.meta');
83
+ // Creator upgrades metadata versions and adds importer fields. Preserve those edits and the asset UUID.
84
+ const existingMeta = readJson(nativeMetaFile);
85
+ const existingFlags = creatorMajor === 2 ? existingMeta : existingMeta?.userData;
86
+ if (existingMeta && Object.entries(nativePluginFlags).some(([key, value]) => existingFlags?.[key] !== value)) {
87
+ fail('The SDK native runtime must remain a plugin loaded only on native platforms and in the Editor. Restore its import settings before reinstalling.');
88
+ }
89
+ syncManagedDirectory(runtimeDirectory, [], {
90
+ 'native.js': fs.readFileSync(path.join(packageRoot, 'runtime', 'native.js'), 'utf8')
91
+ + (replayRoot ? fs.readFileSync(path.join(replayRoot, 'runtime', `creator${creatorMajor}.js`), 'utf8') : '')
92
+ + projectConfiguration.nativeConfigurationScript(nativeConfiguration),
93
+ });
94
+ if (!existingMeta) fs.writeFileSync(nativeMetaFile, JSON.stringify(nativePluginMeta, null, 2) + '\n');
65
95
  const componentDestination = path.join(projectRoot, 'assets', 'guance-cocos-sdk');
66
96
  if (replayRoot) syncManagedDirectory(componentDestination, [{ root: path.join(replayRoot, 'components', `creator${creatorMajor}`) }]);
67
97
  // Keep existing component scripts and .meta files when disabling Replay: scenes may reference them.
@@ -69,13 +99,15 @@ if (manager !== undefined) config.ios = { ...config.ios, dependencyManager: mana
69
99
  if (rawArguments.includes('--replay') || rawArguments.includes('--no-replay') || config.replay) {
70
100
  config.replay = { ...config.replay, enabled: replayEnabled };
71
101
  }
72
- if (manager !== undefined || rawArguments.includes('--replay') || rawArguments.includes('--no-replay')) {
102
+ if (rawArguments.includes('--web') || rawArguments.includes('--no-web')) config.web = { ...config.web, enabled: webEnabled };
103
+ if (manager !== undefined || ['--replay', '--no-replay', '--web', '--no-web'].some(flag => rawArguments.includes(flag))) {
73
104
  fs.writeFileSync(configFile, `${JSON.stringify(config, null, 2)}\n`);
74
105
  }
75
106
  process.stdout.write(
76
107
  `Installed ${metadata.name} for Cocos Creator ${creatorMajor} at ${destination} (Replay: ${replayEnabled ? 'enabled' : 'disabled'})\n`
77
- + (replayEnabled ? `Installed ReplayPrivacy at ${componentDestination}. Add it through Session Replay/ReplayPrivacy in the component menu.\n` : '')
78
- + 'Re-open Cocos Creator, enable the guance-cocos-sdk extension, and rebuild the native project.\n',
108
+ + (replayRoot ? `Installed ReplayPrivacy at ${componentDestination}. Add it through Session Replay/ReplayPrivacy in the component menu.\n` : '')
109
+ + (webEnabled ? 'Web: import @cloudcare/cocos-sdk/creator' + creatorMajor + ' and call start() to use project settings.\n' : '')
110
+ + 'Re-open Cocos Creator, enable the guance-cocos-sdk extension, and rebuild the project.\n',
79
111
  );
80
112
  if (fs.existsSync(legacyDestination)) {
81
113
  process.stderr.write(
@@ -146,11 +178,16 @@ function printHelp() {
146
178
  'Options:',
147
179
  ' --project <path> Cocos project root (defaults to the current directory)',
148
180
  ' --creator <2|3> Override automatic Cocos Creator version detection',
181
+ ' --web Install Browser bundles using cocos-sdk.config.json',
182
+ ' --no-web Disable Web bootstrap integration',
149
183
  ' --replay Include the separately installed Session Replay package',
150
184
  ' --no-replay Remove SDK-managed Replay native integration on rebuild',
151
185
  ' --ios-dependency-manager <spm|cocoapods> Save the iOS dependency manager in cocos-sdk.config.json',
152
186
  ' -h, --help Show this help',
153
187
  '',
188
+ 'Project settings: configuration supplies native/shared settings; web.configuration supplies Web connection settings.',
189
+ 'Replay settings: replay.enabled, shared sampling, replay.native and replay.web. Call the SDK start() method to use them.',
190
+ '',
154
191
  ].join('\n'));
155
192
  }
156
193
 
@@ -0,0 +1,135 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const NATIVE = ['captureFps', 'maxImageDimension', 'imagePolicy', 'touchPrivacy'];
6
+ const WEB = ['captureFps', 'maxImageDimension', 'quality', 'maxFrameBytes', 'canvasPrivacy', 'canvasId'];
7
+ const SAMPLING = ['sessionReplaySamplingRate', 'sessionReplayOnErrorSamplingRate'];
8
+ function object(value, name) {
9
+ if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${name} must be an object`);
10
+ }
11
+ function keys(value, allowed, name) {
12
+ object(value, name);
13
+ for (const key of Object.keys(value)) if (!allowed.includes(key)) throw new Error(`Unsupported ${name}.${key}`);
14
+ }
15
+ function number(value, min, max, name, integer = true) {
16
+ if (value !== undefined && (typeof value !== 'number' || !Number.isFinite(value) || value < min || value > max || integer && !Number.isInteger(value))) {
17
+ throw new Error(`${name} must be ${integer ? 'an integer' : 'a number'} between ${min} and ${max}`);
18
+ }
19
+ }
20
+ function validateReplay(replay) {
21
+ if (replay === undefined) return;
22
+ keys(replay, ['enabled', ...SAMPLING, 'native', 'web'], 'replay');
23
+ if (replay.enabled !== undefined && typeof replay.enabled !== 'boolean') throw new Error('replay.enabled must be boolean');
24
+ for (const field of SAMPLING) number(replay[field], 0, 100, `replay.${field}`, false);
25
+ for (const platform of ['native', 'web']) {
26
+ const options = replay[platform];
27
+ if (options === undefined || options === false) continue;
28
+ keys(options, platform === 'native' ? NATIVE : WEB, `replay.${platform}`);
29
+ number(options.captureFps, 1, 5, `replay.${platform}.captureFps`);
30
+ number(options.maxImageDimension, 1, 2048, `replay.${platform}.maxImageDimension`);
31
+ if (platform === 'native') {
32
+ if (options.touchPrivacy !== undefined && !['hide', 'show'].includes(options.touchPrivacy)) throw new Error('replay.native.touchPrivacy must be hide or show');
33
+ if (options.imagePolicy !== undefined) {
34
+ keys(options.imagePolicy, ['quality', 'maxFrameBytes'], 'replay.native.imagePolicy');
35
+ if (options.imagePolicy.quality !== undefined && !['low', 'medium', 'high'].includes(options.imagePolicy.quality)) throw new Error('replay.native.imagePolicy.quality must be low, medium, or high');
36
+ number(options.imagePolicy.maxFrameBytes, 1024, 1048576, 'replay.native.imagePolicy.maxFrameBytes');
37
+ }
38
+ } else {
39
+ if (options.canvasPrivacy !== undefined && !['block', 'allow'].includes(options.canvasPrivacy)) throw new Error('replay.web.canvasPrivacy must be block or allow');
40
+ if (options.canvasId !== undefined && (typeof options.canvasId !== 'string' || !options.canvasId.trim())) throw new Error('replay.web.canvasId must be a nonempty string');
41
+ if (options.quality !== undefined && !['low', 'medium', 'high'].includes(options.quality)) number(options.quality, 0, 1, 'replay.web.quality', false);
42
+ number(options.maxFrameBytes, 1024, 1048576, 'replay.web.maxFrameBytes');
43
+ }
44
+ }
45
+ }
46
+ function unified(project) {
47
+ return project.configuration !== undefined || Object.keys(project.replay || {}).some(key => key !== 'enabled');
48
+ }
49
+ function replayOptions(project, platform) {
50
+ validateReplay(project.replay);
51
+ const replay = project.replay;
52
+ if (!replay?.enabled || replay[platform] === false) return undefined;
53
+ return {
54
+ sessionReplaySamplingRate: replay.sessionReplaySamplingRate ?? 100,
55
+ sessionReplayOnErrorSamplingRate: replay.sessionReplayOnErrorSamplingRate ?? 0,
56
+ ...(replay[platform] || {}),
57
+ };
58
+ }
59
+ function nativeReplayEnabled(project) { validateReplay(project.replay); return project.replay?.enabled === true && project.replay.native !== false; }
60
+ function resolveNativeConfiguration(project) {
61
+ validateReplay(project.replay);
62
+ if (project.configuration === undefined) return undefined;
63
+ object(project.configuration, 'configuration');
64
+ const config = JSON.parse(JSON.stringify(project.configuration));
65
+ keys(config, ['sdk', 'rum', 'logger', 'trace', 'autoTrack'], 'configuration');
66
+ object(config.sdk, 'configuration.sdk');
67
+ const replay = replayOptions(project, 'native');
68
+ if (replay) {
69
+ if (!config.rum) throw new Error('Native Replay requires configuration.rum');
70
+ config.replay = replay;
71
+ }
72
+ return config;
73
+ }
74
+ function resolveWebConfiguration(project) {
75
+ validateReplay(project.replay);
76
+ if (project.web?.enabled !== true) return undefined;
77
+ const override = project.web.configuration || {};
78
+ object(override, 'web.configuration');
79
+ if (!unified(project)) return override;
80
+ const native = resolveNativeConfiguration(project) || {};
81
+ // Copy only shared Browser settings. Native endpoints and application IDs stay out of Web artifacts.
82
+ const fields = {
83
+ sdk: ['serviceName', 'env', 'globalContext'],
84
+ rum: ['sessionSamplingRate', 'sampleRate', 'sessionOnErrorSamplingRate', 'sessionOnErrorSampleRate', 'globalContext'],
85
+ logger: ['logSamplingRate', 'sampleRate', 'enableCustomLog', 'logLevelFilters', 'globalContext'],
86
+ trace: ['traceSamplingRate', 'sampleRate', 'traceType'],
87
+ };
88
+ const config = {};
89
+ for (const [group, names] of Object.entries(fields)) {
90
+ if (native[group] !== undefined) config[group] = Object.fromEntries(names.filter(key => native[group][key] !== undefined).map(key => [key, native[group][key]]));
91
+ if (override[group] !== undefined) config[group] = { ...config[group], ...override[group] };
92
+ }
93
+ if (native.autoTrack || override.autoTrack) config.autoTrack = { ...native.autoTrack, ...override.autoTrack };
94
+ config.web = { ...override.web };
95
+ if (config.web.replay !== undefined) throw new Error('Configure Replay once at replay.web; remove web.configuration.web.replay');
96
+ const replay = replayOptions(project, 'web');
97
+ if (replay) {
98
+ if (!config.rum) throw new Error('Web Replay requires configuration.rum or web.configuration.rum');
99
+ config.web.replay = { enabled: true, ...replay };
100
+ }
101
+ return config;
102
+ }
103
+ function readProject(extensionRoot) {
104
+ const file = path.resolve(extensionRoot, '..', '..', 'cocos-sdk.config.json');
105
+ return fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf8')) : {};
106
+ }
107
+ function nativeConfigurationScript(configuration) {
108
+ return '\n/* COCOS_PROJECT_CONFIGURATION_BEGIN */\n'
109
+ + '(typeof window !== "undefined" ? window : globalThis).__FT_COCOS_CONFIGURATION__ = '
110
+ + (configuration ? JSON.stringify(configuration).replace(/</g, '\\u003c') : 'undefined')
111
+ + ';\n/* COCOS_PROJECT_CONFIGURATION_END */\n';
112
+ }
113
+ function configureNativeBuild(buildRoot, extensionRoot) {
114
+ if (!buildRoot || !fs.existsSync(buildRoot)) return;
115
+ const config = resolveNativeConfiguration(readProject(extensionRoot));
116
+ let found = false;
117
+ function visit(directory, depth) {
118
+ if (depth > 12) return;
119
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
120
+ if (['node_modules', '.git', 'library', 'temp', 'cocos-sdk-native'].includes(entry.name)) continue;
121
+ const file = path.join(directory, entry.name);
122
+ if (entry.isDirectory()) visit(file, depth + 1);
123
+ else if (entry.isFile() && entry.name.endsWith('.js')) {
124
+ const source = fs.readFileSync(file, 'utf8');
125
+ if (!source.includes('__FT_COCOS_NATIVE_FACTORY__')) continue;
126
+ if (config?.replay && !source.includes('__FT_COCOS_REPLAY_FACTORY__')) throw new Error('Replay was enabled after installation. Rerun the installer with --replay and rebuild.');
127
+ const clean = source.replace(/\n?\/\* COCOS_PROJECT_CONFIGURATION_BEGIN \*\/[\s\S]*?\/\* COCOS_PROJECT_CONFIGURATION_END \*\/\n?/g, '');
128
+ fs.writeFileSync(file, clean + nativeConfigurationScript(config)); found = true;
129
+ }
130
+ }
131
+ }
132
+ visit(path.resolve(buildRoot), 0);
133
+ if (config && !found) throw new Error('Native SDK runtime was not included in the build. Rerun the installer and rebuild.');
134
+ }
135
+ module.exports = { resolveNativeConfiguration, resolveWebConfiguration, nativeReplayEnabled, readProject, nativeConfigurationScript, configureNativeBuild };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { createRequire } = require('module');
6
+
7
+ // Validated published bundle contracts. Native consumers do not install these packages.
8
+ const BUNDLES = [
9
+ ['@cloudcare/browser-rum', '3.3.22', 'dataflux-rum.js', 'rum.js'],
10
+ ['@cloudcare/browser-logs', '3.3.22', 'dataflux-logs.js', 'logs.js'],
11
+ ['@cloudcare/browser-rum-webgl', '3.3.8', 'dataflux-rum-webgl.js', 'webgl.js'],
12
+ ];
13
+ function webAssets(projectRoot, packageRoot, configuration) {
14
+ const resolve = createRequire(path.join(projectRoot, 'package.json'));
15
+ const files = {
16
+ 'web/bootstrap.js': fs.readFileSync(path.join(packageRoot, 'web/bootstrap.js')),
17
+ 'web/bootstrap.js.map': fs.readFileSync(path.join(packageRoot, 'web/bootstrap.js.map')),
18
+ };
19
+ const selected = BUNDLES.filter((_, i) => i === 0 ? configuration?.rum : i === 1 ? configuration?.logger : configuration?.web?.replay);
20
+ if (!selected.length) throw new Error('Configure web.configuration with rum or logger before installing --web');
21
+ selected.forEach(([name, version, source, target]) => {
22
+ let root;
23
+ try { root = path.dirname(resolve.resolve(`${name}/package.json`)); }
24
+ catch { throw new Error(`Install ${name}@${version} in the Cocos project before running --web`); }
25
+ if (JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')).version !== version) {
26
+ throw new Error(`The Web integration requires ${name}@${version}`);
27
+ }
28
+ files[`web/${target}`] = fs.readFileSync(path.join(root, 'bundle', source));
29
+ });
30
+ return files;
31
+ }
32
+ module.exports = { webAssets };
@@ -1,11 +1,12 @@
1
1
  import { FTLogger, FTRUM, FTTrace } from './modules.js';
2
2
  import type { FTAutoTrackingController, FTAutoTrackingScope } from './client.js';
3
3
  import type { FTAutoTrackingConfig, FTAttributes } from './types.js';
4
+ import type { FTJsbErrorGlobal } from '../native/jsb-errors.js';
4
5
  export interface FTEngineTrackingHooks {
5
6
  onSceneChanged(callback: (name: string) => void, includeCurrent?: boolean): () => void;
6
7
  onAction(callback: (name: string, attributes?: FTAttributes) => void): () => void;
7
8
  }
8
- interface FTGlobalWithFetch {
9
+ interface FTGlobalWithFetch extends FTJsbErrorGlobal {
9
10
  fetch?: typeof fetch;
10
11
  XMLHttpRequest?: typeof XMLHttpRequest;
11
12
  console?: Console;
@@ -21,6 +22,7 @@ export declare class FTDefaultAutoTracking implements FTAutoTrackingController {
21
22
  private stops;
22
23
  private networkStops;
23
24
  private activeView;
25
+ private readonly observations;
24
26
  constructor(rum: FTRUM, logger: FTLogger, trace: FTTrace, hooks: FTEngineTrackingHooks, target?: FTGlobalWithFetch);
25
27
  start(config: FTAutoTrackingConfig, viewName?: string, scope?: FTAutoTrackingScope): void;
26
28
  stop(scope?: FTAutoTrackingScope): void;
@@ -1 +1 @@
1
- {"version":3,"file":"auto-tracking.d.ts","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnF;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACtD,mBAAmB,CAAC,EAAE,OAAO,UAAU,CAAC,mBAAmB,CAAC;CAC7D;AAED,qBAAa,qBAAsB,YAAW,wBAAwB;IAMlE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAqB;gBAGpB,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,qBAAqB,EAC5B,MAAM,GAAE,iBAA8B;IAGzD,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAoBhG,IAAI,CAAC,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAgB9C,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,kBAAkB;CAkE3B"}
1
+ {"version":3,"file":"auto-tracking.d.ts","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnF;AAED,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACtD,mBAAmB,CAAC,EAAE,OAAO,UAAU,CAAC,mBAAmB,CAAC;CAC7D;AAED,qBAAa,qBAAsB,YAAW,wBAAwB;IAOlE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAG/B,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,qBAAqB,EAC5B,MAAM,GAAE,iBAA8B;IAKzD,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAoBhG,IAAI,CAAC,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAiB9C,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,kBAAkB;CAkE3B"}
@@ -57,6 +57,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
57
57
  };
58
58
  Object.defineProperty(exports, "__esModule", { value: true });
59
59
  exports.FTDefaultAutoTracking = void 0;
60
+ var observation_js_1 = require("./observation.js");
60
61
  var FTDefaultAutoTracking = /** @class */ (function () {
61
62
  function FTDefaultAutoTracking(rum, logger, trace, hooks, target) {
62
63
  if (target === void 0) { target = globalThis; }
@@ -67,6 +68,7 @@ var FTDefaultAutoTracking = /** @class */ (function () {
67
68
  this.target = target;
68
69
  this.stops = [];
69
70
  this.networkStops = [];
71
+ this.observations = new observation_js_1.FTObservationQueue(target);
70
72
  }
71
73
  FTDefaultAutoTracking.prototype.start = function (config, viewName, scope) {
72
74
  if (scope === void 0) { scope = 'all'; }
@@ -113,6 +115,7 @@ var FTDefaultAutoTracking = /** @class */ (function () {
113
115
  if (scope !== 'page')
114
116
  this.networkStops.splice(0).reverse().forEach(cleanup);
115
117
  if (scope !== 'network') {
118
+ this.observations.stop();
116
119
  this.stops.splice(0).reverse().forEach(cleanup);
117
120
  if (this.activeView) {
118
121
  cleanup(function () { return _this.rum.stopView(); });
@@ -140,6 +143,29 @@ var FTDefaultAutoTracking = /** @class */ (function () {
140
143
  };
141
144
  FTDefaultAutoTracking.prototype.installErrorTracking = function () {
142
145
  var _this = this;
146
+ var _a;
147
+ var nativeErrors = this.target.__FT_COCOS_JSB_ERRORS__;
148
+ if ((nativeErrors === null || nativeErrors === void 0 ? void 0 : nativeErrors.protocol) === 2) {
149
+ this.stops.push(nativeErrors.subscribe(function (location, message, stack) {
150
+ var _a;
151
+ // Creator 2 also reports promise bookkeeping notifications through onError.
152
+ if (message === 'handlerAddedAfterPromiseRejected' || message === 'rejectAfterPromiseResolved'
153
+ || message === 'resolveAfterPromiseResolved')
154
+ return;
155
+ var rejection = message === 'unhandledRejectedPromise';
156
+ var reason = rejection ? (_a = stack.split(/\r?\n/, 1)[0]) === null || _a === void 0 ? void 0 : _a.replace(/^Error:\s*/, '') : message;
157
+ var errorMessage = reason || message || 'Uncaught JavaScript error';
158
+ var errorStack = stack || location || '';
159
+ var type = rejection ? 'unhandled_promise_rejection' : 'cocos_error';
160
+ _this.observations.enqueue(function () {
161
+ _this.rum.addError(errorMessage, errorStack, type);
162
+ }, 2 * (location.length + message.length + stack.length));
163
+ }));
164
+ return;
165
+ }
166
+ if (nativeErrors || typeof ((_a = this.target.jsb) === null || _a === void 0 ? void 0 : _a.onError) === 'function') {
167
+ throw new Error('Cocos native error bootstrap is missing. Rerun the SDK installer and rebuild the native project.');
168
+ }
143
169
  if (!this.target.addEventListener || !this.target.removeEventListener)
144
170
  return;
145
171
  var errorListener = function (event) {
@@ -170,24 +196,51 @@ var FTDefaultAutoTracking = /** @class */ (function () {
170
196
  'warn',
171
197
  'error',
172
198
  ];
199
+ var observations = this.observations;
200
+ var state = (0, observation_js_1.observationState)(this.target);
173
201
  var originals = new Map();
202
+ var wrappers = new Map();
203
+ var active = true;
174
204
  methods.forEach(function (method) {
175
- var original = consoleObject[method].bind(consoleObject);
205
+ var original = consoleObject[method];
176
206
  originals.set(method, original);
177
- consoleObject[method] = (function () {
207
+ var logger = _this.logger;
208
+ consoleObject[method] = function () {
178
209
  var args = [];
179
210
  for (var _i = 0; _i < arguments.length; _i++) {
180
211
  args[_i] = arguments[_i];
181
212
  }
182
- original.apply(void 0, args);
183
- var level = method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info';
184
- _this.logger.log(args.map(stringifyLogValue).join(' '), level);
185
- });
213
+ var snapshot;
214
+ try {
215
+ if (active && !state.reporting)
216
+ snapshot = { timestampMs: Date.now(), values: args.slice(0, 16) };
217
+ }
218
+ catch ( /* Snapshot failures cannot prevent the original console call. */_a) { /* Snapshot failures cannot prevent the original console call. */ }
219
+ // Keep the original receiver, result and thrown value. No SDK work can
220
+ // escape this finally block and replace the original console outcome.
221
+ try {
222
+ return original.apply(this, args);
223
+ }
224
+ finally {
225
+ try {
226
+ if (active && snapshot) {
227
+ var timestampMs_1 = snapshot.timestampMs, values_1 = snapshot.values;
228
+ observations.enqueue(function () {
229
+ var level = method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info';
230
+ logger.log(values_1.map(stringifyLogValue).join(' '), level, { cocos_observed_at_ms: timestampMs_1 });
231
+ }, values_1.reduce(function (size, value) { return size + (typeof value === 'string' ? value.length * 2 : 64); }, 0));
232
+ }
233
+ }
234
+ catch ( /* Logging must never change application console behavior. */_b) { /* Logging must never change application console behavior. */ }
235
+ }
236
+ };
237
+ wrappers.set(method, consoleObject[method]);
186
238
  });
187
239
  this.stops.push(function () {
240
+ active = false;
188
241
  methods.forEach(function (method) {
189
242
  var original = originals.get(method);
190
- if (original)
243
+ if (original && consoleObject[method] === wrappers.get(method))
191
244
  consoleObject[method] = original;
192
245
  });
193
246
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auto-tracking.js","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-tracking.js","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { FTLogger, FTRUM, FTTrace } from './modules.js';\nimport type { FTAutoTrackingController, FTAutoTrackingScope } from './client.js';\nimport type { FTAutoTrackingConfig, FTAttributes } from './types.js';\nimport type { FTJsbErrorGlobal } from '../native/jsb-errors.js';\nimport { FTObservationQueue, observationState } from './observation.js';\n\nexport interface FTEngineTrackingHooks {\n onSceneChanged(callback: (name: string) => void, includeCurrent?: boolean): () => void;\n onAction(callback: (name: string, attributes?: FTAttributes) => void): () => void;\n}\n\ninterface FTGlobalWithFetch extends FTJsbErrorGlobal {\n fetch?: typeof fetch;\n XMLHttpRequest?: typeof XMLHttpRequest;\n console?: Console;\n addEventListener?: typeof globalThis.addEventListener;\n removeEventListener?: typeof globalThis.removeEventListener;\n}\n\nexport class FTDefaultAutoTracking implements FTAutoTrackingController {\n private stops: Array<() => void> = [];\n private networkStops: Array<() => void> = [];\n private activeView: string | undefined;\n private readonly observations: FTObservationQueue;\n\n constructor(\n private readonly rum: FTRUM,\n private readonly logger: FTLogger,\n private readonly trace: FTTrace,\n private readonly hooks: FTEngineTrackingHooks,\n private readonly target: FTGlobalWithFetch = globalThis,\n ) {\n this.observations = new FTObservationQueue(target);\n }\n\n start(config: FTAutoTrackingConfig, viewName?: string, scope: FTAutoTrackingScope = 'all'): void {\n this.stop(scope);\n try {\n if (scope !== 'network') {\n if (viewName) this.switchView(viewName);\n if (config.scenes) this.installSceneTracking(viewName === undefined);\n if (config.actions) this.installActionTracking();\n if (config.errors) this.installErrorTracking();\n if (config.console) this.installConsoleTracking();\n }\n if (scope !== 'page' && config.network) {\n this.installFetchTracking();\n this.installXhrTracking();\n }\n } catch (error) {\n try { this.stop(scope); } catch { /* Preserve the installation error. */ }\n throw error;\n }\n }\n\n stop(scope: FTAutoTrackingScope = 'all'): void {\n let failure: unknown;\n const cleanup = (stop: () => void): void => {\n try { stop(); } catch (error) { if (failure === undefined) failure = error; }\n };\n if (scope !== 'page') this.networkStops.splice(0).reverse().forEach(cleanup);\n if (scope !== 'network') {\n this.observations.stop();\n this.stops.splice(0).reverse().forEach(cleanup);\n if (this.activeView) {\n cleanup(() => this.rum.stopView());\n this.activeView = undefined;\n }\n }\n if (failure !== undefined) throw failure;\n }\n\n private installSceneTracking(includeCurrent: boolean): void {\n this.stops.push(\n this.hooks.onSceneChanged((name) => {\n this.switchView(name);\n }, includeCurrent),\n );\n }\n\n private switchView(name: string): void {\n if (this.activeView) this.rum.stopView();\n this.activeView = name;\n this.rum.startView(name);\n }\n\n private installActionTracking(): void {\n this.stops.push(\n this.hooks.onAction((name, attributes) => this.rum.startAction(name, 'click', attributes)),\n );\n }\n\n private installErrorTracking(): void {\n const nativeErrors = this.target.__FT_COCOS_JSB_ERRORS__;\n if (nativeErrors?.protocol === 2) {\n this.stops.push(nativeErrors.subscribe((location, message, stack) => {\n // Creator 2 also reports promise bookkeeping notifications through onError.\n if (message === 'handlerAddedAfterPromiseRejected' || message === 'rejectAfterPromiseResolved'\n || message === 'resolveAfterPromiseResolved') return;\n const rejection = message === 'unhandledRejectedPromise';\n const reason = rejection ? stack.split(/\\r?\\n/, 1)[0]?.replace(/^Error:\\s*/, '') : message;\n const errorMessage = reason || message || 'Uncaught JavaScript error';\n const errorStack = stack || location || '';\n const type = rejection ? 'unhandled_promise_rejection' : 'cocos_error';\n this.observations.enqueue(() => {\n this.rum.addError(errorMessage, errorStack, type);\n }, 2 * (location.length + message.length + stack.length));\n }));\n return;\n }\n if (nativeErrors || typeof this.target.jsb?.onError === 'function') {\n throw new Error('Cocos native error bootstrap is missing. Rerun the SDK installer and rebuild the native project.');\n }\n if (!this.target.addEventListener || !this.target.removeEventListener) return;\n const errorListener = (event: Event): void => {\n const errorEvent = event as ErrorEvent;\n this.rum.addError(\n errorEvent.message || 'Uncaught JavaScript error',\n errorEvent.error?.stack || `${errorEvent.filename || ''}:${errorEvent.lineno || 0}`,\n );\n };\n const rejectionListener = (event: Event): void => {\n const reason = (event as PromiseRejectionEvent).reason;\n this.rum.addError(\n reason instanceof Error ? reason.message : String(reason),\n reason instanceof Error ? reason.stack || '' : '',\n 'unhandled_promise_rejection',\n );\n };\n this.target.addEventListener('error', errorListener);\n this.target.addEventListener('unhandledrejection', rejectionListener);\n this.stops.push(() => {\n this.target.removeEventListener?.('error', errorListener);\n this.target.removeEventListener?.('unhandledrejection', rejectionListener);\n });\n }\n\n private installConsoleTracking(): void {\n const consoleObject = this.target.console;\n if (!consoleObject) return;\n const methods: Array<keyof Pick<Console, 'log' | 'info' | 'warn' | 'error'>> = [\n 'log',\n 'info',\n 'warn',\n 'error',\n ];\n const observations = this.observations;\n const state = observationState(this.target);\n const originals = new Map<string, (...args: unknown[]) => void>();\n const wrappers = new Map<string, (...args: unknown[]) => unknown>();\n let active = true;\n methods.forEach((method) => {\n const original = consoleObject[method];\n originals.set(method, original);\n const logger = this.logger;\n consoleObject[method] = function (this: unknown, ...args: unknown[]): unknown {\n let snapshot: { timestampMs: number; values: unknown[] } | undefined;\n try {\n if (active && !state.reporting) snapshot = { timestampMs: Date.now(), values: args.slice(0, 16) };\n } catch { /* Snapshot failures cannot prevent the original console call. */ }\n // Keep the original receiver, result and thrown value. No SDK work can\n // escape this finally block and replace the original console outcome.\n try { return original.apply(this, args); }\n finally {\n try {\n if (active && snapshot) {\n const { timestampMs, values } = snapshot;\n observations.enqueue(() => {\n const level = method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info';\n logger.log(values.map(stringifyLogValue).join(' '), level, { cocos_observed_at_ms: timestampMs });\n }, values.reduce<number>((size, value) => size + (typeof value === 'string' ? value.length * 2 : 64), 0));\n }\n } catch { /* Logging must never change application console behavior. */ }\n }\n } as Console[typeof method];\n wrappers.set(method, consoleObject[method]);\n });\n this.stops.push(() => {\n active = false;\n methods.forEach((method) => {\n const original = originals.get(method);\n if (original && consoleObject[method] === wrappers.get(method)) consoleObject[method] = original as Console[typeof method];\n });\n });\n }\n\n private installFetchTracking(): void {\n const original = this.target.fetch;\n if (!original) return;\n const tracked = (async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n const inputObject = typeof input === 'object' ? input as { url?: string; method?: string; headers?: HeadersInit } : undefined;\n const url = typeof input === 'string' ? input : inputObject?.url || String(input);\n const method = init?.method || inputObject?.method || 'GET';\n const key = resourceKey();\n const headers = createHeaders(init?.headers || inputObject?.headers);\n forEachOwn(this.trace.getHeaders(url, key), (name, value) => setHeader(headers, name, value));\n this.rum.startResource(key);\n const start = nowNs();\n try {\n const response = await original(input, { ...init, headers });\n const end = nowNs();\n this.rum.stopResource(key);\n this.rum.addResource(\n key,\n {\n url,\n httpMethod: method,\n requestHeaders: headersToObject(headers),\n responseHeaders: headersToObject(response.headers),\n statusCode: response.status,\n },\n { fetchStartTime: start, responseStartTime: end, responseEndTime: end },\n );\n return response;\n } catch (error) {\n this.rum.stopResource(key);\n this.rum.addError(String(error), error instanceof Error ? error.stack || '' : '', 'network_error');\n throw error;\n }\n }) as typeof fetch;\n this.networkStops.push(() => {\n this.target.fetch = original;\n });\n this.target.fetch = tracked;\n }\n\n private installXhrTracking(): void {\n const Xhr = this.target.XMLHttpRequest;\n if (!Xhr) return;\n const open = Xhr.prototype.open;\n const send = Xhr.prototype.send;\n const setRequestHeader = Xhr.prototype.setRequestHeader;\n const metadata = new WeakMap<XMLHttpRequest, { key: string; method: string; url: string; headers: Record<string, string> }>();\n const rum = this.rum;\n const trace = this.trace;\n\n // Register each restore before assignment so partial installation can roll back.\n this.networkStops.push(() => { Xhr.prototype.open = open; });\n\n Xhr.prototype.open = function trackedOpen(this: XMLHttpRequest, method: string, url: string | URL, ...rest: unknown[]): void {\n metadata.set(this, { key: resourceKey(), method, url: String(url), headers: {} });\n (open as (...args: unknown[]) => void).call(this, method, url, ...rest);\n } as typeof open;\n this.networkStops.push(() => { Xhr.prototype.setRequestHeader = setRequestHeader; });\n Xhr.prototype.setRequestHeader = function trackedHeader(this: XMLHttpRequest, name: string, value: string): void {\n const data = metadata.get(this);\n if (data) data.headers[name] = value;\n setRequestHeader.call(this, name, value);\n };\n this.networkStops.push(() => { Xhr.prototype.send = send; });\n Xhr.prototype.send = function trackedSend(this: XMLHttpRequest, body?: Document | XMLHttpRequestBodyInit | null): void {\n const data = metadata.get(this);\n if (!data) return send.call(this, body);\n forEachOwn(trace.getHeaders(data.url, data.key), (name, value) => {\n data.headers[name] = value;\n setRequestHeader.call(this, name, value);\n });\n const started = nowNs();\n rum.startResource(data.key);\n let completed = false;\n const report = (): void => {\n if (completed) return;\n completed = true;\n const ended = nowNs();\n rum.stopResource(data.key);\n rum.addResource(\n data.key,\n {\n url: data.url,\n httpMethod: data.method,\n requestHeaders: data.headers,\n responseHeaders: parseXhrHeaders(this.getAllResponseHeaders()),\n statusCode: this.status,\n },\n { fetchStartTime: started, responseStartTime: ended, responseEndTime: ended },\n );\n };\n const originalLoadEnd = this.onloadend;\n this.addEventListener('loadend', report, { once: true });\n // Creator 2 JSB implements addEventListener by assigning the on* property.\n // Preserve the business handler there; DOM runtimes already keep both listeners.\n if (this.onloadend === report) {\n const xhr = this;\n const handler: NonNullable<XMLHttpRequest['onloadend']> = function (event): void {\n if (xhr.onloadend === handler) xhr.onloadend = originalLoadEnd;\n try { originalLoadEnd?.call(xhr, event); } finally { report(); }\n };\n this.onloadend = handler;\n }\n send.call(this, body);\n };\n }\n}\n\nfunction nowNs(): number {\n return Date.now() * 1_000_000;\n}\n\nlet resourceSequence = 0;\nfunction resourceKey(): string {\n resourceSequence = (resourceSequence + 1) % Number.MAX_SAFE_INTEGER;\n return `cocos-${Date.now().toString(36)}-${resourceSequence.toString(36)}`;\n}\n\nfunction createHeaders(source?: HeadersInit): Headers | Record<string, string> {\n const HeadersConstructor = (globalThis as unknown as { Headers?: typeof Headers }).Headers;\n if (HeadersConstructor) return new HeadersConstructor(source);\n const result: Record<string, string> = {};\n if (Array.isArray(source)) {\n source.forEach(([name, value]) => { result[name] = String(value); });\n } else if (source && typeof (source as Headers).forEach === 'function') {\n (source as Headers).forEach((value, name) => { result[name] = value; });\n } else if (source) {\n forEachOwn(source as Record<string, string>, (name, value) => { result[name] = String(value); });\n }\n return result;\n}\n\nfunction setHeader(headers: Headers | Record<string, string>, name: string, value: string): void {\n if (typeof (headers as Headers).set === 'function') (headers as Headers).set(name, value);\n else (headers as Record<string, string>)[name] = value;\n}\n\nfunction headersToObject(headers: Headers | Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {};\n if (typeof (headers as Headers).forEach === 'function') {\n (headers as Headers).forEach((value, key) => { result[key] = value; });\n } else {\n forEachOwn(headers as Record<string, string>, (key, value) => { result[key] = value; });\n }\n return result;\n}\n\nfunction forEachOwn<T>(value: Record<string, T>, callback: (key: string, item: T) => void): void {\n Object.keys(value).forEach((key) => callback(key, value[key] as T));\n}\n\nfunction parseXhrHeaders(raw: string): Record<string, string> {\n const result: Record<string, string> = {};\n raw.trim().split(/[\\r\\n]+/).forEach((line) => {\n const index = line.indexOf(':');\n if (index > 0) result[line.slice(0, index).trim()] = line.slice(index + 1).trim();\n });\n return result;\n}\n\nfunction stringifyLogValue(value: unknown): string {\n if (typeof value === 'string') return value;\n if (value instanceof Error) return `${value.message}\\n${value.stack || ''}`;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"]}
@@ -76,6 +76,7 @@ export declare class FTCocosSDK {
76
76
  private hybridAutoTracking;
77
77
  private readonly ownership;
78
78
  constructor(transport: FTNativeTransport, autoTracking?: FTAutoTrackingController | undefined, engine?: 'creator2' | 'creator3');
79
+ get isCocosEntered(): boolean;
79
80
  /** Attaches an optional package before SDK initialization. */
80
81
  registerExtension<T>(id: string, version: string, engine: string, factory: () => FTSDKExtension<T>): T;
81
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAkB,OAAO,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1F,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,IAAI,IAAI,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,IAAI,IAAI,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,oFAAoF;IACpF,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,cAAc,CAAC;CAC3B;AAID;;;GAGG;AACH,qBAAa,UAAU;IAkBnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAnB1C,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,KAAK;IAC/B,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAG/B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,CAAC,EAAE,wBAAwB,YAAA,EAC/C,MAAM,GAAE,UAAU,GAAG,UAAuB;IAQvD,8DAA8D;IAC9D,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAetG;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAiBlC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,GAAE,mBAAwB,GAAG,IAAI;IA8B9C;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;IA6BnD;;;OAGG;IACH,UAAU,IAAI,IAAI;IAclB;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAgBd;;;;;OAKG;IACH,QAAQ,IAAI,IAAI;CAcjB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAkB,OAAO,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1F,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,IAAI,IAAI,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,IAAI,IAAI,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,oFAAoF;IACpF,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,cAAc,CAAC;CAC3B;AAID;;;GAGG;AACH,qBAAa,UAAU;IAkBnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAnB1C,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,iBAAiB,KAAK;IAC/B,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,WAAW,CAAqB;IAExC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAG/B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,CAAC,EAAE,wBAAwB,YAAA,EAC/C,MAAM,GAAE,UAAU,GAAG,UAAuB;IAYvD,IAAI,cAAc,IAAI,OAAO,CAA2E;IAExG,8DAA8D;IAC9D,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAetG;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAiBlC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,GAAE,mBAAwB,GAAG,IAAI;IA4B9C;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,GAAE,mBAAwB,GAAG,IAAI;IA6BnD;;;OAGG;IACH,UAAU,IAAI,IAAI;IAclB;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAgBd;;;;;OAKG;IACH,QAAQ,IAAI,IAAI;CAcjB"}
@@ -33,6 +33,19 @@ var FTCocosSDK = /** @class */ (function () {
33
33
  this.logger = new modules_js_1.FTLogger(transport, this.ownership);
34
34
  this.trace = new modules_js_1.FTTrace(transport, this.ownership);
35
35
  }
36
+ Object.defineProperty(FTCocosSDK.prototype, "lifecycleMode", {
37
+ /** @internal Ownership state used by the platform facade. */
38
+ get: function () {
39
+ return this.state === 'standalone' ? 'standalone' : this.state === 'hybrid-attached' || this.state === 'hybrid-entered' ? 'hybrid' : 'idle';
40
+ },
41
+ enumerable: false,
42
+ configurable: true
43
+ });
44
+ Object.defineProperty(FTCocosSDK.prototype, "isCocosEntered", {
45
+ get: function () { return this.state === 'standalone' || this.state === 'hybrid-entered'; },
46
+ enumerable: false,
47
+ configurable: true
48
+ });
36
49
  /** Attaches an optional package before SDK initialization. */
37
50
  FTCocosSDK.prototype.registerExtension = function (id, version, engine, factory) {
38
51
  if (version !== version_js_1.FT_COCOS_SDK_VERSION || engine !== this.engine) {
@@ -106,9 +119,7 @@ var FTCocosSDK = /** @class */ (function () {
106
119
  this.ownership.claimNativeHost();
107
120
  try {
108
121
  (_c = (_a = this.extension) === null || _a === void 0 ? void 0 : (_b = _a.lifecycle).beforeAttach) === null || _c === void 0 ? void 0 : _c.call(_b);
109
- this.transport.invoke('hybrid.attach', {
110
- sdkVersion: version_js_1.FT_COCOS_SDK_VERSION,
111
- });
122
+ this.transport.invoke('hybrid.attach');
112
123
  if ((_d = config.autoTrack) === null || _d === void 0 ? void 0 : _d.network) {
113
124
  (_e = this.autoTracking) === null || _e === void 0 ? void 0 : _e.start({ network: true }, undefined, 'network');
114
125
  }