@cloudcare/cocos-session-replay 0.1.0-alpha.6 → 0.1.0-alpha.8

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 (69) hide show
  1. package/README.md +64 -1
  2. package/dist/creator2/core/client.d.ts +57 -0
  3. package/dist/creator2/core/client.d.ts.map +1 -1
  4. package/dist/creator2/core/client.js +58 -2
  5. package/dist/creator2/core/client.js.map +1 -1
  6. package/dist/creator2/core/replay-diagnostics.d.ts +3 -5
  7. package/dist/creator2/core/replay-diagnostics.d.ts.map +1 -1
  8. package/dist/creator2/core/replay-diagnostics.js.map +1 -1
  9. package/dist/creator2/core/replay-encoding.d.ts +2 -0
  10. package/dist/creator2/core/replay-encoding.d.ts.map +1 -1
  11. package/dist/creator2/core/replay-encoding.js +4 -1
  12. package/dist/creator2/core/replay-encoding.js.map +1 -1
  13. package/dist/creator2/core/replay.d.ts +3 -2
  14. package/dist/creator2/core/replay.d.ts.map +1 -1
  15. package/dist/creator2/core/replay.js +56 -50
  16. package/dist/creator2/core/replay.js.map +1 -1
  17. package/dist/creator2/core/types.d.ts +17 -11
  18. package/dist/creator2/core/types.d.ts.map +1 -1
  19. package/dist/creator2/core/validation.d.ts +2 -2
  20. package/dist/creator2/core/validation.d.ts.map +1 -1
  21. package/dist/creator2/core/validation.js +40 -14
  22. package/dist/creator2/core/validation.js.map +1 -1
  23. package/dist/creator2/core/version.d.ts +1 -1
  24. package/dist/creator2/core/version.js +1 -1
  25. package/dist/creator3/core/client.d.ts +57 -0
  26. package/dist/creator3/core/client.d.ts.map +1 -1
  27. package/dist/creator3/core/client.js +59 -3
  28. package/dist/creator3/core/client.js.map +1 -1
  29. package/dist/creator3/core/replay-diagnostics.d.ts +3 -5
  30. package/dist/creator3/core/replay-diagnostics.d.ts.map +1 -1
  31. package/dist/creator3/core/replay-diagnostics.js.map +1 -1
  32. package/dist/creator3/core/replay-encoding.d.ts +2 -0
  33. package/dist/creator3/core/replay-encoding.d.ts.map +1 -1
  34. package/dist/creator3/core/replay-encoding.js +4 -1
  35. package/dist/creator3/core/replay-encoding.js.map +1 -1
  36. package/dist/creator3/core/replay.d.ts +3 -2
  37. package/dist/creator3/core/replay.d.ts.map +1 -1
  38. package/dist/creator3/core/replay.js +76 -65
  39. package/dist/creator3/core/replay.js.map +1 -1
  40. package/dist/creator3/core/types.d.ts +17 -11
  41. package/dist/creator3/core/types.d.ts.map +1 -1
  42. package/dist/creator3/core/validation.d.ts +2 -2
  43. package/dist/creator3/core/validation.d.ts.map +1 -1
  44. package/dist/creator3/core/validation.js +26 -14
  45. package/dist/creator3/core/validation.js.map +1 -1
  46. package/dist/creator3/core/version.d.ts +1 -1
  47. package/dist/creator3/core/version.js +1 -1
  48. package/dist/creator3/creator3/capture.d.ts +8 -0
  49. package/dist/creator3/creator3/capture.d.ts.map +1 -1
  50. package/dist/creator3/creator3/capture.js +171 -40
  51. package/dist/creator3/creator3/capture.js.map +1 -1
  52. package/dist/creator3/creator3/pointer.d.ts +3 -1
  53. package/dist/creator3/creator3/pointer.d.ts.map +1 -1
  54. package/dist/creator3/creator3/pointer.js +63 -8
  55. package/dist/creator3/creator3/pointer.js.map +1 -1
  56. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosReplayBridge.java +13 -2
  57. package/native/ios/FTCocosReplayBridge.m +18 -2
  58. package/native/ios/FTCocosReplayBridge.podspec +4 -4
  59. package/native/ios/Package.swift +3 -3
  60. package/native-integration.json +4 -4
  61. package/package.json +2 -2
  62. package/dist/creator2/core/replay-budget.d.ts +0 -28
  63. package/dist/creator2/core/replay-budget.d.ts.map +0 -1
  64. package/dist/creator2/core/replay-budget.js +0 -126
  65. package/dist/creator2/core/replay-budget.js.map +0 -1
  66. package/dist/creator3/core/replay-budget.d.ts +0 -28
  67. package/dist/creator3/core/replay-budget.d.ts.map +0 -1
  68. package/dist/creator3/core/replay-budget.js +0 -118
  69. package/dist/creator3/core/replay-budget.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/capture.ts"],"names":[],"mappings":"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"}
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: (event: FTReplayPointerEvent) => void): () => void;
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,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,MAAM,IAAI;CAY7E"}
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 onStart = (event) => callback(replayPointer(event, 'down'));
5
- const onEnd = (event) => callback(replayPointer(event, 'up'));
6
- input.on(Input.EventType.TOUCH_START, onStart);
7
- input.on(Input.EventType.TOUCH_END, onEnd);
8
- input.on(Input.EventType.TOUCH_CANCEL, onEnd);
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
- input.off(Input.EventType.TOUCH_START, onStart);
11
- input.off(Input.EventType.TOUCH_END, onEnd);
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;AAGxC,MAAM,OAAO,uBAAuB;IAClC,eAAe,CAAC,QAA+C;QAC7D,MAAM,OAAO,GAAG,CAAC,KAAU,EAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,CAAC,KAAU,EAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACzE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE;YACV,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAU,EAAE,SAAwB;;IACzD,MAAM,QAAQ,GAAG,CAAA,MAAA,KAAK,CAAC,aAAa,qDAAI,MAAI,MAAA,KAAK,CAAC,WAAW,qDAAI,CAAA,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpF,MAAM,IAAI,GAAG,CAAA,MAAA,IAAI,CAAC,cAAc,oDAAI,KAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,gBAAgB,oDAAI,KAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,OAAO;QACL,SAAS;QACT,SAAS,EAAE,MAAA,MAAA,MAAA,KAAK,CAAC,KAAK,qDAAI,mCAAI,MAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,kDAAI,mCAAI,CAAC;QACzD,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pointer.js","sourceRoot":"","sources":["../../../../../src/session-replay/creator3/pointer.ts"],"names":[],"mappings":"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"}
@@ -108,8 +108,10 @@ public final class FTCocosReplayBridge {
108
108
 
109
109
  private static void configureReplay(JSONObject json) throws Exception {
110
110
  FTSessionReplayConfig config = new FTSessionReplayConfig();
111
- if (json.has("sampleRate")) config.setSampleRate((float) json.getDouble("sampleRate"));
112
- if (json.has("sessionOnErrorSampleRate")) config.setSessionReplayOnErrorSampleRate((float) json.getDouble("sessionOnErrorSampleRate"));
111
+ if (json.has("sessionReplaySamplingRate")) config.setSessionReplaySamplingRate(samplingPercentage(json, "sessionReplaySamplingRate"));
112
+ else if (json.has("sampleRate")) config.setSampleRate((float) json.getDouble("sampleRate"));
113
+ if (json.has("sessionReplayOnErrorSamplingRate")) config.setSessionReplayOnErrorSamplingRate(samplingPercentage(json, "sessionReplayOnErrorSamplingRate"));
114
+ else if (json.has("sessionOnErrorSampleRate")) config.setSessionReplayOnErrorSampleRate((float) json.getDouble("sessionOnErrorSampleRate"));
113
115
  if ("show".equals(json.optString("touchPrivacy"))) config.setTouchPrivacy(TouchPrivacy.SHOW);
114
116
  config.setInternalCallback(new SessionReplayInternalCallback() {
115
117
  @Override public Activity getCurrentActivity() { return FTBridgeTransport.resolveActivity(); }
@@ -120,6 +122,15 @@ public final class FTCocosReplayBridge {
120
122
  FTSdk.initSessionReplayConfig(config);
121
123
  }
122
124
 
125
+ private static float samplingPercentage(JSONObject json, String key) throws Exception {
126
+ double percentage = json.getDouble(key);
127
+ if (Double.isNaN(percentage) || Double.isInfinite(percentage)
128
+ || percentage < 0d || percentage > 100d) {
129
+ throw new IllegalArgumentException(key + " must be between 0 and 100");
130
+ }
131
+ return (float) percentage;
132
+ }
133
+
123
134
  private static String saveReplayImage(JSONObject json) throws Exception {
124
135
  byte[] bytes = readFile(new File(json.getString("path")));
125
136
  return SessionReplayManager.get().saveFlutterImageResource(bytes, json.getInt("width"), json.getInt("height"));
@@ -41,8 +41,16 @@
41
41
  if ([method isEqualToString:@"replay.configure"]) {
42
42
  FTSessionReplayConfig *config = [[FTSessionReplayConfig alloc] init];
43
43
  [self ensureExternalReplayAPIForConfig:config];
44
- if (arguments[@"sampleRate"]) config.sampleRate = [self percent:arguments[@"sampleRate"]];
45
- if (arguments[@"sessionOnErrorSampleRate"]) config.sessionReplayOnErrorSampleRate = [self percent:arguments[@"sessionOnErrorSampleRate"]];
44
+ if (arguments[@"sessionReplaySamplingRate"]) {
45
+ config.sessionReplaySamplingRate = [self samplingPercentage:arguments[@"sessionReplaySamplingRate"] field:@"sessionReplaySamplingRate"];
46
+ } else if (arguments[@"sampleRate"]) {
47
+ config.sampleRate = [self percent:arguments[@"sampleRate"]];
48
+ }
49
+ if (arguments[@"sessionReplayOnErrorSamplingRate"]) {
50
+ config.sessionReplayOnErrorSamplingRate = [self samplingPercentage:arguments[@"sessionReplayOnErrorSamplingRate"] field:@"sessionReplayOnErrorSamplingRate"];
51
+ } else if (arguments[@"sessionOnErrorSampleRate"]) {
52
+ config.sessionReplayOnErrorSampleRate = [self percent:arguments[@"sessionOnErrorSampleRate"]];
53
+ }
46
54
  if ([[self text:arguments[@"touchPrivacy"]] isEqualToString:@"show"]) config.touchPrivacy = FTTouchPrivacyLevelShow;
47
55
  SEL externalMode = NSSelectorFromString(@"setExternalRecorderMode:");
48
56
  ((void (*)(id, SEL, BOOL))objc_msgSend)(config, externalMode, YES);
@@ -268,6 +276,14 @@
268
276
  return (int)lround(MIN(1.0, MAX(0.0, number.doubleValue)) * 100.0);
269
277
  }
270
278
 
279
+ + (float)samplingPercentage:(NSNumber *)number field:(NSString *)fieldName {
280
+ double percentage = number.doubleValue;
281
+ if (!isfinite(percentage) || percentage < 0.0 || percentage > 100.0) {
282
+ [self fail:[NSString stringWithFormat:@"%@ must be between 0 and 100", fieldName]];
283
+ }
284
+ return (float)percentage;
285
+ }
286
+
271
287
  + (void)fail:(NSString *)message {
272
288
  @throw [NSException exceptionWithName:@"FTCocosBridgeError" reason:message userInfo:nil];
273
289
  }
@@ -1,18 +1,18 @@
1
1
  Pod::Spec.new do |s|
2
2
  s.name = 'FTCocosReplayBridge'
3
- s.version = '0.1.0-alpha.6'
3
+ s.version = '0.1.0-alpha.8'
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' }
7
7
  s.author = { 'Guance Cloud' => 'support@guance.com' }
8
8
  s.source = { :path => '.' }
9
- s.platform = :ios, '12.0'
9
+ s.platform = :ios, '15.0'
10
10
  s.source_files = 'FTCocosReplayBridge.{h,m}', 'FTCocosReplayImageJobs.{h,m}'
11
11
  s.public_header_files = 'FTCocosReplayBridge.h'
12
12
  s.requires_arc = true
13
13
  # Cocos resolves FTCocosReplayBridge by class name at runtime, so no direct symbol
14
14
  # reference would otherwise keep the Objective-C category/class in the app.
15
15
  s.user_target_xcconfig = { 'OTHER_LDFLAGS' => '$(inherited) -ObjC' }
16
- s.dependency 'GuanceSDK/FTSessionReplay', '1.6.8-alpha.5'
17
- s.dependency 'GuanceSDK/Agent', '1.6.8-alpha.5'
16
+ s.dependency 'GuanceSDK/FTSessionReplay', '1.6.8-alpha.11'
17
+ s.dependency 'GuanceSDK/Agent', '1.6.8-alpha.11'
18
18
  end
@@ -1,12 +1,12 @@
1
- // swift-tools-version:5.3
1
+ // swift-tools-version:5.5
2
2
  import PackageDescription
3
3
 
4
4
  let package = Package(
5
5
  name: "FTCocosReplayBridge",
6
- platforms: [.iOS(.v12)],
6
+ platforms: [.iOS(.v15)],
7
7
  products: [.library(name: "FTCocosReplayBridge", targets: ["FTCocosReplayBridge"])],
8
8
  dependencies: [
9
- .package(url: "https://github.com/GuanceCloud/datakit-ios.git", .exact("1.6.8-alpha.5")),
9
+ .package(url: "https://github.com/GuanceCloud/datakit-ios.git", .exact("1.6.8-alpha.11")),
10
10
  ],
11
11
  targets: [
12
12
  .target(
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "name": "@cloudcare/cocos-session-replay",
4
- "version": "0.1.0-alpha.6",
5
- "baseVersion": "0.1.0-alpha.6",
6
- "iosSdkVersion": "1.6.8-alpha.5",
7
- "androidReplay": "com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:0.1.9-alpha03",
4
+ "version": "0.1.0-alpha.8",
5
+ "baseVersion": "0.1.0-alpha.8",
6
+ "iosSdkVersion": "1.6.8-alpha.11",
7
+ "androidReplay": "com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:0.1.9-alpha07",
8
8
  "androidFragment": "androidx.fragment:fragment:1.8.0"
9
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/cocos-session-replay",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.1.0-alpha.8",
4
4
  "description": "Optional Session Replay for the Guance Cocos Creator SDK",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Guance Cloud",
@@ -53,6 +53,6 @@
53
53
  "access": "public"
54
54
  },
55
55
  "peerDependencies": {
56
- "@cloudcare/cocos-sdk": "0.1.0-alpha.6"
56
+ "@cloudcare/cocos-sdk": "0.1.0-alpha.8"
57
57
  }
58
58
  }
@@ -1,28 +0,0 @@
1
- import type { FTResolvedReplayImagePolicy } from './validation.js';
2
- export declare const REPLAY_KEY_FRAME_BURST_BYTES: number;
3
- export interface FTReplayCaptureDecision {
4
- allowed: boolean;
5
- compressionQuality: number;
6
- maxImageDimension: number;
7
- maxFrameBytes: number;
8
- usedBytes: number;
9
- priority: boolean;
10
- reason?: 'budget' | 'throttle';
11
- }
12
- /** Rolling image budget. Segment and pointer bytes intentionally remain outside this controller. */
13
- export declare class FTReplayBudget {
14
- private readonly policy;
15
- private entries;
16
- private lastCaptureAttempt;
17
- private burstKeys;
18
- private pressure;
19
- constructor(policy: FTResolvedReplayImagePolicy);
20
- reset(): void;
21
- decide(timestamp: number, priorityKey?: string): FTReplayCaptureDecision;
22
- record(timestamp: number, byteSize: number, priorityKey?: string): void;
23
- usedBytes(timestamp: number): number;
24
- private prune;
25
- private decision;
26
- private updatePressure;
27
- }
28
- //# sourceMappingURL=replay-budget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-budget.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/replay-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAInE,eAAO,MAAM,4BAA4B,QAAa,CAAC;AAOvD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAChC;AAED,oGAAoG;AACpG,qBAAa,cAAc;IAMb,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAA4D;gBAE/C,MAAM,EAAE,2BAA2B;IAEhE,KAAK,IAAI,IAAI;IAOb,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB;IA6CxE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAUvE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKpC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,cAAc;CA0BvB"}
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.FTReplayBudget = exports.REPLAY_KEY_FRAME_BURST_BYTES = void 0;
15
- var WINDOW_MS = 60000;
16
- var THROTTLED_CAPTURE_INTERVAL_MS = 2000;
17
- exports.REPLAY_KEY_FRAME_BURST_BYTES = 100 * 1024;
18
- /** Rolling image budget. Segment and pointer bytes intentionally remain outside this controller. */
19
- var FTReplayBudget = /** @class */ (function () {
20
- function FTReplayBudget(policy) {
21
- this.policy = policy;
22
- this.entries = [];
23
- this.burstKeys = [];
24
- this.pressure = 'normal';
25
- }
26
- FTReplayBudget.prototype.reset = function () {
27
- this.entries = [];
28
- this.lastCaptureAttempt = undefined;
29
- this.burstKeys = [];
30
- this.pressure = 'normal';
31
- };
32
- FTReplayBudget.prototype.decide = function (timestamp, priorityKey) {
33
- var used = this.usedBytes(timestamp);
34
- var ratio = used / this.policy.maxBytesPerMinute;
35
- this.updatePressure(ratio);
36
- var hasBurst = priorityKey !== undefined && !this.burstKeys.includes(priorityKey);
37
- if (ratio >= 1 && !hasBurst)
38
- return this.decision(false, 0, used, hasBurst, 'budget');
39
- var lastImage = this.entries[this.entries.length - 1];
40
- // Pace successful images from the start instead of spending most of the
41
- // minute's budget in its first seconds. Reserve 10% for size variation and
42
- // key frames; their existing burst allowance remains independent.
43
- var sustainableInterval = lastImage
44
- ? Math.min(lastImage.byteSize, this.policy.maxFrameBytes) * WINDOW_MS
45
- / (this.policy.maxBytesPerMinute * 0.9)
46
- : 0;
47
- if (this.policy.adaptiveCapture
48
- && lastImage
49
- && timestamp - lastImage.timestamp < sustainableInterval
50
- && !hasBurst)
51
- return this.decision(false, 0, used, hasBurst, 'throttle');
52
- if (this.policy.adaptiveCapture
53
- && this.pressure !== 'normal'
54
- && this.lastCaptureAttempt !== undefined
55
- && timestamp - this.lastCaptureAttempt < THROTTLED_CAPTURE_INTERVAL_MS
56
- && !hasBurst) {
57
- return this.decision(false, 0, used, hasBurst, 'throttle');
58
- }
59
- this.lastCaptureAttempt = timestamp;
60
- var normalRemaining = Math.max(0, this.policy.maxBytesPerMinute - used);
61
- var available = normalRemaining + (hasBurst ? exports.REPLAY_KEY_FRAME_BURST_BYTES : 0);
62
- var frameLimit = hasBurst
63
- ? Math.min(Math.max(this.policy.maxFrameBytes, exports.REPLAY_KEY_FRAME_BURST_BYTES), available)
64
- : Math.min(this.policy.maxFrameBytes, available);
65
- return this.decision(frameLimit >= 1024, frameLimit, used, hasBurst, frameLimit >= 1024 ? undefined : 'budget');
66
- };
67
- FTReplayBudget.prototype.record = function (timestamp, byteSize, priorityKey) {
68
- if (!Number.isFinite(byteSize) || byteSize <= 0)
69
- return;
70
- this.prune(timestamp);
71
- this.entries.push({ timestamp: timestamp, byteSize: Math.round(byteSize) });
72
- if (priorityKey && !this.burstKeys.includes(priorityKey)) {
73
- this.burstKeys.push(priorityKey);
74
- if (this.burstKeys.length > 64)
75
- this.burstKeys.shift();
76
- }
77
- };
78
- FTReplayBudget.prototype.usedBytes = function (timestamp) {
79
- this.prune(timestamp);
80
- return this.entries.reduce(function (total, entry) { return total + entry.byteSize; }, 0);
81
- };
82
- FTReplayBudget.prototype.prune = function (timestamp) {
83
- var cutoff = timestamp - WINDOW_MS;
84
- while (this.entries.length > 0 && this.entries[0].timestamp <= cutoff)
85
- this.entries.shift();
86
- };
87
- FTReplayBudget.prototype.decision = function (allowed, maxFrameBytes, usedBytes, priority, reason) {
88
- var degraded = this.policy.adaptiveCapture
89
- && (this.pressure === 'degraded' || this.pressure === 'paused');
90
- return __assign({ allowed: allowed, compressionQuality: degraded
91
- ? Math.max(0.25, Math.round(this.policy.compressionQuality * 0.75 * 100) / 100)
92
- : this.policy.compressionQuality, maxImageDimension: degraded
93
- ? Math.min(this.policy.maxImageDimension, Math.max(240, Math.floor(this.policy.maxImageDimension * 0.75)))
94
- : this.policy.maxImageDimension, maxFrameBytes: Math.max(0, Math.floor(maxFrameBytes)), usedBytes: usedBytes, priority: priority }, (reason ? { reason: reason } : {}));
95
- };
96
- FTReplayBudget.prototype.updatePressure = function (ratio) {
97
- if (!this.policy.adaptiveCapture) {
98
- this.pressure = 'normal';
99
- return;
100
- }
101
- if (ratio >= 1) {
102
- this.pressure = 'paused';
103
- return;
104
- }
105
- if (ratio >= 0.9) {
106
- this.pressure = 'degraded';
107
- return;
108
- }
109
- if (this.pressure === 'paused' || this.pressure === 'degraded') {
110
- if (ratio >= 0.8) {
111
- this.pressure = 'degraded';
112
- return;
113
- }
114
- }
115
- if (ratio >= 0.75) {
116
- this.pressure = 'throttled';
117
- return;
118
- }
119
- if (this.pressure === 'throttled' && ratio >= 0.65)
120
- return;
121
- this.pressure = 'normal';
122
- };
123
- return FTReplayBudget;
124
- }());
125
- exports.FTReplayBudget = FTReplayBudget;
126
- //# sourceMappingURL=replay-budget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-budget.js","sourceRoot":"","sources":["../../../../../src/session-replay/core/replay-budget.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import type { FTResolvedReplayImagePolicy } from './validation.js';
2
- export declare const REPLAY_KEY_FRAME_BURST_BYTES: number;
3
- export interface FTReplayCaptureDecision {
4
- allowed: boolean;
5
- compressionQuality: number;
6
- maxImageDimension: number;
7
- maxFrameBytes: number;
8
- usedBytes: number;
9
- priority: boolean;
10
- reason?: 'budget' | 'throttle';
11
- }
12
- /** Rolling image budget. Segment and pointer bytes intentionally remain outside this controller. */
13
- export declare class FTReplayBudget {
14
- private readonly policy;
15
- private entries;
16
- private lastCaptureAttempt;
17
- private burstKeys;
18
- private pressure;
19
- constructor(policy: FTResolvedReplayImagePolicy);
20
- reset(): void;
21
- decide(timestamp: number, priorityKey?: string): FTReplayCaptureDecision;
22
- record(timestamp: number, byteSize: number, priorityKey?: string): void;
23
- usedBytes(timestamp: number): number;
24
- private prune;
25
- private decision;
26
- private updatePressure;
27
- }
28
- //# sourceMappingURL=replay-budget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-budget.d.ts","sourceRoot":"","sources":["../../../../../src/session-replay/core/replay-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAInE,eAAO,MAAM,4BAA4B,QAAa,CAAC;AAOvD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAChC;AAED,oGAAoG;AACpG,qBAAa,cAAc;IAMb,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAA4D;gBAE/C,MAAM,EAAE,2BAA2B;IAEhE,KAAK,IAAI,IAAI;IAOb,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB;IA6CxE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAUvE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKpC,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,cAAc;CA0BvB"}
@@ -1,118 +0,0 @@
1
- const WINDOW_MS = 60000;
2
- const THROTTLED_CAPTURE_INTERVAL_MS = 2000;
3
- export const REPLAY_KEY_FRAME_BURST_BYTES = 100 * 1024;
4
- /** Rolling image budget. Segment and pointer bytes intentionally remain outside this controller. */
5
- export class FTReplayBudget {
6
- constructor(policy) {
7
- this.policy = policy;
8
- this.entries = [];
9
- this.burstKeys = [];
10
- this.pressure = 'normal';
11
- }
12
- reset() {
13
- this.entries = [];
14
- this.lastCaptureAttempt = undefined;
15
- this.burstKeys = [];
16
- this.pressure = 'normal';
17
- }
18
- decide(timestamp, priorityKey) {
19
- const used = this.usedBytes(timestamp);
20
- const ratio = used / this.policy.maxBytesPerMinute;
21
- this.updatePressure(ratio);
22
- const hasBurst = priorityKey !== undefined && !this.burstKeys.includes(priorityKey);
23
- if (ratio >= 1 && !hasBurst)
24
- return this.decision(false, 0, used, hasBurst, 'budget');
25
- const lastImage = this.entries[this.entries.length - 1];
26
- // Pace successful images from the start instead of spending most of the
27
- // minute's budget in its first seconds. Reserve 10% for size variation and
28
- // key frames; their existing burst allowance remains independent.
29
- const sustainableInterval = lastImage
30
- ? Math.min(lastImage.byteSize, this.policy.maxFrameBytes) * WINDOW_MS
31
- / (this.policy.maxBytesPerMinute * 0.9)
32
- : 0;
33
- if (this.policy.adaptiveCapture
34
- && lastImage
35
- && timestamp - lastImage.timestamp < sustainableInterval
36
- && !hasBurst)
37
- return this.decision(false, 0, used, hasBurst, 'throttle');
38
- if (this.policy.adaptiveCapture
39
- && this.pressure !== 'normal'
40
- && this.lastCaptureAttempt !== undefined
41
- && timestamp - this.lastCaptureAttempt < THROTTLED_CAPTURE_INTERVAL_MS
42
- && !hasBurst) {
43
- return this.decision(false, 0, used, hasBurst, 'throttle');
44
- }
45
- this.lastCaptureAttempt = timestamp;
46
- const normalRemaining = Math.max(0, this.policy.maxBytesPerMinute - used);
47
- const available = normalRemaining + (hasBurst ? REPLAY_KEY_FRAME_BURST_BYTES : 0);
48
- const frameLimit = hasBurst
49
- ? Math.min(Math.max(this.policy.maxFrameBytes, REPLAY_KEY_FRAME_BURST_BYTES), available)
50
- : Math.min(this.policy.maxFrameBytes, available);
51
- return this.decision(frameLimit >= 1024, frameLimit, used, hasBurst, frameLimit >= 1024 ? undefined : 'budget');
52
- }
53
- record(timestamp, byteSize, priorityKey) {
54
- if (!Number.isFinite(byteSize) || byteSize <= 0)
55
- return;
56
- this.prune(timestamp);
57
- this.entries.push({ timestamp, byteSize: Math.round(byteSize) });
58
- if (priorityKey && !this.burstKeys.includes(priorityKey)) {
59
- this.burstKeys.push(priorityKey);
60
- if (this.burstKeys.length > 64)
61
- this.burstKeys.shift();
62
- }
63
- }
64
- usedBytes(timestamp) {
65
- this.prune(timestamp);
66
- return this.entries.reduce((total, entry) => total + entry.byteSize, 0);
67
- }
68
- prune(timestamp) {
69
- const cutoff = timestamp - WINDOW_MS;
70
- while (this.entries.length > 0 && this.entries[0].timestamp <= cutoff)
71
- this.entries.shift();
72
- }
73
- decision(allowed, maxFrameBytes, usedBytes, priority, reason) {
74
- const degraded = this.policy.adaptiveCapture
75
- && (this.pressure === 'degraded' || this.pressure === 'paused');
76
- return {
77
- allowed,
78
- compressionQuality: degraded
79
- ? Math.max(0.25, Math.round(this.policy.compressionQuality * 0.75 * 100) / 100)
80
- : this.policy.compressionQuality,
81
- maxImageDimension: degraded
82
- ? Math.min(this.policy.maxImageDimension, Math.max(240, Math.floor(this.policy.maxImageDimension * 0.75)))
83
- : this.policy.maxImageDimension,
84
- maxFrameBytes: Math.max(0, Math.floor(maxFrameBytes)),
85
- usedBytes,
86
- priority,
87
- ...(reason ? { reason } : {}),
88
- };
89
- }
90
- updatePressure(ratio) {
91
- if (!this.policy.adaptiveCapture) {
92
- this.pressure = 'normal';
93
- return;
94
- }
95
- if (ratio >= 1) {
96
- this.pressure = 'paused';
97
- return;
98
- }
99
- if (ratio >= 0.9) {
100
- this.pressure = 'degraded';
101
- return;
102
- }
103
- if (this.pressure === 'paused' || this.pressure === 'degraded') {
104
- if (ratio >= 0.8) {
105
- this.pressure = 'degraded';
106
- return;
107
- }
108
- }
109
- if (ratio >= 0.75) {
110
- this.pressure = 'throttled';
111
- return;
112
- }
113
- if (this.pressure === 'throttled' && ratio >= 0.65)
114
- return;
115
- this.pressure = 'normal';
116
- }
117
- }
118
- //# sourceMappingURL=replay-budget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-budget.js","sourceRoot":"","sources":["../../../../../src/session-replay/core/replay-budget.ts"],"names":[],"mappings":"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"}