@cloudcare/cocos-session-replay 0.1.0-alpha.6 → 0.1.0-alpha.7
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.
- package/README.md +51 -0
- package/dist/creator2/core/client.d.ts +57 -0
- package/dist/creator2/core/client.d.ts.map +1 -1
- package/dist/creator2/core/client.js +57 -0
- package/dist/creator2/core/client.js.map +1 -1
- package/dist/creator2/core/replay-diagnostics.d.ts +3 -5
- package/dist/creator2/core/replay-diagnostics.d.ts.map +1 -1
- package/dist/creator2/core/replay-diagnostics.js.map +1 -1
- package/dist/creator2/core/replay-encoding.d.ts +2 -0
- package/dist/creator2/core/replay-encoding.d.ts.map +1 -1
- package/dist/creator2/core/replay-encoding.js +4 -1
- package/dist/creator2/core/replay-encoding.js.map +1 -1
- package/dist/creator2/core/replay.d.ts +3 -2
- package/dist/creator2/core/replay.d.ts.map +1 -1
- package/dist/creator2/core/replay.js +53 -46
- package/dist/creator2/core/replay.js.map +1 -1
- package/dist/creator2/core/types.d.ts +5 -9
- package/dist/creator2/core/types.d.ts.map +1 -1
- package/dist/creator2/core/validation.d.ts +0 -2
- package/dist/creator2/core/validation.d.ts.map +1 -1
- package/dist/creator2/core/validation.js +1 -14
- package/dist/creator2/core/validation.js.map +1 -1
- package/dist/creator2/core/version.d.ts +1 -1
- package/dist/creator2/core/version.js +1 -1
- package/dist/creator3/core/client.d.ts +57 -0
- package/dist/creator3/core/client.d.ts.map +1 -1
- package/dist/creator3/core/client.js +57 -0
- package/dist/creator3/core/client.js.map +1 -1
- package/dist/creator3/core/replay-diagnostics.d.ts +3 -5
- package/dist/creator3/core/replay-diagnostics.d.ts.map +1 -1
- package/dist/creator3/core/replay-diagnostics.js.map +1 -1
- package/dist/creator3/core/replay-encoding.d.ts +2 -0
- package/dist/creator3/core/replay-encoding.d.ts.map +1 -1
- package/dist/creator3/core/replay-encoding.js +4 -1
- package/dist/creator3/core/replay-encoding.js.map +1 -1
- package/dist/creator3/core/replay.d.ts +3 -2
- package/dist/creator3/core/replay.d.ts.map +1 -1
- package/dist/creator3/core/replay.js +72 -60
- package/dist/creator3/core/replay.js.map +1 -1
- package/dist/creator3/core/types.d.ts +5 -9
- package/dist/creator3/core/types.d.ts.map +1 -1
- package/dist/creator3/core/validation.d.ts +0 -2
- package/dist/creator3/core/validation.d.ts.map +1 -1
- package/dist/creator3/core/validation.js +1 -14
- package/dist/creator3/core/validation.js.map +1 -1
- package/dist/creator3/core/version.d.ts +1 -1
- package/dist/creator3/core/version.js +1 -1
- package/dist/creator3/creator3/capture.d.ts +8 -0
- package/dist/creator3/creator3/capture.d.ts.map +1 -1
- package/dist/creator3/creator3/capture.js +171 -40
- package/dist/creator3/creator3/capture.js.map +1 -1
- package/dist/creator3/creator3/pointer.d.ts +3 -1
- package/dist/creator3/creator3/pointer.d.ts.map +1 -1
- package/dist/creator3/creator3/pointer.js +63 -8
- package/dist/creator3/creator3/pointer.js.map +1 -1
- package/native/ios/FTCocosReplayBridge.podspec +1 -1
- package/native-integration.json +2 -2
- package/package.json +2 -2
- package/dist/creator2/core/replay-budget.d.ts +0 -28
- package/dist/creator2/core/replay-budget.d.ts.map +0 -1
- package/dist/creator2/core/replay-budget.js +0 -126
- package/dist/creator2/core/replay-budget.js.map +0 -1
- package/dist/creator3/core/replay-budget.d.ts +0 -28
- package/dist/creator3/core/replay-budget.d.ts.map +0 -1
- package/dist/creator3/core/replay-budget.js +0 -118
- package/dist/creator3/core/replay-budget.js.map +0 -1
|
@@ -5,16 +5,12 @@ export type FTReplayPrivacyMode = 'mask' | 'hide' | 'unmask';
|
|
|
5
5
|
export type FTReplayTouchPrivacy = 'show' | 'hide';
|
|
6
6
|
/** Image quality preset used by Cocos Session Replay. */
|
|
7
7
|
export type FTReplayQuality = 'low' | 'medium' | 'high';
|
|
8
|
-
/**
|
|
8
|
+
/** Per-image encoding controls for Cocos Session Replay. */
|
|
9
9
|
export interface FTReplayImagePolicy {
|
|
10
|
-
/** Compression,
|
|
10
|
+
/** Compression, dimension, and per-image size preset. @defaultValue `'medium'` */
|
|
11
11
|
quality?: FTReplayQuality;
|
|
12
|
-
/** Maximum encoded bytes for a
|
|
12
|
+
/** Maximum encoded bytes for every image, including the first frame of a view. Accepts 1024 to 1048576. Requires the native V2 image encoder. */
|
|
13
13
|
maxFrameBytes?: number;
|
|
14
|
-
/** Maximum encoded image bytes retained in a rolling 60-second window. */
|
|
15
|
-
maxBytesPerMinute?: number;
|
|
16
|
-
/** Paces captures to the image budget and adapts quality and size as it fills. @defaultValue `true` */
|
|
17
|
-
adaptiveCapture?: boolean;
|
|
18
14
|
}
|
|
19
15
|
/** Session Replay configuration for standalone Cocos applications. */
|
|
20
16
|
export interface FTSessionReplayConfig {
|
|
@@ -26,7 +22,7 @@ export interface FTSessionReplayConfig {
|
|
|
26
22
|
captureFps?: number;
|
|
27
23
|
/** Maximum width or height of a captured frame. Accepts `1` to `2048`. @defaultValue `720` */
|
|
28
24
|
maxImageDimension?: number;
|
|
29
|
-
/**
|
|
25
|
+
/** Enables per-image compression and size limits. Requires the native V2 image encoder; no rolling traffic limit is applied. */
|
|
30
26
|
imagePolicy?: FTReplayImagePolicy;
|
|
31
27
|
/** Whether captured replays include touch positions. @defaultValue `'hide'` */
|
|
32
28
|
touchPrivacy?: FTReplayTouchPrivacy;
|
|
@@ -37,7 +33,7 @@ export interface FTHybridSessionReplayConfig {
|
|
|
37
33
|
captureFps?: number;
|
|
38
34
|
/** Maximum width or height of a captured frame. Accepts `1` to `2048`. @defaultValue `720` */
|
|
39
35
|
maxImageDimension?: number;
|
|
40
|
-
/**
|
|
36
|
+
/** Enables per-image compression and size limits. Requires the native V2 image encoder; no rolling traffic limit is applied. */
|
|
41
37
|
imagePolicy?: FTReplayImagePolicy;
|
|
42
38
|
/** Whether captured replays include touch positions. @defaultValue `'hide'` */
|
|
43
39
|
touchPrivacy?: FTReplayTouchPrivacy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExG,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7D,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExG,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7D,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,kFAAkF;IAClF,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,iJAAiJ;IACjJ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gIAAgI;IAChI,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,uFAAuF;AACvF,MAAM,WAAW,2BAA2B;IAC1C,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gIAAgI;IAChI,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;CAC9C;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;CACpC;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IAAG,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAAE;AAC9F,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IAAG,MAAM,CAAC,EAAE,2BAA2B,CAAC;CAAE"}
|
|
@@ -6,8 +6,6 @@ export interface FTResolvedReplayImagePolicy {
|
|
|
6
6
|
compressionQuality: number;
|
|
7
7
|
maxImageDimension: number;
|
|
8
8
|
maxFrameBytes: number;
|
|
9
|
-
maxBytesPerMinute: number;
|
|
10
|
-
adaptiveCapture: boolean;
|
|
11
9
|
}
|
|
12
10
|
export declare function replayImagePolicy(config: FTHybridSessionReplayConfig): FTResolvedReplayImagePolicy;
|
|
13
11
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM5D;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,eAAe,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM5D;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,eAAe,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAoBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,GAAG,2BAA2B,CAiBlG"}
|
|
@@ -18,48 +18,35 @@ const REPLAY_IMAGE_PRESETS = {
|
|
|
18
18
|
compressionQuality: 0.35,
|
|
19
19
|
maxImageDimension: 480,
|
|
20
20
|
maxFrameBytes: 20 * 1024,
|
|
21
|
-
maxBytesPerMinute: Math.round(0.6 * 1024 * 1024),
|
|
22
21
|
},
|
|
23
22
|
medium: {
|
|
24
23
|
compressionQuality: 0.45,
|
|
25
24
|
maxImageDimension: 720,
|
|
26
25
|
maxFrameBytes: 40 * 1024,
|
|
27
|
-
maxBytesPerMinute: Math.round(1.5 * 1024 * 1024),
|
|
28
26
|
},
|
|
29
27
|
high: {
|
|
30
28
|
compressionQuality: 0.6,
|
|
31
29
|
maxImageDimension: 960,
|
|
32
30
|
maxFrameBytes: 80 * 1024,
|
|
33
|
-
maxBytesPerMinute: 4 * 1024 * 1024,
|
|
34
31
|
},
|
|
35
32
|
};
|
|
36
33
|
export function replayImagePolicy(config) {
|
|
37
|
-
var _a, _b, _c
|
|
34
|
+
var _a, _b, _c;
|
|
38
35
|
const policy = config.imagePolicy || {};
|
|
39
36
|
const quality = (_a = policy.quality) !== null && _a !== void 0 ? _a : 'medium';
|
|
40
37
|
if (!(quality in REPLAY_IMAGE_PRESETS)) {
|
|
41
38
|
throw new TypeError("imagePolicy.quality must be 'low', 'medium', or 'high'");
|
|
42
39
|
}
|
|
43
|
-
if (policy.adaptiveCapture !== undefined && typeof policy.adaptiveCapture !== 'boolean') {
|
|
44
|
-
throw new TypeError('imagePolicy.adaptiveCapture must be a boolean');
|
|
45
|
-
}
|
|
46
40
|
const preset = REPLAY_IMAGE_PRESETS[quality];
|
|
47
41
|
const maxImageDimension = (_b = config.maxImageDimension) !== null && _b !== void 0 ? _b : preset.maxImageDimension;
|
|
48
42
|
integerInRange(maxImageDimension, 1, 2048, 'maxImageDimension');
|
|
49
43
|
const maxFrameBytes = (_c = policy.maxFrameBytes) !== null && _c !== void 0 ? _c : preset.maxFrameBytes;
|
|
50
44
|
integerInRange(maxFrameBytes, 1024, 1024 * 1024, 'imagePolicy.maxFrameBytes');
|
|
51
|
-
const maxBytesPerMinute = (_d = policy.maxBytesPerMinute) !== null && _d !== void 0 ? _d : preset.maxBytesPerMinute;
|
|
52
|
-
integerInRange(maxBytesPerMinute, 16 * 1024, 64 * 1024 * 1024, 'imagePolicy.maxBytesPerMinute');
|
|
53
|
-
if (maxFrameBytes > maxBytesPerMinute) {
|
|
54
|
-
throw new RangeError('imagePolicy.maxFrameBytes must not exceed maxBytesPerMinute');
|
|
55
|
-
}
|
|
56
45
|
return {
|
|
57
46
|
quality,
|
|
58
47
|
compressionQuality: preset.compressionQuality,
|
|
59
48
|
maxImageDimension,
|
|
60
49
|
maxFrameBytes,
|
|
61
|
-
maxBytesPerMinute,
|
|
62
|
-
adaptiveCapture: (_e = policy.adaptiveCapture) !== null && _e !== void 0 ? _e : true,
|
|
63
50
|
};
|
|
64
51
|
}
|
|
65
52
|
function integerInRange(value, minimum, maximum, name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../src/session-replay/core/validation.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,KAAyB,EAAE,IAAY;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../src/session-replay/core/validation.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,KAAyB,EAAE,IAAY;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AASD,MAAM,oBAAoB,GAA0E;IAClG,GAAG,EAAE;QACH,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,EAAE,GAAG,IAAI;KACzB;IACD,MAAM,EAAE;QACN,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,EAAE,GAAG,IAAI;KACzB;IACD,IAAI,EAAE;QACJ,kBAAkB,EAAE,GAAG;QACvB,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,EAAE,GAAG,IAAI;KACzB;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAmC;;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,QAAQ,CAAC;IAC3C,IAAI,CAAC,CAAC,OAAO,IAAI,oBAAoB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,iBAAiB,GAAG,MAAA,MAAM,CAAC,iBAAiB,mCAAI,MAAM,CAAC,iBAAiB,CAAC;IAC/E,cAAc,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAA,MAAM,CAAC,aAAa,mCAAI,MAAM,CAAC,aAAa,CAAC;IACnE,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAC9E,OAAO;QACL,OAAO;QACP,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,iBAAiB;QACjB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;IACnF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,+BAA+B,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const FT_COCOS_REPLAY_VERSION = "0.1.0-alpha.
|
|
1
|
+
export declare const FT_COCOS_REPLAY_VERSION = "0.1.0-alpha.7";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const FT_COCOS_REPLAY_VERSION = '0.1.0-alpha.
|
|
1
|
+
export const FT_COCOS_REPLAY_VERSION = '0.1.0-alpha.7';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -3,6 +3,9 @@ import type { FTCapturedFrame, FTReplayPrivacyMode, FTStoredFrame } from '../cor
|
|
|
3
3
|
export declare class FTCreator3CanvasCapture implements FTCanvasCapture {
|
|
4
4
|
private camera;
|
|
5
5
|
private privacy;
|
|
6
|
+
private resources;
|
|
7
|
+
private cancelDraw;
|
|
8
|
+
private capturing;
|
|
6
9
|
setCamera(camera: unknown): void;
|
|
7
10
|
setPrivacy(node: unknown, mode: FTReplayPrivacyMode): void;
|
|
8
11
|
getViewportSize(): {
|
|
@@ -10,6 +13,11 @@ export declare class FTCreator3CanvasCapture implements FTCanvasCapture {
|
|
|
10
13
|
height: number;
|
|
11
14
|
} | undefined;
|
|
12
15
|
capture(maxImageDimension: number): Promise<FTCapturedFrame | undefined>;
|
|
16
|
+
/** Releases reusable GPU resources and settles a capture even if drawing stops. */
|
|
17
|
+
dispose(): void;
|
|
18
|
+
private prepareResources;
|
|
19
|
+
private isCurrent;
|
|
20
|
+
private completeDrawCycle;
|
|
13
21
|
persist(frame: FTCapturedFrame, fingerprint?: string): Promise<FTStoredFrame>;
|
|
14
22
|
disposeStoredFrame(frame: FTStoredFrame): Promise<void>;
|
|
15
23
|
private collectPrivacyRegions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAmB,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAmB,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAoB7G,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAS;IAE1B,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMhC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAK1D,eAAe,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAK1D,OAAO,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAwC9E,mFAAmF;IACnF,OAAO,IAAI,IAAI;IAgBf,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,iBAAiB;IA2BnB,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,SAA+B,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzG,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,OAAO,CAAC,qBAAqB;CA8B9B"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { Camera, Director, EditBox, RenderTexture, UITransform, Vec3, director, native, sys, view } from 'cc';
|
|
1
|
+
import { Camera, Director, EditBox, Node, RenderTexture, UITransform, Vec3, director, isValid, native, sys, view } from 'cc';
|
|
2
2
|
import { frameFingerprint } from '../core/replay.js';
|
|
3
3
|
import { persistReplayFrame, disposeReplayFrame } from '../core/replay-file.js';
|
|
4
4
|
import { projectPrivacyBounds } from '../core/replay-privacy.js';
|
|
5
5
|
import { collectReplayPrivacyNodes } from '../core/replay-privacy-nodes.js';
|
|
6
6
|
import { waitForRenderTextureReadback } from './replay-render-cycle.js';
|
|
7
|
+
const CAPTURE_CANCELLED = Symbol('Replay capture cancelled');
|
|
7
8
|
export class FTCreator3CanvasCapture {
|
|
8
9
|
constructor() {
|
|
9
10
|
this.privacy = new Map();
|
|
11
|
+
this.capturing = false;
|
|
10
12
|
}
|
|
11
13
|
setCamera(camera) {
|
|
14
|
+
if (camera === this.camera)
|
|
15
|
+
return;
|
|
16
|
+
this.dispose();
|
|
12
17
|
this.camera = camera;
|
|
13
18
|
}
|
|
14
19
|
setPrivacy(node, mode) {
|
|
@@ -23,47 +28,166 @@ export class FTCreator3CanvasCapture {
|
|
|
23
28
|
return visible ? { width: visible.width, height: visible.height } : undefined;
|
|
24
29
|
}
|
|
25
30
|
async capture(maxImageDimension) {
|
|
26
|
-
var _a
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
var _a;
|
|
32
|
+
if (this.capturing)
|
|
33
|
+
return undefined;
|
|
34
|
+
const scene = director.getScene();
|
|
35
|
+
const camera = this.camera || (scene === null || scene === void 0 ? void 0 : scene.getComponentsInChildren(Camera).find((candidate) => { var _a; return candidate !== ((_a = this.resources) === null || _a === void 0 ? void 0 : _a.camera) && isValid(candidate, true) && candidate.enabledInHierarchy; }));
|
|
36
|
+
if (!camera || !isValid(camera, true) || !camera.enabledInHierarchy || camera.node.scene !== scene) {
|
|
37
|
+
this.dispose();
|
|
29
38
|
return undefined;
|
|
39
|
+
}
|
|
30
40
|
const visible = this.getViewportSize();
|
|
31
41
|
if (!visible)
|
|
32
42
|
return undefined;
|
|
33
43
|
const scale = Math.min(1, maxImageDimension / Math.max(visible.width, visible.height));
|
|
34
44
|
const width = Math.max(1, Math.round(visible.width * scale));
|
|
35
45
|
const height = Math.max(1, Math.round(visible.height * scale));
|
|
46
|
+
this.capturing = true;
|
|
47
|
+
let resources;
|
|
48
|
+
try {
|
|
49
|
+
resources = this.prepareResources(camera, scene, width, height);
|
|
50
|
+
const target = resources;
|
|
51
|
+
await waitForRenderTextureReadback(() => this.completeDrawCycle(target));
|
|
52
|
+
if (!this.isCurrent(target))
|
|
53
|
+
throw CAPTURE_CANCELLED;
|
|
54
|
+
// Creator 3.8 native JSB allocates the result and ignores the optional
|
|
55
|
+
// caller buffer. Do not allocate another full-size buffer alongside it.
|
|
56
|
+
const pixels = target.texture.readPixels(0, 0, width, height);
|
|
57
|
+
if (!pixels)
|
|
58
|
+
return undefined;
|
|
59
|
+
// Project through the offscreen camera, whose viewport matches the image.
|
|
60
|
+
const privacyRegions = this.collectPrivacyRegions(target.camera, width, height);
|
|
61
|
+
// Metal returns top-down pixels on iOS. Other native targets need row reversal.
|
|
62
|
+
if (sys.os !== ((_a = sys.OS) === null || _a === void 0 ? void 0 : _a.IOS))
|
|
63
|
+
flipRows(pixels, width, height, target.row);
|
|
64
|
+
return { rgba: pixels, width, height, timestamp: Date.now(), privacyRegions };
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
this.dispose();
|
|
68
|
+
if (error === CAPTURE_CANCELLED)
|
|
69
|
+
return undefined;
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
if (resources && isValid(resources.camera, true))
|
|
74
|
+
resources.camera.enabled = false;
|
|
75
|
+
this.capturing = false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Releases reusable GPU resources and settles a capture even if drawing stops. */
|
|
79
|
+
dispose() {
|
|
80
|
+
var _a;
|
|
81
|
+
(_a = this.cancelDraw) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
82
|
+
const target = this.resources;
|
|
83
|
+
this.resources = undefined;
|
|
84
|
+
if (!target)
|
|
85
|
+
return;
|
|
86
|
+
if (isValid(target.camera, true)) {
|
|
87
|
+
target.camera.enabled = false;
|
|
88
|
+
target.camera.targetTexture = null;
|
|
89
|
+
}
|
|
90
|
+
if (isValid(target.node, true)) {
|
|
91
|
+
target.node.active = false;
|
|
92
|
+
target.node.destroy();
|
|
93
|
+
}
|
|
94
|
+
target.texture.destroy();
|
|
95
|
+
}
|
|
96
|
+
prepareResources(source, scene, width, height) {
|
|
97
|
+
var _a;
|
|
98
|
+
const current = this.resources;
|
|
99
|
+
// A camera that preserves its framebuffer must not accumulate previous
|
|
100
|
+
// replay snapshots in a reused target (for example, moving overlay UI).
|
|
101
|
+
const clearsTarget = (source.clearFlags & Camera.ClearFlag.SOLID_COLOR) === Camera.ClearFlag.SOLID_COLOR;
|
|
102
|
+
if (current && this.isCurrent(current) && current.source === source
|
|
103
|
+
&& current.width === width && current.height === height) {
|
|
104
|
+
// Native GLES3 repeated readback of one target can read the screen FBO
|
|
105
|
+
// instead. Keep the isolated camera, but use a fresh target outside iOS;
|
|
106
|
+
// Metal reuse is covered by native screenshot regression checks.
|
|
107
|
+
if (sys.os !== ((_a = sys.OS) === null || _a === void 0 ? void 0 : _a.IOS) || !clearsTarget || !sameViewport(source.rect, current.camera.rect)) {
|
|
108
|
+
const texture = new RenderTexture();
|
|
109
|
+
try {
|
|
110
|
+
texture.reset({ width, height });
|
|
111
|
+
current.camera.targetTexture = texture;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
texture.destroy();
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
current.texture.destroy();
|
|
118
|
+
current.texture = texture;
|
|
119
|
+
}
|
|
120
|
+
return current;
|
|
121
|
+
}
|
|
122
|
+
this.dispose();
|
|
36
123
|
const texture = new RenderTexture();
|
|
37
|
-
|
|
38
|
-
const previous = camera.targetTexture;
|
|
39
|
-
let pixels;
|
|
40
|
-
let privacyRegions = [];
|
|
124
|
+
const node = new Node('FTSessionReplayCamera');
|
|
41
125
|
try {
|
|
126
|
+
texture.reset({ width, height });
|
|
127
|
+
// Create disabled and attach only after assigning the offscreen target.
|
|
128
|
+
// An identity child follows the source pose without touching Canvas or
|
|
129
|
+
// changing the business camera's target, projection, or resize listeners.
|
|
130
|
+
node.active = false;
|
|
131
|
+
const camera = node.addComponent(Camera);
|
|
132
|
+
camera.enabled = false;
|
|
42
133
|
camera.targetTexture = texture;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
134
|
+
node.parent = source.node;
|
|
135
|
+
node.active = true;
|
|
136
|
+
this.resources = {
|
|
137
|
+
source, scene, node, camera, texture, width, height,
|
|
138
|
+
row: new Uint8Array(width * 4),
|
|
139
|
+
};
|
|
140
|
+
return this.resources;
|
|
49
141
|
}
|
|
50
|
-
|
|
51
|
-
|
|
142
|
+
catch (error) {
|
|
143
|
+
node.destroy();
|
|
52
144
|
texture.destroy();
|
|
145
|
+
throw error;
|
|
53
146
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
147
|
+
}
|
|
148
|
+
isCurrent(target) {
|
|
149
|
+
return this.resources === target && director.getScene() === target.scene
|
|
150
|
+
&& isValid(target.source, true) && isValid(target.camera, true)
|
|
151
|
+
&& isValid(target.node, true) && target.source.enabledInHierarchy
|
|
152
|
+
&& target.source.node.scene === target.scene;
|
|
153
|
+
}
|
|
154
|
+
completeDrawCycle(target) {
|
|
155
|
+
return new Promise((resolve, reject) => {
|
|
156
|
+
const finish = (error) => {
|
|
157
|
+
director.off(Director.EVENT_BEFORE_DRAW, before);
|
|
158
|
+
director.off(Director.EVENT_AFTER_DRAW, after);
|
|
159
|
+
if (this.cancelDraw === cancel)
|
|
160
|
+
this.cancelDraw = undefined;
|
|
161
|
+
if (error !== undefined)
|
|
162
|
+
reject(error);
|
|
163
|
+
else
|
|
164
|
+
resolve();
|
|
165
|
+
};
|
|
166
|
+
const cancel = () => finish(CAPTURE_CANCELLED);
|
|
167
|
+
const after = () => finish();
|
|
168
|
+
const before = () => {
|
|
169
|
+
try {
|
|
170
|
+
if (!this.isCurrent(target)) {
|
|
171
|
+
cancel();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
syncCamera(target.source, target.camera);
|
|
175
|
+
target.camera.enabled = true;
|
|
176
|
+
director.once(Director.EVENT_AFTER_DRAW, after);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
finish(error);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
if (!this.isCurrent(target)) {
|
|
183
|
+
cancel();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
this.cancelDraw = cancel;
|
|
187
|
+
// Synchronize inside BEFORE_DRAW, before the render graph is prepared,
|
|
188
|
+
// so camera movement and projection changes match this rendered frame.
|
|
189
|
+
director.once(Director.EVENT_BEFORE_DRAW, before);
|
|
190
|
+
});
|
|
67
191
|
}
|
|
68
192
|
async persist(frame, fingerprint = frameFingerprint(frame.rgba)) {
|
|
69
193
|
return persistReplayFrame(frame, fingerprint, native.fileUtils.getWritablePath());
|
|
@@ -73,7 +197,9 @@ export class FTCreator3CanvasCapture {
|
|
|
73
197
|
}
|
|
74
198
|
collectPrivacyRegions(camera, width, height) {
|
|
75
199
|
const scene = director.getScene();
|
|
76
|
-
const nodes = collectReplayPrivacyNodes(this.privacy,
|
|
200
|
+
const nodes = collectReplayPrivacyNodes(this.privacy,
|
|
201
|
+
// The engine's string lookup cannot express the editor script's custom getter.
|
|
202
|
+
((scene === null || scene === void 0 ? void 0 : scene.getComponentsInChildren('ReplayPrivacy')) || []), (scene === null || scene === void 0 ? void 0 : scene.getComponentsInChildren(EditBox)) || []);
|
|
77
203
|
const regions = [];
|
|
78
204
|
nodes.forEach((mode, node) => {
|
|
79
205
|
var _a, _b, _c, _d;
|
|
@@ -89,18 +215,23 @@ export class FTCreator3CanvasCapture {
|
|
|
89
215
|
return regions;
|
|
90
216
|
}
|
|
91
217
|
}
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
218
|
+
function syncCamera(source, target) {
|
|
219
|
+
// Set fovAxis before fov: Creator adjusts fov when the axis changes.
|
|
220
|
+
for (const key of [
|
|
221
|
+
'projection', 'fovAxis', 'fov', 'orthoHeight', 'near', 'far',
|
|
222
|
+
'visibility', 'priority', 'clearFlags', 'clearColor', 'clearDepth', 'clearStencil',
|
|
223
|
+
'aperture', 'shutter', 'iso', 'usePostProcess', 'postProcess',
|
|
224
|
+
]) {
|
|
225
|
+
if (source[key] !== undefined)
|
|
226
|
+
target[key] = source[key];
|
|
227
|
+
}
|
|
228
|
+
target.rect = source.rect.clone();
|
|
229
|
+
}
|
|
230
|
+
function sameViewport(left, right) {
|
|
231
|
+
return left.x === right.x && left.y === right.y && left.width === right.width && left.height === right.height;
|
|
100
232
|
}
|
|
101
|
-
function flipRows(bytes, width, height) {
|
|
233
|
+
function flipRows(bytes, width, height, swap) {
|
|
102
234
|
const rowSize = width * 4;
|
|
103
|
-
const swap = new Uint8Array(rowSize);
|
|
104
235
|
for (let top = 0, bottom = height - 1; top < bottom; top += 1, bottom -= 1) {
|
|
105
236
|
const topOffset = top * rowSize;
|
|
106
237
|
const bottomOffset = bottom * rowSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { FTReplayPointerEvent, FTReplayPointerSource } from '../core/replay.js';
|
|
2
|
+
type PointerCallback = (event: FTReplayPointerEvent) => void;
|
|
2
3
|
export declare class FTCreator3PointerSource implements FTReplayPointerSource {
|
|
3
|
-
onReplayPointer(callback:
|
|
4
|
+
onReplayPointer(callback: PointerCallback): () => void;
|
|
4
5
|
}
|
|
6
|
+
export {};
|
|
5
7
|
//# sourceMappingURL=pointer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/pointer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErF,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,eAAe,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/pointer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErF,KAAK,eAAe,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAM7D,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;CAkDvD"}
|
|
@@ -1,18 +1,73 @@
|
|
|
1
1
|
import { Input, input, view } from 'cc';
|
|
2
|
+
// Creator has no dispatcher removal API. Install one passive observer per input
|
|
3
|
+
// instance and release all recording callbacks when replay stops.
|
|
4
|
+
const observers = new WeakMap();
|
|
2
5
|
export class FTCreator3PointerSource {
|
|
3
6
|
onReplayPointer(callback) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const engineInput = input;
|
|
8
|
+
if (typeof engineInput._registerEventDispatcher === 'function') {
|
|
9
|
+
let callbacks = observers.get(engineInput);
|
|
10
|
+
if (!callbacks) {
|
|
11
|
+
callbacks = new Set();
|
|
12
|
+
const active = callbacks;
|
|
13
|
+
// This engine-internal hook is also used by Creator's UI dispatcher.
|
|
14
|
+
// Observe before UI consumption without adding hit-testable nodes,
|
|
15
|
+
// changing event flags, or interfering with the business input chain.
|
|
16
|
+
engineInput._registerEventDispatcher({
|
|
17
|
+
priority: Number.MAX_SAFE_INTEGER,
|
|
18
|
+
dispatchEvent(event) {
|
|
19
|
+
if (active.size > 0) {
|
|
20
|
+
const eventType = pointerType(event.type);
|
|
21
|
+
if (eventType) {
|
|
22
|
+
for (const listener of active)
|
|
23
|
+
deliverPointer(listener, event, eventType);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
},
|
|
28
|
+
onThrowException() { },
|
|
29
|
+
});
|
|
30
|
+
observers.set(engineInput, callbacks);
|
|
31
|
+
}
|
|
32
|
+
callbacks.add(callback);
|
|
33
|
+
return () => { callbacks.delete(callback); };
|
|
34
|
+
}
|
|
35
|
+
// Older engines without the dispatcher hook retain global input tracking.
|
|
36
|
+
const listeners = [
|
|
37
|
+
[Input.EventType.TOUCH_START, 'down'],
|
|
38
|
+
[Input.EventType.TOUCH_MOVE, 'move'],
|
|
39
|
+
[Input.EventType.TOUCH_END, 'up'],
|
|
40
|
+
[Input.EventType.TOUCH_CANCEL, 'up'],
|
|
41
|
+
].map(([type, eventType]) => ({
|
|
42
|
+
type,
|
|
43
|
+
handler: (event) => deliverPointer(callback, event, eventType),
|
|
44
|
+
}));
|
|
45
|
+
for (const { type, handler } of listeners)
|
|
46
|
+
input.on(type, handler);
|
|
9
47
|
return () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
input.off(Input.EventType.TOUCH_CANCEL, onEnd);
|
|
48
|
+
for (const { type, handler } of listeners)
|
|
49
|
+
input.off(type, handler);
|
|
13
50
|
};
|
|
14
51
|
}
|
|
15
52
|
}
|
|
53
|
+
function pointerType(type) {
|
|
54
|
+
if (type === Input.EventType.TOUCH_START)
|
|
55
|
+
return 'down';
|
|
56
|
+
if (type === Input.EventType.TOUCH_MOVE)
|
|
57
|
+
return 'move';
|
|
58
|
+
if (type === Input.EventType.TOUCH_END || type === Input.EventType.TOUCH_CANCEL)
|
|
59
|
+
return 'up';
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
function deliverPointer(callback, event, eventType) {
|
|
63
|
+
try {
|
|
64
|
+
callback(replayPointer(event, eventType));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// A replay failure must never abort Creator's remaining input dispatchers.
|
|
68
|
+
console.error('[cocos-sdk] Session Replay pointer dropped:', error);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
16
71
|
function replayPointer(event, eventType) {
|
|
17
72
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
18
73
|
const location = ((_a = event.getUILocation) === null || _a === void 0 ? void 0 : _a.call(event)) || ((_b = event.getLocation) === null || _b === void 0 ? void 0 : _b.call(event)) || { x: 0, y: 0 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/pointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"pointer.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/pointer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Pod::Spec.new do |s|
|
|
2
2
|
s.name = 'FTCocosReplayBridge'
|
|
3
|
-
s.version = '0.1.0-alpha.
|
|
3
|
+
s.version = '0.1.0-alpha.7'
|
|
4
4
|
s.summary = 'CloudCare Mobile SDK native bridge for Cocos Creator.'
|
|
5
5
|
s.homepage = 'https://github.com/GuanceCloud/datakit-cocos'
|
|
6
6
|
s.license = { :type => 'Apache-2.0' }
|
package/native-integration.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "@cloudcare/cocos-session-replay",
|
|
4
|
-
"version": "0.1.0-alpha.
|
|
5
|
-
"baseVersion": "0.1.0-alpha.
|
|
4
|
+
"version": "0.1.0-alpha.7",
|
|
5
|
+
"baseVersion": "0.1.0-alpha.7",
|
|
6
6
|
"iosSdkVersion": "1.6.8-alpha.5",
|
|
7
7
|
"androidReplay": "com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:0.1.9-alpha03",
|
|
8
8
|
"androidFragment": "androidx.fragment:fragment:1.8.0"
|