@kubesense/kubesense-browser-core 1.6.0 → 1.7.0

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/cjs/boot/init.js CHANGED
@@ -7,7 +7,7 @@ const monitor_1 = require("../tools/monitor");
7
7
  const display_1 = require("../tools/display");
8
8
  function makePublicApi(stub) {
9
9
  const publicApi = {
10
- version: "1.6.0",
10
+ version: "1.7.0",
11
11
  // This API method is intentionally not monitored, since the only thing executed is the
12
12
  // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and
13
13
  // we don't want to interfere with the user uncaught exceptions.
@@ -33,9 +33,20 @@ function createPageMayExitObservable(configuration) {
33
33
  const stopBeforeUnloadListener = (0, addEventListener_1.addEventListener)(configuration, window, "beforeunload" /* DOM_EVENT.BEFORE_UNLOAD */, () => {
34
34
  observable.notify({ reason: exports.PageExitReason.UNLOADING });
35
35
  }).stop;
36
+ /**
37
+ * Fires when the page is actually going away — a closed tab, a navigation,
38
+ * or a move into the bfcache — and unlike beforeunload it is not skipped on
39
+ * mobile or when the browser discards the tab. It does not fire on a plain
40
+ * tab switch, so it says "this page is done" in a way visibilitychange
41
+ * cannot.
42
+ */
43
+ const stopPageHideListener = (0, addEventListener_1.addEventListener)(configuration, window, "pagehide" /* DOM_EVENT.PAGE_HIDE */, () => {
44
+ observable.notify({ reason: exports.PageExitReason.PAGEHIDE });
45
+ }).stop;
36
46
  return () => {
37
47
  stopListeners();
38
48
  stopBeforeUnloadListener();
49
+ stopPageHideListener();
39
50
  };
40
51
  });
41
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pageMayExitObservable.js","sourceRoot":"","sources":["../../src/browser/pageMayExitObservable.ts"],"names":[],"mappings":";;;AAkBA,kEAiCC;AAED,4CAEC;AAvDD,oDAAgD;AAChD,wDAAuD;AAEvD,yDAAmF;AAEtE,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,aAAa;CACb,CAAA;AAQV,SAAgB,2BAA2B,CAAC,aAA4B;IACtE,OAAO,IAAI,uBAAU,CAAmB,CAAC,UAAU,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,oCAAiB,EAC/C,aAAa,EACb,MAAM,EACN,uFAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,IAAI,yDAAgC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACxF;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,oCAAqB,EAAE,CAAC;gBAC3C;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;QAED,MAAM,wBAAwB,GAAG,IAAA,mCAAgB,EAAC,aAAa,EAAE,MAAM,gDAA2B,GAAG,EAAE;YACrG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,SAAS,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP,OAAO,GAAG,EAAE;YACV,aAAa,EAAE,CAAA;YACf,wBAAwB,EAAE,CAAA;QAC5B,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,IAAA,wBAAY,EAAC,sBAAc,CAAC,CAAC,QAAQ,CAAC,MAAwB,CAAC,CAAA;AACxE,CAAC"}
1
+ {"version":3,"file":"pageMayExitObservable.js","sourceRoot":"","sources":["../../src/browser/pageMayExitObservable.ts"],"names":[],"mappings":";;;AAkBA,kEA6CC;AAED,4CAEC;AAnED,oDAAgD;AAChD,wDAAuD;AAEvD,yDAAmF;AAEtE,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,aAAa;CACb,CAAA;AAQV,SAAgB,2BAA2B,CAAC,aAA4B;IACtE,OAAO,IAAI,uBAAU,CAAmB,CAAC,UAAU,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAA,oCAAiB,EAC/C,aAAa,EACb,MAAM,EACN,uFAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,IAAI,yDAAgC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACxF;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,oCAAqB,EAAE,CAAC;gBAC3C;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;QAED,MAAM,wBAAwB,GAAG,IAAA,mCAAgB,EAAC,aAAa,EAAE,MAAM,gDAA2B,GAAG,EAAE;YACrG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,SAAS,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP;;;;;;WAMG;QACH,MAAM,oBAAoB,GAAG,IAAA,mCAAgB,EAAC,aAAa,EAAE,MAAM,wCAAuB,GAAG,EAAE;YAC7F,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,sBAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP,OAAO,GAAG,EAAE;YACV,aAAa,EAAE,CAAA;YACf,wBAAwB,EAAE,CAAA;YAC1B,oBAAoB,EAAE,CAAA;QACxB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,IAAA,wBAAY,EAAC,sBAAc,CAAC,CAAC,QAAQ,CAAC,MAAwB,CAAC,CAAA;AACxE,CAAC"}
@@ -45,7 +45,7 @@ function buildEndpointParameters({ clientToken, internalAnalyticsSubdomain, sour
45
45
  const parameters = [
46
46
  `ksource=${source}`,
47
47
  `kubesense-api-key=${clientToken}`,
48
- `kubesense-evp-origin-version=${encodeURIComponent("1.6.0")}`,
48
+ `kubesense-evp-origin-version=${encodeURIComponent("1.7.0")}`,
49
49
  'kubesense-evp-origin=browser',
50
50
  `kubesense-request-id=${(0, stringUtils_1.generateUUID)()}`,
51
51
  ].concat(extraParameters);
@@ -3,12 +3,16 @@ export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g';
3
3
  export interface NetworkInformation {
4
4
  type?: NetworkInterface;
5
5
  effectiveType?: EffectiveType;
6
+ rtt?: number;
7
+ downlink?: number;
6
8
  saveData: boolean;
7
9
  }
8
10
  export interface Connectivity {
9
11
  status: 'connected' | 'not_connected';
10
12
  interfaces?: NetworkInterface[];
11
13
  effective_type?: EffectiveType;
14
+ rtt?: number;
15
+ downlink?: number;
12
16
  [key: string]: unknown;
13
17
  }
14
18
  export declare function getConnectivity(): Connectivity;
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getConnectivity = getConnectivity;
4
4
  const globalObject_1 = require("../../tools/globalObject");
5
5
  function getConnectivity() {
6
- var _a;
6
+ var _a, _b, _c;
7
7
  const navigator = globalObject_1.globalObject.navigator;
8
8
  return {
9
9
  status: navigator.onLine ? 'connected' : 'not_connected',
10
10
  interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : ['unknown'],
11
11
  effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,
12
+ rtt: (_b = navigator.connection) === null || _b === void 0 ? void 0 : _b.rtt,
13
+ downlink: (_c = navigator.connection) === null || _c === void 0 ? void 0 : _c.downlink,
12
14
  };
13
15
  }
14
16
  //# sourceMappingURL=connectivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../../../src/domain/connectivity/connectivity.ts"],"names":[],"mappings":";;AAsBA,0CAQC;AA9BD,2DAAuD;AAsBvD,SAAgB,eAAe;;IAC7B,MAAM,SAAS,GAAG,2BAAY,CAAC,SAA6B,CAAA;IAE5D,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QACxD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,cAAc,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,aAAa;KACpD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../../../src/domain/connectivity/connectivity.ts"],"names":[],"mappings":";;AA0BA,0CAUC;AApCD,2DAAuD;AA0BvD,SAAgB,eAAe;;IAC7B,MAAM,SAAS,GAAG,2BAAY,CAAC,SAA6B,CAAA;IAE5D,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QACxD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,cAAc,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,aAAa;QACnD,GAAG,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,GAAG;QAC9B,QAAQ,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,QAAQ;KACzC,CAAA;AACH,CAAC"}
@@ -9,7 +9,7 @@ const display_1 = require("../tools/display");
9
9
  exports.TAG_SIZE_LIMIT = 200;
10
10
  function buildTags(configuration) {
11
11
  const { env, service, version, datacenter, sdkVersion, variant } = configuration;
12
- const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : "1.6.0")];
12
+ const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : "1.7.0")];
13
13
  if (env) {
14
14
  tags.push(buildTag('env', env));
15
15
  }
