@truewatchtech/cocos-sdk 0.1.0-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 (169) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +51 -0
  3. package/THIRD_PARTY_NOTICES +5 -0
  4. package/bin/cli.cjs +130 -0
  5. package/creator2/package.json +4 -0
  6. package/creator3/package.json +5 -0
  7. package/dist/creator2/core/auto-tracking.d.ts +35 -0
  8. package/dist/creator2/core/auto-tracking.d.ts.map +1 -0
  9. package/dist/creator2/core/auto-tracking.js +337 -0
  10. package/dist/creator2/core/auto-tracking.js.map +1 -0
  11. package/dist/creator2/core/client.d.ts +74 -0
  12. package/dist/creator2/core/client.d.ts.map +1 -0
  13. package/dist/creator2/core/client.js +176 -0
  14. package/dist/creator2/core/client.js.map +1 -0
  15. package/dist/creator2/core/index.d.ts +3 -0
  16. package/dist/creator2/core/index.d.ts.map +1 -0
  17. package/dist/creator2/core/index.js +6 -0
  18. package/dist/creator2/core/index.js.map +1 -0
  19. package/dist/creator2/core/modules.d.ts +159 -0
  20. package/dist/creator2/core/modules.d.ts.map +1 -0
  21. package/dist/creator2/core/modules.js +319 -0
  22. package/dist/creator2/core/modules.js.map +1 -0
  23. package/dist/creator2/core/replay-budget.d.ts +28 -0
  24. package/dist/creator2/core/replay-budget.d.ts.map +1 -0
  25. package/dist/creator2/core/replay-budget.js +113 -0
  26. package/dist/creator2/core/replay-budget.js.map +1 -0
  27. package/dist/creator2/core/replay-diagnostics.d.ts +36 -0
  28. package/dist/creator2/core/replay-diagnostics.d.ts.map +1 -0
  29. package/dist/creator2/core/replay-diagnostics.js +40 -0
  30. package/dist/creator2/core/replay-diagnostics.js.map +1 -0
  31. package/dist/creator2/core/replay-encoding.d.ts +31 -0
  32. package/dist/creator2/core/replay-encoding.d.ts.map +1 -0
  33. package/dist/creator2/core/replay-encoding.js +63 -0
  34. package/dist/creator2/core/replay-encoding.js.map +1 -0
  35. package/dist/creator2/core/replay-pixels.d.ts +3 -0
  36. package/dist/creator2/core/replay-pixels.d.ts.map +1 -0
  37. package/dist/creator2/core/replay-pixels.js +16 -0
  38. package/dist/creator2/core/replay-pixels.js.map +1 -0
  39. package/dist/creator2/core/replay-privacy.d.ts +15 -0
  40. package/dist/creator2/core/replay-privacy.d.ts.map +1 -0
  41. package/dist/creator2/core/replay-privacy.js +36 -0
  42. package/dist/creator2/core/replay-privacy.js.map +1 -0
  43. package/dist/creator2/core/replay.d.ts +97 -0
  44. package/dist/creator2/core/replay.d.ts.map +1 -0
  45. package/dist/creator2/core/replay.js +578 -0
  46. package/dist/creator2/core/replay.js.map +1 -0
  47. package/dist/creator2/core/transport.d.ts +16 -0
  48. package/dist/creator2/core/transport.d.ts.map +1 -0
  49. package/dist/creator2/core/transport.js +33 -0
  50. package/dist/creator2/core/transport.js.map +1 -0
  51. package/dist/creator2/core/types.d.ts +260 -0
  52. package/dist/creator2/core/types.d.ts.map +1 -0
  53. package/dist/creator2/core/types.js +3 -0
  54. package/dist/creator2/core/types.js.map +1 -0
  55. package/dist/creator2/core/validation.d.ts +14 -0
  56. package/dist/creator2/core/validation.d.ts.map +1 -0
  57. package/dist/creator2/core/validation.js +81 -0
  58. package/dist/creator2/core/validation.js.map +1 -0
  59. package/dist/creator2/core/version.d.ts +9 -0
  60. package/dist/creator2/core/version.d.ts.map +1 -0
  61. package/dist/creator2/core/version.js +14 -0
  62. package/dist/creator2/core/version.js.map +1 -0
  63. package/dist/creator2/creator2/auto.d.ts +9 -0
  64. package/dist/creator2/creator2/auto.d.ts.map +1 -0
  65. package/dist/creator2/creator2/auto.js +65 -0
  66. package/dist/creator2/creator2/auto.js.map +1 -0
  67. package/dist/creator2/creator2/capture.d.ts +17 -0
  68. package/dist/creator2/creator2/capture.d.ts.map +1 -0
  69. package/dist/creator2/creator2/capture.js +175 -0
  70. package/dist/creator2/creator2/capture.js.map +1 -0
  71. package/dist/creator2/creator2/index.d.ts +12 -0
  72. package/dist/creator2/creator2/index.d.ts.map +1 -0
  73. package/dist/creator2/creator2/index.js +41 -0
  74. package/dist/creator2/creator2/index.js.map +1 -0
  75. package/dist/creator2/creator2/transport.d.ts +7 -0
  76. package/dist/creator2/creator2/transport.d.ts.map +1 -0
  77. package/dist/creator2/creator2/transport.js +34 -0
  78. package/dist/creator2/creator2/transport.js.map +1 -0
  79. package/dist/creator3/core/auto-tracking.d.ts +35 -0
  80. package/dist/creator3/core/auto-tracking.d.ts.map +1 -0
  81. package/dist/creator3/core/auto-tracking.js +247 -0
  82. package/dist/creator3/core/auto-tracking.js.map +1 -0
  83. package/dist/creator3/core/client.d.ts +74 -0
  84. package/dist/creator3/core/client.d.ts.map +1 -0
  85. package/dist/creator3/core/client.js +158 -0
  86. package/dist/creator3/core/client.js.map +1 -0
  87. package/dist/creator3/core/index.d.ts +3 -0
  88. package/dist/creator3/core/index.d.ts.map +1 -0
  89. package/dist/creator3/core/index.js +2 -0
  90. package/dist/creator3/core/index.js.map +1 -0
  91. package/dist/creator3/core/modules.d.ts +159 -0
  92. package/dist/creator3/core/modules.d.ts.map +1 -0
  93. package/dist/creator3/core/modules.js +293 -0
  94. package/dist/creator3/core/modules.js.map +1 -0
  95. package/dist/creator3/core/replay-budget.d.ts +28 -0
  96. package/dist/creator3/core/replay-budget.d.ts.map +1 -0
  97. package/dist/creator3/core/replay-budget.js +105 -0
  98. package/dist/creator3/core/replay-budget.js.map +1 -0
  99. package/dist/creator3/core/replay-diagnostics.d.ts +36 -0
  100. package/dist/creator3/core/replay-diagnostics.d.ts.map +1 -0
  101. package/dist/creator3/core/replay-diagnostics.js +36 -0
  102. package/dist/creator3/core/replay-diagnostics.js.map +1 -0
  103. package/dist/creator3/core/replay-encoding.d.ts +31 -0
  104. package/dist/creator3/core/replay-encoding.d.ts.map +1 -0
  105. package/dist/creator3/core/replay-encoding.js +62 -0
  106. package/dist/creator3/core/replay-encoding.js.map +1 -0
  107. package/dist/creator3/core/replay-pixels.d.ts +3 -0
  108. package/dist/creator3/core/replay-pixels.d.ts.map +1 -0
  109. package/dist/creator3/core/replay-pixels.js +13 -0
  110. package/dist/creator3/core/replay-pixels.js.map +1 -0
  111. package/dist/creator3/core/replay-privacy.d.ts +15 -0
  112. package/dist/creator3/core/replay-privacy.d.ts.map +1 -0
  113. package/dist/creator3/core/replay-privacy.js +33 -0
  114. package/dist/creator3/core/replay-privacy.js.map +1 -0
  115. package/dist/creator3/core/replay.d.ts +97 -0
  116. package/dist/creator3/core/replay.d.ts.map +1 -0
  117. package/dist/creator3/core/replay.js +520 -0
  118. package/dist/creator3/core/replay.js.map +1 -0
  119. package/dist/creator3/core/transport.d.ts +16 -0
  120. package/dist/creator3/core/transport.d.ts.map +1 -0
  121. package/dist/creator3/core/transport.js +27 -0
  122. package/dist/creator3/core/transport.js.map +1 -0
  123. package/dist/creator3/core/types.d.ts +260 -0
  124. package/dist/creator3/core/types.d.ts.map +1 -0
  125. package/dist/creator3/core/types.js +2 -0
  126. package/dist/creator3/core/types.js.map +1 -0
  127. package/dist/creator3/core/validation.d.ts +14 -0
  128. package/dist/creator3/core/validation.d.ts.map +1 -0
  129. package/dist/creator3/core/validation.js +75 -0
  130. package/dist/creator3/core/validation.js.map +1 -0
  131. package/dist/creator3/core/version.d.ts +9 -0
  132. package/dist/creator3/core/version.d.ts.map +1 -0
  133. package/dist/creator3/core/version.js +11 -0
  134. package/dist/creator3/core/version.js.map +1 -0
  135. package/dist/creator3/creator3/auto.d.ts +9 -0
  136. package/dist/creator3/creator3/auto.d.ts.map +1 -0
  137. package/dist/creator3/creator3/auto.js +73 -0
  138. package/dist/creator3/creator3/auto.js.map +1 -0
  139. package/dist/creator3/creator3/capture.d.ts +17 -0
  140. package/dist/creator3/creator3/capture.d.ts.map +1 -0
  141. package/dist/creator3/creator3/capture.js +119 -0
  142. package/dist/creator3/creator3/capture.js.map +1 -0
  143. package/dist/creator3/creator3/index.d.ts +12 -0
  144. package/dist/creator3/creator3/index.d.ts.map +1 -0
  145. package/dist/creator3/creator3/index.js +23 -0
  146. package/dist/creator3/creator3/index.js.map +1 -0
  147. package/dist/creator3/creator3/replay-render-cycle.d.ts +9 -0
  148. package/dist/creator3/creator3/replay-render-cycle.d.ts.map +1 -0
  149. package/dist/creator3/creator3/replay-render-cycle.js +12 -0
  150. package/dist/creator3/creator3/replay-render-cycle.js.map +1 -0
  151. package/dist/creator3/creator3/transport.d.ts +8 -0
  152. package/dist/creator3/creator3/transport.d.ts.map +1 -0
  153. package/dist/creator3/creator3/transport.js +24 -0
  154. package/dist/creator3/creator3/transport.js.map +1 -0
  155. package/dist/creator3/package.json +1 -0
  156. package/extensions/creator2/install-native.cjs +333 -0
  157. package/extensions/creator2/main.js +23 -0
  158. package/extensions/creator2/package.json +6 -0
  159. package/extensions/creator3/dist/builder.js +9 -0
  160. package/extensions/creator3/dist/hooks.js +70 -0
  161. package/extensions/creator3/dist/main.js +4 -0
  162. package/extensions/creator3/install-native.cjs +333 -0
  163. package/extensions/creator3/package.json +10 -0
  164. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridge.java +532 -0
  165. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridgeProvider.java +70 -0
  166. package/native/ios/FTCocosBridge.h +10 -0
  167. package/native/ios/FTCocosBridge.m +470 -0
  168. package/native/ios/FTCocosBridge.podspec +18 -0
  169. package/package.json +60 -0
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.FTCreator2CanvasCapture = void 0;
51
+ var replay_js_1 = require("../core/replay.js");
52
+ var replay_pixels_js_1 = require("../core/replay-pixels.js");
53
+ var replay_privacy_js_1 = require("../core/replay-privacy.js");
54
+ var FTCreator2CanvasCapture = /** @class */ (function () {
55
+ function FTCreator2CanvasCapture() {
56
+ this.privacy = new Map();
57
+ }
58
+ FTCreator2CanvasCapture.prototype.setCamera = function (camera) {
59
+ this.camera = camera;
60
+ };
61
+ FTCreator2CanvasCapture.prototype.setPrivacy = function (node, mode) {
62
+ if (mode === 'unmask')
63
+ this.privacy.delete(node);
64
+ else
65
+ this.privacy.set(node, mode);
66
+ };
67
+ FTCreator2CanvasCapture.prototype.getViewportSize = function () {
68
+ var _a, _b;
69
+ var visible = ((_b = (_a = cc.view).getVisibleSizeInPixel) === null || _b === void 0 ? void 0 : _b.call(_a)) || cc.view.getVisibleSize();
70
+ return visible ? { width: visible.width, height: visible.height } : undefined;
71
+ };
72
+ FTCreator2CanvasCapture.prototype.capture = function (maxImageDimension) {
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ var scene, camera, visible, scale, width, height, texture, previous, previousClearFlags, pixels, privacyRegions;
75
+ var _a, _b;
76
+ return __generator(this, function (_c) {
77
+ switch (_c.label) {
78
+ case 0:
79
+ scene = cc.director.getScene();
80
+ camera = this.camera || ((_a = scene === null || scene === void 0 ? void 0 : scene.getComponentInChildren) === null || _a === void 0 ? void 0 : _a.call(scene, cc.Camera));
81
+ if (!camera)
82
+ return [2 /*return*/, undefined];
83
+ visible = this.getViewportSize();
84
+ if (!visible)
85
+ return [2 /*return*/, undefined];
86
+ scale = Math.min(1, maxImageDimension / Math.max(visible.width, visible.height));
87
+ width = Math.max(1, Math.round(visible.width * scale));
88
+ height = Math.max(1, Math.round(visible.height * scale));
89
+ texture = new cc.RenderTexture();
90
+ texture.initWithSize(width, height, (_b = cc.gfx) === null || _b === void 0 ? void 0 : _b.RB_FMT_D24S8);
91
+ previous = camera.targetTexture;
92
+ previousClearFlags = camera.clearFlags;
93
+ privacyRegions = [];
94
+ _c.label = 1;
95
+ case 1:
96
+ _c.trys.push([1, , 3, 4]);
97
+ // Creator 2 cameras clear only depth and stencil by default. A fresh
98
+ // RenderTexture can therefore expose stale GPU color data anywhere the
99
+ // scene does not draw, which appears as overlapping strips in replay.
100
+ camera.clearFlags = previousClearFlags | cc.Camera.ClearFlags.COLOR;
101
+ camera.targetTexture = texture;
102
+ return [4 /*yield*/, new Promise(function (resolve) { return cc.director.once(cc.Director.EVENT_AFTER_DRAW, resolve); })];
103
+ case 2:
104
+ _c.sent();
105
+ pixels = texture.readPixels();
106
+ if (pixels)
107
+ privacyRegions = this.collectPrivacyRegions(camera, width, height, visible.width, visible.height);
108
+ return [3 /*break*/, 4];
109
+ case 3:
110
+ camera.targetTexture = previous;
111
+ camera.clearFlags = previousClearFlags;
112
+ texture.destroy();
113
+ return [7 /*endfinally*/];
114
+ case 4:
115
+ if (!pixels)
116
+ return [2 /*return*/, undefined];
117
+ // Creator 2 native rendering uses OpenGL, including on iOS. RenderTexture
118
+ // pixels therefore use a bottom-left origin and must be normalized before
119
+ // PNG encoding and top-left-based privacy-region masking.
120
+ (0, replay_pixels_js_1.flipRgbaRows)(pixels, width, height);
121
+ return [2 /*return*/, {
122
+ rgba: pixels,
123
+ width: width,
124
+ height: height,
125
+ timestamp: Date.now(),
126
+ privacyRegions: privacyRegions,
127
+ }];
128
+ }
129
+ });
130
+ });
131
+ };
132
+ FTCreator2CanvasCapture.prototype.persist = function (frame_1) {
133
+ return __awaiter(this, arguments, void 0, function (frame, fingerprint) {
134
+ var path;
135
+ if (fingerprint === void 0) { fingerprint = (0, replay_js_1.frameFingerprint)(frame.rgba); }
136
+ return __generator(this, function (_a) {
137
+ path = "".concat(jsb.fileUtils.getWritablePath(), "cocos-sdk-replay-").concat(fingerprint, ".rgba");
138
+ if (!jsb.fileUtils.writeDataToFile(frame.rgba, path)) {
139
+ throw new Error("Unable to persist replay frame: ".concat(path));
140
+ }
141
+ return [2 /*return*/, { path: path, width: frame.width, height: frame.height, timestamp: frame.timestamp, fingerprint: fingerprint }];
142
+ });
143
+ });
144
+ };
145
+ FTCreator2CanvasCapture.prototype.disposeStoredFrame = function (frame) {
146
+ if (jsb.fileUtils.isFileExist(frame.path))
147
+ jsb.fileUtils.removeFile(frame.path);
148
+ };
149
+ FTCreator2CanvasCapture.prototype.collectPrivacyRegions = function (camera, width, height, sourceWidth, sourceHeight) {
150
+ var _a, _b, _c, _d, _e;
151
+ var nodes = new Map(this.privacy);
152
+ (_c = (_b = (_a = cc.director.getScene()) === null || _a === void 0 ? void 0 : _a.getComponentsInChildren) === null || _b === void 0 ? void 0 : _b.call(_a, cc.EditBox)) === null || _c === void 0 ? void 0 : _c.forEach(function (editBox) {
153
+ if (!nodes.has(editBox.node))
154
+ nodes.set(editBox.node, 'mask');
155
+ });
156
+ var screenWidth = ((_d = cc.visibleRect) === null || _d === void 0 ? void 0 : _d.width) || sourceWidth;
157
+ var screenHeight = ((_e = cc.visibleRect) === null || _e === void 0 ? void 0 : _e.height) || sourceHeight;
158
+ var regions = [];
159
+ nodes.forEach(function (mode, node) {
160
+ var _a, _b, _c;
161
+ var bounds = (_a = node === null || node === void 0 ? void 0 : node.getBoundingBoxToWorld) === null || _a === void 0 ? void 0 : _a.call(node);
162
+ if (!bounds)
163
+ return;
164
+ var worldZ = (_c = (_b = node.getWorldPosition) === null || _b === void 0 ? void 0 : _b.call(node, cc.v3(0, 0, 0)).z) !== null && _c !== void 0 ? _c : 0;
165
+ var projected = (0, replay_privacy_js_1.projectPrivacyBounds)(bounds, width, height, screenWidth, screenHeight, function (x, y) { var _a; return (_a = camera.getWorldToScreenPoint) === null || _a === void 0 ? void 0 : _a.call(camera, cc.v3(x, y, worldZ)); });
166
+ if (!projected)
167
+ throw new Error('Unable to project Replay privacy bounds');
168
+ regions.push(__assign(__assign({}, projected), { mode: mode === 'hide' ? 'hide' : 'mask' }));
169
+ });
170
+ return regions;
171
+ };
172
+ return FTCreator2CanvasCapture;
173
+ }());
174
+ exports.FTCreator2CanvasCapture = FTCreator2CanvasCapture;
175
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../src/creator2/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { FTCocosSDK } from '../core/client.js';
2
+ /** Shared SDK entry point for Cocos Creator 2.4 applications. */
3
+ export declare const truewatchSdk: FTCocosSDK;
4
+ /**
5
+ * Selects the Cocos Creator 2 camera used to capture Session Replay frames.
6
+ * Call this after the camera is available and before starting Replay.
7
+ *
8
+ * @param camera - Active `cc.Camera` instance.
9
+ */
10
+ export declare function setReplayCamera(camera: unknown): void;
11
+ export * from '../core/index.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/creator2/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgB/C,iEAAiE;AACjE,eAAO,MAAM,YAAY,YAA0D,CAAC;AAEpF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAErD;AAED,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.truewatchSdk = void 0;
18
+ exports.setReplayCamera = setReplayCamera;
19
+ var auto_tracking_js_1 = require("../core/auto-tracking.js");
20
+ var client_js_1 = require("../core/client.js");
21
+ var modules_js_1 = require("../core/modules.js");
22
+ var auto_js_1 = require("./auto.js");
23
+ var capture_js_1 = require("./capture.js");
24
+ var transport_js_1 = require("./transport.js");
25
+ var transport = new transport_js_1.FTCreator2Transport();
26
+ var capture = new capture_js_1.FTCreator2CanvasCapture();
27
+ var hooks = new auto_js_1.FTCreator2TrackingHooks();
28
+ var autoTracking = new auto_tracking_js_1.FTDefaultAutoTracking(new modules_js_1.FTRUM(transport), new modules_js_1.FTLogger(transport), new modules_js_1.FTTrace(transport), hooks);
29
+ /** Shared SDK entry point for Cocos Creator 2.4 applications. */
30
+ exports.truewatchSdk = new client_js_1.FTCocosSDK(transport, capture, autoTracking, hooks);
31
+ /**
32
+ * Selects the Cocos Creator 2 camera used to capture Session Replay frames.
33
+ * Call this after the camera is available and before starting Replay.
34
+ *
35
+ * @param camera - Active `cc.Camera` instance.
36
+ */
37
+ function setReplayCamera(camera) {
38
+ capture.setCamera(camera);
39
+ }
40
+ __exportStar(require("../core/index.js"), exports);
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/creator2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA0BA,0CAEC;AA5BD,6DAAiE;AACjE,+CAA+C;AAC/C,iDAA8D;AAC9D,qCAAoD;AACpD,2CAAuD;AACvD,+CAAqD;AAErD,IAAM,SAAS,GAAG,IAAI,kCAAmB,EAAE,CAAC;AAC5C,IAAM,OAAO,GAAG,IAAI,oCAAuB,EAAE,CAAC;AAC9C,IAAM,KAAK,GAAG,IAAI,iCAAuB,EAAE,CAAC;AAC5C,IAAM,YAAY,GAAG,IAAI,wCAAqB,CAC5C,IAAI,kBAAK,CAAC,SAAS,CAAC,EACpB,IAAI,qBAAQ,CAAC,SAAS,CAAC,EACvB,IAAI,oBAAO,CAAC,SAAS,CAAC,EACtB,KAAK,CACN,CAAC;AAEF,iEAAiE;AACpD,QAAA,YAAY,GAAG,IAAI,sBAAU,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAEpF;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,MAAe;IAC7C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,mDAAiC"}
@@ -0,0 +1,7 @@
1
+ import { type FTNativeTransport } from '../core/transport.js';
2
+ import type { FTValue } from '../core/types.js';
3
+ export declare class FTCreator2Transport implements FTNativeTransport {
4
+ readonly platform: 'android' | 'ios' | 'unsupported';
5
+ invoke<T = FTValue>(method: string, payload?: unknown): T | undefined;
6
+ }
7
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../../src/creator2/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,aAAa,CAA6B;IAEjF,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS;CActE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FTCreator2Transport = void 0;
4
+ var transport_js_1 = require("../core/transport.js");
5
+ var FTCreator2Transport = /** @class */ (function () {
6
+ function FTCreator2Transport() {
7
+ this.platform = resolveCreator2Platform();
8
+ }
9
+ FTCreator2Transport.prototype.invoke = function (method, payload) {
10
+ if (this.platform === 'unsupported')
11
+ return undefined;
12
+ var json = payload === undefined ? '{}' : JSON.stringify(payload);
13
+ var raw = this.platform === 'android'
14
+ ? jsb.reflection.callStaticMethod('com/ft/sdk/cocos/FTCocosBridge', 'invoke', '(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;', method, json)
15
+ : jsb.reflection.callStaticMethod('FTCocosBridge', 'invoke:payload:', method, json);
16
+ return (0, transport_js_1.parseTransportResponse)(raw);
17
+ };
18
+ return FTCreator2Transport;
19
+ }());
20
+ exports.FTCreator2Transport = FTCreator2Transport;
21
+ function resolveCreator2Platform() {
22
+ var _a, _b;
23
+ var isNative = (typeof CC_JSB !== 'undefined' && CC_JSB) || typeof jsb !== 'undefined';
24
+ if (!isNative)
25
+ return 'unsupported';
26
+ if ((typeof CC_ANDROID !== 'undefined' && CC_ANDROID)
27
+ || (typeof cc !== 'undefined' && ((_a = cc.sys) === null || _a === void 0 ? void 0 : _a.os) === cc.sys.OS_ANDROID))
28
+ return 'android';
29
+ if ((typeof CC_IOS !== 'undefined' && CC_IOS)
30
+ || (typeof cc !== 'undefined' && ((_b = cc.sys) === null || _b === void 0 ? void 0 : _b.os) === cc.sys.OS_IOS))
31
+ return 'ios';
32
+ return 'unsupported';
33
+ }
34
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../../src/creator2/transport.ts"],"names":[],"mappings":";;;AAAA,qDAAsF;AAGtF;IAAA;QACW,aAAQ,GAAsC,uBAAuB,EAAE,CAAC;IAgBnF,CAAC;IAdC,oCAAM,GAAN,UAAoB,MAAc,EAAE,OAAiB;QACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa;YAAE,OAAO,SAAS,CAAC;QACtD,IAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpE,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAC7B,gCAAgC,EAChC,QAAQ,EACR,0DAA0D,EAC1D,MAAM,EACN,IAAI,CACL;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO,IAAA,qCAAsB,EAAI,GAAG,CAAC,CAAC;IACxC,CAAC;IACH,0BAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,kDAAmB;AAmBhC,SAAS,uBAAuB;;IAC9B,IAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC;IACzF,IAAI,CAAC,QAAQ;QAAE,OAAO,aAAa,CAAC;IACpC,IACE,CAAC,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC;WAC9C,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,IACE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC;WACtC,CAAC,OAAO,EAAE,KAAK,WAAW,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,0CAAE,EAAE,MAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { FTLogger, FTRUM, FTTrace } from './modules.js';
2
+ import type { FTAutoTrackingController } from './client.js';
3
+ import type { FTAutoTrackingConfig, FTAttributes } from './types.js';
4
+ export interface FTEngineTrackingHooks {
5
+ onSceneChanged(callback: (name: string) => void, includeCurrent?: boolean): () => void;
6
+ onAction(callback: (name: string, attributes?: FTAttributes) => void): () => void;
7
+ }
8
+ interface FTGlobalWithFetch {
9
+ fetch?: typeof fetch;
10
+ XMLHttpRequest?: typeof XMLHttpRequest;
11
+ console?: Console;
12
+ addEventListener?: typeof globalThis.addEventListener;
13
+ removeEventListener?: typeof globalThis.removeEventListener;
14
+ }
15
+ export declare class FTDefaultAutoTracking implements FTAutoTrackingController {
16
+ private readonly rum;
17
+ private readonly logger;
18
+ private readonly trace;
19
+ private readonly hooks;
20
+ private readonly target;
21
+ private stops;
22
+ private activeView;
23
+ constructor(rum: FTRUM, logger: FTLogger, trace: FTTrace, hooks: FTEngineTrackingHooks, target?: FTGlobalWithFetch);
24
+ start(config: FTAutoTrackingConfig, viewName?: string): void;
25
+ stop(): void;
26
+ private installSceneTracking;
27
+ private switchView;
28
+ private installActionTracking;
29
+ private installErrorTracking;
30
+ private installConsoleTracking;
31
+ private installFetchTracking;
32
+ private installXhrTracking;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=auto-tracking.d.ts.map
@@ -0,0 +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,MAAM,aAAa,CAAC;AAC5D,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;IAKlE,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;IARzB,OAAO,CAAC,KAAK,CAAyB;IACtC,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,GAAG,IAAI;IAa5D,IAAI,IAAI,IAAI;IAQZ,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;CAuD3B"}
@@ -0,0 +1,247 @@
1
+ export class FTDefaultAutoTracking {
2
+ constructor(rum, logger, trace, hooks, target = globalThis) {
3
+ this.rum = rum;
4
+ this.logger = logger;
5
+ this.trace = trace;
6
+ this.hooks = hooks;
7
+ this.target = target;
8
+ this.stops = [];
9
+ }
10
+ start(config, viewName) {
11
+ this.stop();
12
+ if (viewName)
13
+ this.switchView(viewName);
14
+ if (config.scenes)
15
+ this.installSceneTracking(viewName === undefined);
16
+ if (config.actions)
17
+ this.installActionTracking();
18
+ if (config.errors)
19
+ this.installErrorTracking();
20
+ if (config.console)
21
+ this.installConsoleTracking();
22
+ if (config.network) {
23
+ this.installFetchTracking();
24
+ this.installXhrTracking();
25
+ }
26
+ }
27
+ stop() {
28
+ this.stops.splice(0).reverse().forEach((stop) => stop());
29
+ if (this.activeView) {
30
+ this.rum.stopView();
31
+ this.activeView = undefined;
32
+ }
33
+ }
34
+ installSceneTracking(includeCurrent) {
35
+ this.stops.push(this.hooks.onSceneChanged((name) => {
36
+ this.switchView(name);
37
+ }, includeCurrent));
38
+ }
39
+ switchView(name) {
40
+ if (this.activeView)
41
+ this.rum.stopView();
42
+ this.activeView = name;
43
+ this.rum.startView(name);
44
+ }
45
+ installActionTracking() {
46
+ this.stops.push(this.hooks.onAction((name, attributes) => this.rum.startAction(name, 'click', attributes)));
47
+ }
48
+ installErrorTracking() {
49
+ if (!this.target.addEventListener || !this.target.removeEventListener)
50
+ return;
51
+ const errorListener = (event) => {
52
+ var _a;
53
+ const errorEvent = event;
54
+ this.rum.addError(errorEvent.message || 'Uncaught JavaScript error', ((_a = errorEvent.error) === null || _a === void 0 ? void 0 : _a.stack) || `${errorEvent.filename || ''}:${errorEvent.lineno || 0}`);
55
+ };
56
+ const rejectionListener = (event) => {
57
+ const reason = event.reason;
58
+ this.rum.addError(reason instanceof Error ? reason.message : String(reason), reason instanceof Error ? reason.stack || '' : '', 'unhandled_promise_rejection');
59
+ };
60
+ this.target.addEventListener('error', errorListener);
61
+ this.target.addEventListener('unhandledrejection', rejectionListener);
62
+ this.stops.push(() => {
63
+ var _a, _b, _c, _d;
64
+ (_b = (_a = this.target).removeEventListener) === null || _b === void 0 ? void 0 : _b.call(_a, 'error', errorListener);
65
+ (_d = (_c = this.target).removeEventListener) === null || _d === void 0 ? void 0 : _d.call(_c, 'unhandledrejection', rejectionListener);
66
+ });
67
+ }
68
+ installConsoleTracking() {
69
+ const consoleObject = this.target.console;
70
+ if (!consoleObject)
71
+ return;
72
+ const methods = [
73
+ 'log',
74
+ 'info',
75
+ 'warn',
76
+ 'error',
77
+ ];
78
+ const originals = new Map();
79
+ methods.forEach((method) => {
80
+ const original = consoleObject[method].bind(consoleObject);
81
+ originals.set(method, original);
82
+ consoleObject[method] = ((...args) => {
83
+ original(...args);
84
+ const level = method === 'warn' ? 'warning' : method === 'error' ? 'error' : 'info';
85
+ this.logger.log(args.map(stringifyLogValue).join(' '), level);
86
+ });
87
+ });
88
+ this.stops.push(() => {
89
+ methods.forEach((method) => {
90
+ const original = originals.get(method);
91
+ if (original)
92
+ consoleObject[method] = original;
93
+ });
94
+ });
95
+ }
96
+ installFetchTracking() {
97
+ const original = this.target.fetch;
98
+ if (!original)
99
+ return;
100
+ const tracked = (async (input, init) => {
101
+ const inputObject = typeof input === 'object' ? input : undefined;
102
+ const url = typeof input === 'string' ? input : (inputObject === null || inputObject === void 0 ? void 0 : inputObject.url) || String(input);
103
+ const method = (init === null || init === void 0 ? void 0 : init.method) || (inputObject === null || inputObject === void 0 ? void 0 : inputObject.method) || 'GET';
104
+ const key = resourceKey();
105
+ const headers = createHeaders((init === null || init === void 0 ? void 0 : init.headers) || (inputObject === null || inputObject === void 0 ? void 0 : inputObject.headers));
106
+ forEachOwn(this.trace.getHeaders(url, key), (name, value) => setHeader(headers, name, value));
107
+ this.rum.startResource(key);
108
+ const start = nowNs();
109
+ try {
110
+ const response = await original(input, { ...init, headers });
111
+ const end = nowNs();
112
+ this.rum.stopResource(key);
113
+ this.rum.addResource(key, {
114
+ url,
115
+ httpMethod: method,
116
+ requestHeaders: headersToObject(headers),
117
+ responseHeaders: headersToObject(response.headers),
118
+ statusCode: response.status,
119
+ }, { fetchStartTime: start, responseStartTime: end, responseEndTime: end });
120
+ return response;
121
+ }
122
+ catch (error) {
123
+ this.rum.stopResource(key);
124
+ this.rum.addError(String(error), error instanceof Error ? error.stack || '' : '', 'network_error');
125
+ throw error;
126
+ }
127
+ });
128
+ this.target.fetch = tracked;
129
+ this.stops.push(() => {
130
+ this.target.fetch = original;
131
+ });
132
+ }
133
+ installXhrTracking() {
134
+ const Xhr = this.target.XMLHttpRequest;
135
+ if (!Xhr)
136
+ return;
137
+ const open = Xhr.prototype.open;
138
+ const send = Xhr.prototype.send;
139
+ const setRequestHeader = Xhr.prototype.setRequestHeader;
140
+ const metadata = new WeakMap();
141
+ const rum = this.rum;
142
+ const trace = this.trace;
143
+ Xhr.prototype.open = function trackedOpen(method, url, ...rest) {
144
+ metadata.set(this, { key: resourceKey(), method, url: String(url), headers: {} });
145
+ open.call(this, method, url, ...rest);
146
+ };
147
+ Xhr.prototype.setRequestHeader = function trackedHeader(name, value) {
148
+ const data = metadata.get(this);
149
+ if (data)
150
+ data.headers[name] = value;
151
+ setRequestHeader.call(this, name, value);
152
+ };
153
+ Xhr.prototype.send = function trackedSend(body) {
154
+ const data = metadata.get(this);
155
+ if (!data)
156
+ return send.call(this, body);
157
+ forEachOwn(trace.getHeaders(data.url, data.key), (name, value) => {
158
+ data.headers[name] = value;
159
+ setRequestHeader.call(this, name, value);
160
+ });
161
+ const started = nowNs();
162
+ rum.startResource(data.key);
163
+ this.addEventListener('loadend', () => {
164
+ const ended = nowNs();
165
+ rum.stopResource(data.key);
166
+ rum.addResource(data.key, {
167
+ url: data.url,
168
+ httpMethod: data.method,
169
+ requestHeaders: data.headers,
170
+ responseHeaders: parseXhrHeaders(this.getAllResponseHeaders()),
171
+ statusCode: this.status,
172
+ }, { fetchStartTime: started, responseStartTime: ended, responseEndTime: ended });
173
+ }, { once: true });
174
+ send.call(this, body);
175
+ };
176
+ this.stops.push(() => {
177
+ Xhr.prototype.open = open;
178
+ Xhr.prototype.send = send;
179
+ Xhr.prototype.setRequestHeader = setRequestHeader;
180
+ });
181
+ }
182
+ }
183
+ function nowNs() {
184
+ return Date.now() * 1000000;
185
+ }
186
+ let resourceSequence = 0;
187
+ function resourceKey() {
188
+ resourceSequence = (resourceSequence + 1) % Number.MAX_SAFE_INTEGER;
189
+ return `cocos-${Date.now().toString(36)}-${resourceSequence.toString(36)}`;
190
+ }
191
+ function createHeaders(source) {
192
+ const HeadersConstructor = globalThis.Headers;
193
+ if (HeadersConstructor)
194
+ return new HeadersConstructor(source);
195
+ const result = {};
196
+ if (Array.isArray(source)) {
197
+ source.forEach(([name, value]) => { result[name] = String(value); });
198
+ }
199
+ else if (source && typeof source.forEach === 'function') {
200
+ source.forEach((value, name) => { result[name] = value; });
201
+ }
202
+ else if (source) {
203
+ forEachOwn(source, (name, value) => { result[name] = String(value); });
204
+ }
205
+ return result;
206
+ }
207
+ function setHeader(headers, name, value) {
208
+ if (typeof headers.set === 'function')
209
+ headers.set(name, value);
210
+ else
211
+ headers[name] = value;
212
+ }
213
+ function headersToObject(headers) {
214
+ const result = {};
215
+ if (typeof headers.forEach === 'function') {
216
+ headers.forEach((value, key) => { result[key] = value; });
217
+ }
218
+ else {
219
+ forEachOwn(headers, (key, value) => { result[key] = value; });
220
+ }
221
+ return result;
222
+ }
223
+ function forEachOwn(value, callback) {
224
+ Object.keys(value).forEach((key) => callback(key, value[key]));
225
+ }
226
+ function parseXhrHeaders(raw) {
227
+ const result = {};
228
+ raw.trim().split(/[\r\n]+/).forEach((line) => {
229
+ const index = line.indexOf(':');
230
+ if (index > 0)
231
+ result[line.slice(0, index).trim()] = line.slice(index + 1).trim();
232
+ });
233
+ return result;
234
+ }
235
+ function stringifyLogValue(value) {
236
+ if (typeof value === 'string')
237
+ return value;
238
+ if (value instanceof Error)
239
+ return `${value.message}\n${value.stack || ''}`;
240
+ try {
241
+ return JSON.stringify(value);
242
+ }
243
+ catch (_a) {
244
+ return String(value);
245
+ }
246
+ }
247
+ //# sourceMappingURL=auto-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-tracking.js","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"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"}