@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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/validation.ts", "../../../src/core/version.ts", "../../../src/core/modules.ts", "../../../src/web/runtime.ts", "../../../src/web/client.ts", "../../../src/core/platform-runtime.ts", "../../../src/web/bootstrap.ts"],
4
+ "sourcesContent": ["export function samplingRate(value: number | undefined, name: string): number | undefined {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value) || value < 0 || value > 1) {\n throw new RangeError(`${name} must be between 0 and 1`);\n }\n return value;\n}\n\nexport function samplingPercentage(value: number | undefined, name: string): number | undefined {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value) || value < 0 || value > 100) {\n throw new RangeError(`${name} must be between 0 and 100`);\n }\n return value;\n}\n\nexport function validatedSamplingConfig<T extends object>(\n config: T,\n scope: string,\n fields: ReadonlyArray<readonly [percentageField: string, legacyField: string]>,\n): T {\n const result = { ...config } as Record<string, unknown>;\n fields.forEach(([percentageField, legacyField]) => {\n const percentage = result[percentageField] as number | undefined;\n if (percentage !== undefined) {\n samplingPercentage(percentage, `${scope}.${percentageField}`);\n delete result[legacyField];\n return;\n }\n samplingRate(result[legacyField] as number | undefined, `${scope}.${legacyField}`);\n });\n return result as T;\n}\n\nexport function requireText(value: string, name: string): string {\n if (!value.trim()) throw new TypeError(`${name} must not be empty`);\n return value;\n}\n", "/** Version of the installed Cocos SDK package. */\nexport const FT_COCOS_SDK_VERSION = '0.1.1-alpha.2';\n\n/** Global-context key used to report the Cocos SDK package version. */\nexport const FT_COCOS_SDK_VERSION_KEY = 'sdk_package_cocos';\n\n/** Event attribute used to identify data emitted through a framework bridge. */\nexport const FT_COCOS_SDK_BRIDGE_INFO_KEY = 'sdk_bridge_info';\n\n/** Serialized bridge metadata expected by the native SDK data model. */\nexport const FT_COCOS_SDK_BRIDGE_INFO = JSON.stringify({\n cocos: FT_COCOS_SDK_VERSION,\n});\n", "import type { FTNativeTransport } from './transport.js';\nimport type {\n FTAttributes,\n FTLogLevel,\n FTLoggerConfig,\n FTResourceContent,\n FTResourceMetrics,\n FTRUMConfig,\n FTSDKConfig,\n FTTraceConfig,\n FTUserData,\n} from './types.js';\nimport { requireText, validatedSamplingConfig } from './validation.js';\nimport {\n FT_COCOS_SDK_BRIDGE_INFO,\n FT_COCOS_SDK_BRIDGE_INFO_KEY,\n FT_COCOS_SDK_VERSION,\n FT_COCOS_SDK_VERSION_KEY,\n} from './version.js';\n\nexport class FTSDKOwnership {\n private mode: 'unclaimed' | 'standalone' | 'native-host' = 'unclaimed';\n\n claimStandalone(): void {\n if (this.mode === 'native-host') {\n throw new Error('The native host owns SDK initialization in Hybrid mode');\n }\n this.mode = 'standalone';\n }\n\n claimNativeHost(): void {\n if (this.mode === 'standalone') {\n throw new Error('Standalone initialization and native-host attachment are mutually exclusive');\n }\n this.mode = 'native-host';\n }\n\n releaseNativeHost(): void {\n if (this.mode === 'native-host') this.mode = 'unclaimed';\n }\n\n releaseStandalone(): void {\n if (this.mode === 'standalone') this.mode = 'unclaimed';\n }\n\n assertNativeHostDoesNotOwnSDK(): void {\n if (this.mode === 'native-host') {\n throw new Error('The native host owns the native SDK in Hybrid mode');\n }\n }\n}\n\nfunction compact<T extends object>(value: T): T {\n const source = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n Object.keys(value).forEach((key) => {\n if (source[key] !== undefined) result[key] = source[key];\n });\n return result as T;\n}\n\nfunction withBridgeInfo(attributes?: FTAttributes): FTAttributes {\n return {\n [FT_COCOS_SDK_BRIDGE_INFO_KEY]: FT_COCOS_SDK_BRIDGE_INFO,\n ...(attributes || {}),\n };\n}\n\n/** Base SDK lifecycle and user identity operations. */\nexport class FTMobileAgent {\n constructor(\n private readonly transport: FTNativeTransport,\n private readonly ownership = new FTSDKOwnership(),\n ) {}\n\n /**\n * Initializes the native SDK connection.\n *\n * Supply either `datakitUrl`, or both `datawayUrl` and `clientToken`.\n *\n * @param config - Base SDK connection and service settings.\n */\n start(config: FTSDKConfig): void {\n if (!config.datakitUrl && !(config.datawayUrl && config.clientToken)) {\n throw new TypeError('Configure datakitUrl or datawayUrl with clientToken');\n }\n this.ownership.claimStandalone();\n this.transport.invoke('sdk.configure', compact({\n ...config,\n globalContext: {\n ...(config.globalContext || {}),\n [FT_COCOS_SDK_VERSION_KEY]: FT_COCOS_SDK_VERSION,\n },\n }));\n }\n\n /**\n * Binds a user identity to data collected after this call.\n *\n * @param user - A user ID or a structured user record.\n */\n bindUser(user: FTUserData | string): void {\n this.transport.invoke(\n 'sdk.bindUser',\n typeof user === 'string' ? { userId: requireText(user, 'userId') } : user,\n );\n }\n\n /** Removes the currently bound user identity. */\n unbindUser(): void {\n this.transport.invoke('sdk.unbindUser');\n }\n\n /** Shuts down a standalone native SDK instance. */\n shutdown(): void {\n this.ownership.assertNativeHostDoesNotOwnSDK();\n this.transport.invoke('sdk.shutdown');\n this.ownership.releaseStandalone();\n }\n}\n\n/** Manual Real User Monitoring operations. */\nexport class FTRUM {\n constructor(\n private readonly transport: FTNativeTransport,\n private readonly ownership = new FTSDKOwnership(),\n ) {}\n\n /**\n * Enables RUM with the supplied native and Cocos settings.\n *\n * @param config - RUM application IDs, sampling, and native tracking options.\n */\n start(config: FTRUMConfig): void {\n const payload = validatedSamplingConfig(config, 'rum', [\n ['sessionSamplingRate', 'sampleRate'],\n ['sessionOnErrorSamplingRate', 'sessionOnErrorSampleRate'],\n ]);\n this.ownership.claimStandalone();\n this.transport.invoke('rum.configure', compact(payload));\n }\n\n /**\n * Starts a RUM view.\n *\n * @param name - Application-defined view name.\n * @param attributes - Optional attributes attached to the view.\n */\n startView(name: string, attributes?: FTAttributes): void {\n this.transport.invoke('rum.startView', {\n name: requireText(name, 'view name'),\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Stops the currently active RUM view.\n *\n * @param attributes - Optional attributes attached when the view stops.\n */\n stopView(attributes?: FTAttributes): void {\n this.transport.invoke('rum.stopView', { attributes: withBridgeInfo(attributes) });\n }\n\n /**\n * Records a completed RUM action.\n *\n * @param name - Application-defined action name.\n * @param type - Action category. @defaultValue `'click'`\n * @param attributes - Optional attributes attached to the action.\n */\n addAction(name: string, type = 'click', attributes?: FTAttributes): void {\n this.transport.invoke('rum.addAction', {\n name: requireText(name, 'action name'),\n type: requireText(type, 'action type'),\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Starts a RUM action whose completion is detected by the native SDK.\n *\n * @param name - Application-defined action name.\n * @param type - Action category. @defaultValue `'click'`\n * @param attributes - Optional attributes attached to the action.\n */\n startAction(name: string, type = 'click', attributes?: FTAttributes): void {\n this.transport.invoke('rum.startAction', {\n name: requireText(name, 'action name'),\n type: requireText(type, 'action type'),\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Records an application error.\n *\n * @param message - Human-readable error message.\n * @param stack - Error stack or diagnostic details.\n * @param type - Application-defined error category. @defaultValue `'cocos_error'`\n * @param state - Application state when the error occurred. @defaultValue `'run'`\n * @param attributes - Optional attributes attached to the error.\n */\n addError(\n message: string,\n stack: string,\n type = 'cocos_error',\n state: 'run' | 'startup' | 'unknown' = 'run',\n attributes?: FTAttributes,\n ): void {\n this.transport.invoke('rum.addError', {\n message,\n stack,\n type,\n state,\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Records a long task.\n *\n * @param stack - Stack or diagnostic details for the task.\n * @param durationNs - Task duration in nanoseconds.\n * @param attributes - Optional attributes attached to the task.\n */\n addLongTask(stack: string, durationNs: number, attributes?: FTAttributes): void {\n this.transport.invoke('rum.addLongTask', {\n stack,\n durationNs,\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Starts tracking a resource using an application-defined correlation key.\n *\n * @param key - Key reused by subsequent calls for this resource.\n * @param attributes - Optional attributes attached to the resource.\n */\n startResource(key: string, attributes?: FTAttributes): void {\n this.transport.invoke('rum.startResource', {\n key: requireText(key, 'resource key'),\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Stops timing a resource previously started with {@link startResource}.\n *\n * @param key - Key passed to {@link startResource}.\n * @param attributes - Optional attributes attached when timing stops.\n */\n stopResource(key: string, attributes?: FTAttributes): void {\n this.transport.invoke('rum.stopResource', {\n key: requireText(key, 'resource key'),\n attributes: withBridgeInfo(attributes),\n });\n }\n\n /**\n * Adds request, response, and optional timing details to a tracked resource.\n *\n * @param key - Key passed to {@link startResource} and {@link stopResource}.\n * @param content - Request and response details safe to collect.\n * @param metrics - Optional network timing metrics.\n */\n addResource(\n key: string,\n content: FTResourceContent,\n metrics?: FTResourceMetrics,\n ): void {\n this.transport.invoke('rum.addResource', {\n key: requireText(key, 'resource key'),\n content,\n metrics,\n });\n }\n}\n\n/** Manual logging operations. */\nexport class FTLogger {\n constructor(\n private readonly transport: FTNativeTransport,\n private readonly ownership = new FTSDKOwnership(),\n ) {}\n\n /**\n * Enables the native logger.\n *\n * @param config - Logger sampling, filtering, and cache settings.\n */\n start(config: FTLoggerConfig): void {\n const payload = validatedSamplingConfig(config, 'logger', [\n ['logSamplingRate', 'sampleRate'],\n ]);\n this.ownership.claimStandalone();\n this.transport.invoke('logger.configure', compact(payload));\n }\n\n /**\n * Writes a custom log entry.\n *\n * @param content - Log message.\n * @param level - Log severity. @defaultValue `'info'`\n * @param attributes - Optional attributes attached to the log.\n */\n log(content: string, level: FTLogLevel = 'info', attributes?: FTAttributes): void {\n this.transport.invoke('logger.log', {\n content,\n level,\n attributes: withBridgeInfo(attributes),\n });\n }\n}\n\n/** Distributed-tracing operations. */\nexport class FTTrace {\n constructor(\n private readonly transport: FTNativeTransport,\n private readonly ownership = new FTSDKOwnership(),\n ) {}\n\n /**\n * Enables distributed tracing.\n *\n * @param config - Trace sampling and propagation settings.\n */\n start(config: FTTraceConfig): void {\n const payload = validatedSamplingConfig(config, 'trace', [\n ['traceSamplingRate', 'sampleRate'],\n ]);\n this.ownership.claimStandalone();\n this.transport.invoke('trace.configure', compact(payload));\n }\n\n /**\n * Returns propagation headers for an outgoing request.\n *\n * Pass the same `resourceKey` used for manual RUM resource tracking to link\n * the request with its trace.\n *\n * @param url - Absolute outgoing request URL.\n * @param resourceKey - Optional key used for manual RUM resource tracking.\n * @returns Headers to merge into the outgoing request.\n */\n getHeaders(url: string, resourceKey?: string): Record<string, string> {\n return (\n this.transport.invoke('trace.getHeaders', {\n url: requireText(url, 'url'),\n resourceKey,\n }) as Record<string, string> | undefined\n ) || {};\n }\n}\n", "import type { FTAttributes, FTUserData } from '../core/types.js';\nimport { samplingPercentage, samplingRate } from '../core/validation.js';\nimport { FT_COCOS_SDK_BRIDGE_INFO_KEY, FT_COCOS_SDK_VERSION, FT_COCOS_SDK_VERSION_KEY } from '../core/version.js';\nimport type { FTBrowserLogs, FTBrowserRum, FTCocosWebConfig, FTWebPageRuntime, FTWebWindow } from './types.js';\n\nconst TRACE_TYPES = {\n ddTrace: 'ddtrace', zipkinMultiHeader: 'zipkin', zipkinSingleHeader: 'zipkin_single_header',\n traceparent: 'w3c_traceparent', skywalking: 'skywalking_v3', jaeger: 'jaeger',\n};\n\n/** Owns page initialization once. Browser collectors live until the page is unloaded. */\nexport class FTWebRuntime implements FTWebPageRuntime {\n readonly protocol = 1 as const;\n private owner: object | undefined;\n private privacyCheck: (() => boolean) | undefined;\n private replayStarted = false;\n private readonly rum: FTBrowserRum | undefined;\n private readonly logs: FTBrowserLogs | undefined;\n\n constructor(readonly config: FTCocosWebConfig, target: FTWebWindow, beforeEngine = false) {\n // Keep later caller mutations from changing filtering or privacy after init.\n config = JSON.parse(JSON.stringify(config)) as FTCocosWebConfig;\n this.config = config;\n const web = config.web;\n if (!web) throw new Error('Configure web explicitly before starting the Web SDK');\n const connection = reportingConnection(web);\n const replay = web.replay;\n if (replay) {\n const keys = ['enabled', 'sessionReplaySamplingRate', 'sessionReplayOnErrorSamplingRate', 'canvasPrivacy', 'canvasId', 'captureFps', 'maxImageDimension', 'quality', 'maxFrameBytes'];\n for (const key of Object.keys(replay)) if (!keys.includes(key)) throw new Error(`Unsupported web.replay.${key}`);\n }\n if (!config.rum && !config.logger) throw new Error('Enable rum or logger for Web collection');\n if (!config.rum && (config.autoTrack?.scenes || config.autoTrack?.actions || config.autoTrack?.errors || config.autoTrack?.network)) throw new Error('Cocos RUM tracking requires rum configuration');\n if (config.trace && !config.rum) throw new Error('Web tracing requires RUM');\n if (config.autoTrack?.console && !config.logger) throw new Error('Console tracking requires logger');\n if (replay && (!beforeEngine || !config.rum)) throw new Error('Web Replay must be configured before engine boot with RUM enabled');\n if (replay && replay.enabled !== true) throw new Error('Web Replay requires enabled: true');\n if (replay?.canvasPrivacy !== undefined && !['block', 'allow'].includes(replay.canvasPrivacy)) {\n throw new Error('web.replay.canvasPrivacy must be block or allow');\n }\n const fps = integer(replay?.captureFps, 1, 5, 1, 'captureFps');\n const dimension = integer(replay?.maxImageDimension, 1, 2048, 720, 'maxImageDimension');\n if (web.outsideViewName !== undefined && !web.outsideViewName.trim()) throw new Error('outsideViewName must not be empty');\n if (web.allowedTracingUrls?.some(url => typeof url !== 'string' || !/^https?:\\/\\//.test(url))) {\n throw new Error('allowedTracingUrls must contain absolute HTTP(S) URL prefixes');\n }\n if (replay?.quality !== undefined && !(typeof replay.quality === 'number'\n ? Number.isFinite(replay.quality) && replay.quality >= 0 && replay.quality <= 1\n : ['low', 'medium', 'high'].includes(replay.quality))) throw new Error('web.replay.quality must be low, medium, high, or a number between 0 and 1');\n const quality = replay?.quality === 'low' ? 0.25 : replay?.quality === 'medium' ? 0.4 : replay?.quality === 'high' ? 0.5 : replay?.quality ?? 0.4;\n const maxBytes = integer(replay?.maxFrameBytes, 1024, 1048576, 40000, 'web.replay.maxFrameBytes');\n const common = { ...connection, service: config.sdk?.serviceName, env: config.sdk?.env, telemetrySampleRate: 0 };\n const rumConfig = config.rum ? {\n ...common,\n applicationId: required(web.applicationId, 'web.applicationId'),\n sessionSampleRate: percentage(config.rum.sessionSamplingRate, config.rum.sampleRate, 100, 'sessionSamplingRate'),\n sessionOnErrorSampleRate: percentage(config.rum.sessionOnErrorSamplingRate, config.rum.sessionOnErrorSampleRate, 0, 'sessionOnErrorSamplingRate'),\n trackViewsManually: true,\n trackUserInteractions: false,\n sessionReplaySampleRate: percentage(replay?.sessionReplaySamplingRate, undefined, replay ? 100 : 0, 'sessionReplaySamplingRate'),\n sessionReplayOnErrorSampleRate: percentage(replay?.sessionReplayOnErrorSamplingRate, undefined, 0, 'sessionReplayOnErrorSamplingRate'),\n allowedTracingUrls: config.trace ? web.allowedTracingUrls || [] : [],\n tracingSampleRate: percentage(config.trace?.traceSamplingRate, config.trace?.sampleRate, 100, 'traceSamplingRate'),\n traceType: TRACE_TYPES[config.trace?.traceType || 'ddTrace'],\n replayCanvasEnabled: !!replay,\n replayCanvasMode: 'auto',\n replayCanvasSampling: fps,\n replayCanvasAutoInterval: 1000 / fps,\n // The WebGL plugin otherwise retains a 1000ms cooldown, overriding higher target FPS.\n // One in-flight encode and the capture interval bound load; 1ms is the minimum accepted cooldown.\n replayCanvasAutoCooldown: 1,\n replayCanvasQuality: quality,\n replayCanvasMaxEncodedBytes: maxBytes,\n replayCanvasMaxCanvasSize: dimension,\n replayCanvasMaxConcurrentEncodes: 1,\n replayCanvasAutoMaxPerRun: 1,\n defaultPrivacyLevel: 'mask',\n shouldRecordCanvas: (canvas: HTMLCanvasElement) => {\n if (!this.replayStarted || replay?.canvasPrivacy !== 'allow' || canvas.id !== (replay.canvasId || 'GameCanvas')) return false;\n // Fail closed until the engine has registered a fresh scene privacy check.\n try { return this.privacyCheck?.() === true; } catch { return false; }\n },\n beforeSend: (event: { type?: string; context?: FTAttributes }) => {\n const manual = !!event.context?.[FT_COCOS_SDK_BRIDGE_INFO_KEY];\n if (event.type === 'resource') return config.autoTrack?.network === true;\n if (event.type === 'error') return manual || config.autoTrack?.errors === true;\n if (event.type === 'long_task') return web.trackLongTasks === true;\n return true;\n },\n } : undefined;\n const logsConfig = config.logger ? {\n ...common,\n sessionSampleRate: percentage(config.logger.logSamplingRate, config.logger.sampleRate, 100, 'logSamplingRate'),\n forwardErrorsToLogs: false,\n forwardConsoleLogs: [],\n forwardReports: [],\n } : undefined;\n this.rum = rumConfig ? target.DATAFLUX_RUM : undefined;\n this.logs = logsConfig ? target.DATAFLUX_LOGS : undefined;\n // Preflight every dependency before the first irreversible Browser init.\n if (rumConfig && (!this.rum || typeof this.rum.getInitConfiguration !== 'function')) throw new Error('Load the Browser RUM bundle before Cocos');\n if (logsConfig && (!this.logs || typeof this.logs.getInitConfiguration !== 'function')) throw new Error('Load the Browser Logs bundle before Cocos');\n if (this.rum?.getInitConfiguration() || this.logs?.getInitConfiguration()) throw new Error('Browser SDK already initialized; use the page bootstrap and attach()');\n if (replay && !target.DATAFLUX_RUM_WEBGL?.webglReplayPlugin) throw new Error('Load the Browser WebGL bundle before Cocos');\n if (rumConfig && this.rum) {\n let accepted = false;\n const ownershipPlugin = { name: 'cocos-adapter', onInit: (): void => { accepted = true; } };\n this.rum.init({\n ...rumConfig,\n plugins: [ownershipPlugin, ...(replay ? [target.DATAFLUX_RUM_WEBGL!.webglReplayPlugin()] : [])],\n });\n // A host awaiting its first manual view can still return undefined from getInitConfiguration().\n if (!accepted) throw new Error('Browser RUM is already initialized or did not accept Cocos initialization');\n this.setContext(this.rum, { ...config.sdk?.globalContext, ...config.rum?.globalContext });\n // Browser 3.3 exposes its public init configuration only after the first manual view.\n this.rum.startView({ name: web.outsideViewName || 'CocosInactive' });\n if (!this.rum.getInitConfiguration()) throw new Error('Browser RUM rejected its configuration');\n this.rum.stopSessionReplayRecording();\n }\n if (logsConfig && this.logs) {\n this.logs.init(logsConfig);\n if (!this.logs.getInitConfiguration()) throw new Error('Browser Logs rejected its configuration');\n this.setContext(this.logs, { ...config.sdk?.globalContext, ...config.logger?.globalContext });\n }\n }\n\n claim(owner: object): void {\n if (this.owner && this.owner !== owner) throw new Error('Another Cocos facade already owns this page attachment');\n this.owner = owner;\n }\n release(owner: object): void {\n if (this.owner !== owner) return;\n this.stopReplay();\n this.privacyCheck = undefined;\n this.owner = undefined;\n }\n setPrivacyCheck(owner: object, check: (() => boolean) | undefined): void {\n if (this.owner !== owner) throw new Error('Attach the Web SDK before configuring privacy');\n this.privacyCheck = check;\n }\n startReplay(): void {\n if (!this.config.web.replay) throw new Error('Configure Web Replay in the pre-engine bootstrap');\n this.replayStarted = true;\n this.rum!.startSessionReplayRecording();\n }\n stopReplay(): void {\n if (!this.replayStarted) return;\n this.replayStarted = false;\n this.rum?.stopSessionReplayRecording();\n }\n isRecording(): boolean { return this.replayStarted && !!this.rum?.isRecording(); }\n\n invoke<T>(method: string, input?: unknown): T | undefined {\n const data = (input || {}) as Record<string, any>;\n switch (method) {\n case 'sdk.bindUser': {\n const user = data as FTUserData;\n const identity = { ...user.extra, id: required(user.userId, 'userId'), name: user.userName, email: user.userEmail };\n this.rum?.setUser(identity); this.logs?.setUser(identity); break;\n }\n case 'sdk.unbindUser': this.rum?.clearUser(); this.logs?.clearUser(); break;\n case 'rum.startView': this.requireRum().startView({ name: data.name, context: data.attributes }); break;\n case 'rum.stopView': this.requireRum().startView({ name: this.config.web.outsideViewName || 'CocosInactive', context: data.attributes }); break;\n case 'rum.addAction': this.requireRum().addTypeAction(data.name, data.type, data.attributes); break;\n case 'rum.addError': {\n const error = new Error(data.message); error.name = data.type; error.stack = data.stack;\n this.requireRum().addError(error, { ...data.attributes, cocos_error_state: data.state }); break;\n }\n case 'logger.log': {\n if (!this.logs) throw new Error('Web logging was not enabled');\n const config = this.config.logger!;\n if (config.enableCustomLog === false || (config.logLevelFilters && config.logLevelFilters.indexOf(data.level) < 0)) break;\n const status = data.level === 'warning' ? 'warn' : data.level;\n if (['ok', 'debug', 'info', 'notice', 'warn', 'error', 'critical', 'alert', 'emerg'].indexOf(status) < 0) {\n throw new Error(`Unsupported Browser log level: ${data.level}`);\n }\n this.logs.logger.log(data.content, data.attributes, status); break;\n }\n default: throw new Error(`${method} is not supported on Web. Configure collectors at page bootstrap; use Browser automatic network/trace collection and detach() for Cocos cleanup.`);\n }\n return undefined;\n }\n private requireRum(): FTBrowserRum {\n if (!this.rum) throw new Error('Web RUM was not enabled');\n return this.rum;\n }\n private setContext(api: FTBrowserRum | FTBrowserLogs, context: Record<string, unknown>): void {\n Object.keys(context).forEach(key => api.setGlobalContextProperty(key, context[key]));\n api.setGlobalContextProperty(FT_COCOS_SDK_VERSION_KEY, FT_COCOS_SDK_VERSION);\n }\n}\n\nexport function bootstrapWeb(config: FTCocosWebConfig, target: FTWebWindow = window as FTWebWindow): FTWebPageRuntime {\n if (target.__FT_COCOS_WEB__) throw new Error('Cocos Web bootstrap already initialized');\n const runtime = new FTWebRuntime(config, target, true);\n target.__FT_COCOS_WEB__ = runtime;\n return runtime;\n}\nfunction required(value: string | undefined, name: string): string {\n if (typeof value !== 'string' || !value.trim()) throw new Error(`${name} is required`);\n return value;\n}\nfunction reportingConnection(web: FTCocosWebConfig['web']): Record<string, string> {\n if (web.datakitOrigin && (web.site || web.clientToken)) throw new Error('Choose datakitOrigin or site with clientToken');\n const origin = required(web.datakitOrigin || web.site, 'web.datakitOrigin or web.site');\n if (!/^https?:\\/\\/[^/?#@]+\\/?$/.test(origin)) throw new Error('Browser reporting endpoint must be an HTTP(S) origin without a path, credentials, query or fragment');\n return web.datakitOrigin ? { datakitOrigin: origin } : { site: origin, clientToken: required(web.clientToken, 'web.clientToken') };\n}\nfunction percentage(value: number | undefined, legacy: number | undefined, fallback: number, name: string): number {\n return value !== undefined ? samplingPercentage(value, name)! : legacy !== undefined ? samplingRate(legacy, name)! * 100 : fallback;\n}\nfunction integer(value: number | undefined, min: number, max: number, fallback: number, name: string): number {\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value < min || value > max) throw new RangeError(`${name} must be an integer between ${min} and ${max}`);\n return value;\n}\n", "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", "import type { FTEngineTrackingHooks } from './auto-tracking.js';\nimport type { FTCocosConfig, FTCocosHybridConfig } from './types.js';\nimport type { FTNativeReplayConfig } from './platform-options.js';\nimport type { FTCocosSDK } from './client.js';\nimport type { FTCocosWebSDK } from '../web/client.js';\nimport { FT_COCOS_SDK_VERSION } from './version.js';\n\nexport interface FTPlatformContext {\n engine: 'creator2' | 'creator3';\n platform: 'android' | 'ios' | 'unsupported' | 'web';\n hooks: FTEngineTrackingHooks;\n canvasIsPublic: () => boolean;\n engineApi?: unknown;\n reflection?: { callStaticMethod(...args: string[]): unknown };\n}\nexport type FTPlatformImplementation = FTCocosSDK | FTCocosWebSDK;\nexport interface FTPlatformFactory {\n protocol: 1;\n version: string;\n create(context: FTPlatformContext, target: FTPlatformGlobal): FTPlatformImplementation;\n}\nexport interface FTNativeReplayFacade {\n start(config: FTCocosConfig & { replay?: FTNativeReplayConfig }): void;\n attach(config: FTCocosHybridConfig & { replay?: FTNativeReplayConfig }): void;\n replay: {\n start(config?: FTNativeReplayConfig): void;\n stop(): void;\n enterHybrid(): void;\n leaveHybrid(): void;\n };\n}\nexport interface FTPlatformGlobal {\n __FT_COCOS_CONFIGURATION__?: FTCocosConfig & { replay?: FTNativeReplayConfig };\n __FT_COCOS_REPLAY_FACTORY__?: {\n protocol: 1; version: string; engine: string;\n create(base: FTCocosSDK, context: FTPlatformContext): FTNativeReplayFacade;\n };\n __FT_COCOS_NATIVE_FACTORY__?: FTPlatformFactory;\n __FT_COCOS_WEB_FACTORY__?: FTPlatformFactory;\n __FT_COCOS_INSTANCES__?: Record<string, { version: string; sdk: FTPlatformImplementation; replay?: FTNativeReplayFacade; replayConfig?: FTNativeReplayConfig }>;\n}\nexport function platformGlobal(): FTPlatformGlobal {\n return (typeof window !== 'undefined' ? window : globalThis) as FTPlatformGlobal;\n}\n\nexport function existingPlatformImplementation(context: FTPlatformContext, target = platformGlobal()): FTPlatformImplementation | undefined {\n const previous = target.__FT_COCOS_INSTANCES__?.[context.engine + ':' + context.platform];\n if (previous && previous.version !== FT_COCOS_SDK_VERSION) throw new Error('Cocos SDK versions must match on the same page');\n return previous?.sdk;\n}\n\n/** The engine module graph contains no platform implementation. Build assets supply factories. */\nexport function platformImplementation(context: FTPlatformContext, target = platformGlobal(), create?: () => FTPlatformImplementation): FTPlatformImplementation {\n const key = context.engine + ':' + context.platform;\n const instances = target.__FT_COCOS_INSTANCES__ || (target.__FT_COCOS_INSTANCES__ = {});\n const previous = existingPlatformImplementation(context, target);\n if (previous) return previous;\n const factory = context.platform === 'web' ? target.__FT_COCOS_WEB_FACTORY__ : target.__FT_COCOS_NATIVE_FACTORY__;\n if (!create && (!factory || factory.protocol !== 1 || factory.version !== FT_COCOS_SDK_VERSION)) {\n throw new Error(context.platform === 'web'\n ? 'Cocos Web runtime is missing or incompatible. Run the installer with --web and rebuild, or load /web/bootstrap before game scripts.'\n : 'Cocos native runtime is missing or incompatible. Rerun the SDK installer and rebuild the project.');\n }\n const sdk = create ? create() : factory!.create(context, target);\n instances[key] = { version: FT_COCOS_SDK_VERSION, sdk };\n return sdk;\n}\n", "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"],
5
+ "mappings": "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",
6
+ "names": ["FTSDKOwnership", "FTMobileAgent", "FTRUM", "FTLogger", "FTTrace", "FTWebRuntime", "_a", "_b", "_c", "FTCocosWebSDK"]
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "../../dist/creator2/web/creator2.js",
3
+ "types": "../../dist/creator2/web/creator2.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "../../dist/creator3/web/creator3.js",
3
+ "types": "../../dist/creator3/web/creator3.d.ts"
4
+ }