@@ -109,7 +109,7 @@ function startTelemetryCollection(telemetryService, configuration, hooks, observ
109
109
  type: 'telemetry',
110
110
  date: clockNow.timeStamp,
111
111
  service: telemetryService,
112
- version: "1.6.0",
112
+ version: "1.7.0",
113
113
  source: 'browser',
114
114
  _kubesense: {
115
115
  format_version: 2,
package/esm/boot/init.js CHANGED
@@ -3,7 +3,7 @@ import { setDebugMode } from '../tools/monitor';
3
3
  import { display } from '../tools/display';
4
4
  export function makePublicApi(stub) {
5
5
  const publicApi = {
6
- version: "1.6.0",
6
+ version: "1.7.0",
7
7
  // This API method is intentionally not monitored, since the only thing executed is the
8
8
  // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and
9
9
  // we don't want to interfere with the user uncaught exceptions.
@@ -28,9 +28,20 @@ export function createPageMayExitObservable(configuration) {
28
28
  const stopBeforeUnloadListener = addEventListener(configuration, window, "beforeunload" /* DOM_EVENT.BEFORE_UNLOAD */, () => {
29
29
  observable.notify({ reason: PageExitReason.UNLOADING });
30
30
  }).stop;
31
+ /**
32
+ * Fires when the page is actually going away — a closed tab, a navigation,
33
+ * or a move into the bfcache — and unlike beforeunload it is not skipped on
34
+ * mobile or when the browser discards the tab. It does not fire on a plain
35
+ * tab switch, so it says "this page is done" in a way visibilitychange
36
+ * cannot.
37
+ */
38
+ const stopPageHideListener = addEventListener(configuration, window, "pagehide" /* DOM_EVENT.PAGE_HIDE */, () => {
39
+ observable.notify({ reason: PageExitReason.PAGEHIDE });
40
+ }).stop;
31
41
  return () => {
32
42
  stopListeners();
33
43
  stopBeforeUnloadListener();
44
+ stopPageHideListener();
34
45
  };
35
46
  });
36
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pageMayExitObservable.js","sourceRoot":"","sources":["../../src/browser/pageMayExitObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAa,MAAM,oBAAoB,CAAA;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,aAAa;CACb,CAAA;AAQV,MAAM,UAAU,2BAA2B,CAAC,aAA4B;IACtE,OAAO,IAAI,UAAU,CAAmB,CAAC,UAAU,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAC/C,aAAa,EACb,MAAM,EACN,uFAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,IAAI,yDAAgC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACxF;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,oCAAqB,EAAE,CAAC;gBAC3C;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;QAED,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,gDAA2B,GAAG,EAAE;YACrG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP,OAAO,GAAG,EAAE;YACV,aAAa,EAAE,CAAA;YACf,wBAAwB,EAAE,CAAA;QAC5B,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAwB,CAAC,CAAA;AACxE,CAAC"}
1
+ {"version":3,"file":"pageMayExitObservable.js","sourceRoot":"","sources":["../../src/browser/pageMayExitObservable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAa,MAAM,oBAAoB,CAAA;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,aAAa;CACb,CAAA;AAQV,MAAM,UAAU,2BAA2B,CAAC,aAA4B;IACtE,OAAO,IAAI,UAAU,CAAmB,CAAC,UAAU,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAC/C,aAAa,EACb,MAAM,EACN,uFAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,CAAC,IAAI,yDAAgC,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACxF;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,oCAAqB,EAAE,CAAC;gBAC3C;;;mBAGG;gBACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;QAED,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,gDAA2B,GAAG,EAAE;YACrG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP;;;;;;WAMG;QACH,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,wCAAuB,GAAG,EAAE;YAC7F,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxD,CAAC,CAAC,CAAC,IAAI,CAAA;QAEP,OAAO,GAAG,EAAE;YACV,aAAa,EAAE,CAAA;YACf,wBAAwB,EAAE,CAAA;YAC1B,oBAAoB,EAAE,CAAA;QACxB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAwB,CAAC,CAAA;AACxE,CAAC"}
@@ -41,7 +41,7 @@ function buildEndpointParameters({ clientToken, internalAnalyticsSubdomain, sour
41
41
  const parameters = [
42
42
  `ksource=${source}`,
43
43
  `kubesense-api-key=${clientToken}`,
44
- `kubesense-evp-origin-version=${encodeURIComponent("1.6.0")}`,
44
+ `kubesense-evp-origin-version=${encodeURIComponent("1.7.0")}`,
45
45
  'kubesense-evp-origin=browser',
46
46
  `kubesense-request-id=${generateUUID()}`,
47
47
  ].concat(extraParameters);
@@ -3,12 +3,16 @@ export type EffectiveType = 'slow-2g' | '2g' | '3g' | '4g';
3
3
  export interface NetworkInformation {
4
4
  type?: NetworkInterface;
5
5
  effectiveType?: EffectiveType;
6
+ rtt?: number;
7
+ downlink?: number;
6
8
  saveData: boolean;
7
9
  }
8
10
  export interface Connectivity {
9
11
  status: 'connected' | 'not_connected';
10
12
  interfaces?: NetworkInterface[];
11
13
  effective_type?: EffectiveType;
14
+ rtt?: number;
15
+ downlink?: number;
12
16
  [key: string]: unknown;
13
17
  }
14
18
  export declare function getConnectivity(): Connectivity;
@@ -1,11 +1,13 @@
1
1
  import { globalObject } from '../../tools/globalObject';
2
2
  export function getConnectivity() {
3
- var _a;
3
+ var _a, _b, _c;
4
4
  const navigator = globalObject.navigator;
5
5
  return {
6
6
  status: navigator.onLine ? 'connected' : 'not_connected',
7
7
  interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : ['unknown'],
8
8
  effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType,
9
+ rtt: (_b = navigator.connection) === null || _b === void 0 ? void 0 : _b.rtt,
10
+ downlink: (_c = navigator.connection) === null || _c === void 0 ? void 0 : _c.downlink,
9
11
  };
10
12
  }
11
13
  //# sourceMappingURL=connectivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../../../src/domain/connectivity/connectivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAsBvD,MAAM,UAAU,eAAe;;IAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,SAA6B,CAAA;IAE5D,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QACxD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,cAAc,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,aAAa;KACpD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../../../src/domain/connectivity/connectivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AA0BvD,MAAM,UAAU,eAAe;;IAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,SAA6B,CAAA;IAE5D,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QACxD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,cAAc,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,aAAa;QACnD,GAAG,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,GAAG;QAC9B,QAAQ,EAAE,MAAA,SAAS,CAAC,UAAU,0CAAE,QAAQ;KACzC,CAAA;AACH,CAAC"}
@@ -2,7 +2,7 @@ import { DOCS_ORIGIN, MORE_DETAILS, display } from '../tools/display';
2
2
  export const TAG_SIZE_LIMIT = 200;
3
3
  export function buildTags(configuration) {
4
4
  const { env, service, version, datacenter, sdkVersion, variant } = configuration;
5
- const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : "1.6.0")];
5
+ const tags = [buildTag('sdk_version', sdkVersion !== null && sdkVersion !== void 0 ? sdkVersion : "1.7.0")];
6
6
  if (env) {
7
7
  tags.push(buildTag('env', env));
8
8
  }
@@ -96,7 +96,7 @@ export function startTelemetryCollection(telemetryService, configuration, hooks,
96
96
  type: 'telemetry',
97
97
  date: clockNow.timeStamp,
98
98
  service: telemetryService,
99
- version: "1.6.0",
99
+ version: "1.7.0",
100
100
  source: 'browser',
101
101
  _kubesense: {
102
102
  format_version: 2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubesense/kubesense-browser-core",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Core utilities shared across the Kubesense Browser SDK (session management, transport, configuration, and context).",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -35,5 +35,5 @@
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  },
38
- "gitHead": "5b90a5a0ea4ee972c079b9a55c45d05c44f14688"
38
+ "gitHead": "4fbd31e2193c63405fc075f032f4d0d6a16c1baf"
39
39
  }
@@ -44,9 +44,21 @@ export function createPageMayExitObservable(configuration: Configuration): Obser
44
44
  observable.notify({ reason: PageExitReason.UNLOADING })
45
45
  }).stop
46
46
 
47
+ /**
48
+ * Fires when the page is actually going away — a closed tab, a navigation,
49
+ * or a move into the bfcache — and unlike beforeunload it is not skipped on
50
+ * mobile or when the browser discards the tab. It does not fire on a plain
51
+ * tab switch, so it says "this page is done" in a way visibilitychange
52
+ * cannot.
53
+ */
54
+ const stopPageHideListener = addEventListener(configuration, window, DOM_EVENT.PAGE_HIDE, () => {
55
+ observable.notify({ reason: PageExitReason.PAGEHIDE })
56
+ }).stop
57
+
47
58
  return () => {
48
59
  stopListeners()
49
60
  stopBeforeUnloadListener()
61
+ stopPageHideListener()
50
62
  }
51
63
  })
52
64
  }
@@ -10,6 +10,8 @@ interface BrowserNavigator extends Navigator {
10
10
  export interface NetworkInformation {
11
11
  type?: NetworkInterface
12
12
  effectiveType?: EffectiveType
13
+ rtt?: number
14
+ downlink?: number
13
15
  saveData: boolean
14
16
  }
15
17
 
@@ -17,15 +19,19 @@ export interface Connectivity {
17
19
  status: 'connected' | 'not_connected'
18
20
  interfaces?: NetworkInterface[]
19
21
  effective_type?: EffectiveType
22
+ rtt?: number
23
+ downlink?: number
20
24
  [key: string]: unknown
21
25
  }
22
26
 
23
27
  export function getConnectivity(): Connectivity {
24
28
  const navigator = globalObject.navigator as BrowserNavigator
25
-
29
+
26
30
  return {
27
31
  status: navigator.onLine ? 'connected' : 'not_connected',
28
32
  interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : ['unknown'],
29
33
  effective_type: navigator.connection?.effectiveType,
34
+ rtt: navigator.connection?.rtt,
35
+ downlink: navigator.connection?.downlink,
30
36
  }
31
37
  }