@cloudcare/browser-core 2.0.17 → 2.0.18

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/init.js CHANGED
@@ -54,19 +54,19 @@ function getGlobalObject() {
54
54
  return globalThis;
55
55
  }
56
56
 
57
- Object.defineProperty(Object.prototype, '_dd_temp_', {
57
+ Object.defineProperty(Object.prototype, '_gc_temp_', {
58
58
  get: function get() {
59
59
  return this;
60
60
  },
61
61
  configurable: true
62
62
  }); // @ts-ignore
63
63
 
64
- var globalObject = _dd_temp_; // @ts-ignore
64
+ var globalObject = _gc_temp_; // @ts-ignore
65
65
 
66
- delete Object.prototype._dd_temp_;
66
+ delete Object.prototype._gc_temp_;
67
67
 
68
68
  if (_typeof(globalObject) !== 'object') {
69
- // on safari _dd_temp_ is available on window but not globally
69
+ // on safari _gc_temp_ is available on window but not globally
70
70
  // fallback on other browser globals check
71
71
  if ((typeof self === "undefined" ? "undefined" : _typeof(self)) === 'object') {
72
72
  globalObject = self;
@@ -7,10 +7,12 @@ exports.startUnhandledErrorCollection = startUnhandledErrorCollection;
7
7
 
8
8
  var _instrumentMethod = require("../helper/instrumentMethod");
9
9
 
10
+ var _tools = require("../helper/tools");
11
+
10
12
  var _computeStackTrace = require("./computeStackTrace");
11
13
 
12
14
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
13
- var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
15
+ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
14
16
  /**
15
17
  * Cross-browser collection of unhandled errors
16
18
  *
@@ -63,40 +65,48 @@ function startUnhandledErrorCollection(callback) {
63
65
 
64
66
  function instrumentOnError(callback) {
65
67
  return (0, _instrumentMethod.instrumentMethodAndCallOriginal)(window, 'onerror', {
66
- before: function before(message, url, lineNo, columnNo, errorObj) {
67
- var stack;
68
+ before: function before(messageObj, url, line, column, errorObj) {
69
+ var stackTrace;
68
70
 
69
- if (errorObj) {
70
- stack = (0, _computeStackTrace.computeStackTrace)(errorObj);
71
- callback(stack, errorObj);
71
+ if (errorObj instanceof Error) {
72
+ stackTrace = (0, _computeStackTrace.computeStackTrace)(errorObj);
72
73
  } else {
73
74
  var location = {
74
75
  url: url,
75
- column: columnNo,
76
- line: lineNo
76
+ column: column,
77
+ line: line
77
78
  };
78
- var name;
79
- var msg = message;
80
-
81
- if ({}.toString.call(message) === '[object String]') {
82
- var groups = ERROR_TYPES_RE.exec(msg);
83
-
84
- if (groups) {
85
- name = groups[1];
86
- msg = groups[2];
87
- }
88
- }
89
-
90
- stack = {
91
- name: name,
92
- message: typeof msg === 'string' ? msg : undefined,
79
+ var parse = tryToParseMessage(messageObj);
80
+ stackTrace = {
81
+ name: parse.name,
82
+ message: parse.message,
93
83
  stack: [location]
94
84
  };
95
- callback(stack, message);
96
85
  }
86
+
87
+ callback(stackTrace, (0, _tools.isNullUndefinedDefaultValue)(errorObj, messageObj));
97
88
  }
98
89
  });
99
90
  }
91
+
92
+ function tryToParseMessage(messageObj) {
93
+ var name;
94
+ var message;
95
+
96
+ if ({}.toString.call(messageObj) === '[object String]') {
97
+ var groups = ERROR_TYPES_RE.exec(messageObj);
98
+
99
+ if (groups) {
100
+ name = groups[1];
101
+ message = groups[2];
102
+ }
103
+ }
104
+
105
+ return {
106
+ name: name,
107
+ message: message
108
+ };
109
+ }
100
110
  /**
101
111
  * Install a global onunhandledrejection handler
102
112
  */
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.canUseEventBridge = canUseEventBridge;
7
+ exports.getEventBridge = getEventBridge;
8
+
9
+ var _init = require("../init");
10
+
11
+ function getEventBridgeGlobal() {
12
+ return (0, _init.getGlobalObject)().FTWebViewJavascriptBridge;
13
+ }
14
+
15
+ function getEventBridge() {
16
+ var eventBridgeGlobal = getEventBridgeGlobal();
17
+
18
+ if (!eventBridgeGlobal) {
19
+ return;
20
+ }
21
+
22
+ return {
23
+ send: function send(eventType, event) {
24
+ eventBridgeGlobal.sendEvent(JSON.stringify({
25
+ name: eventType,
26
+ data: event
27
+ }));
28
+ }
29
+ };
30
+ }
31
+
32
+ function canUseEventBridge() {
33
+ var bridge = getEventBridge();
34
+ return !!bridge;
35
+ }
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "Batch", {
9
9
  return _batch.Batch;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "canUseEventBridge", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _eventBridge.canUseEventBridge;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "createFlushController", {
13
19
  enumerable: true,
14
20
  get: function get() {
@@ -21,6 +27,18 @@ Object.defineProperty(exports, "createHttpRequest", {
21
27
  return _httpRequest.createHttpRequest;
22
28
  }
23
29
  });
30
+ Object.defineProperty(exports, "getEventBridge", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _eventBridge.getEventBridge;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "processedMessageByDataMap", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _batch.processedMessageByDataMap;
40
+ }
41
+ });
24
42
  Object.defineProperty(exports, "startBatchWithReplica", {
25
43
  enumerable: true,
26
44
  get: function get() {
@@ -34,4 +52,6 @@ var _batch = require("./batch");
34
52
 
35
53
  var _startBatchWithReplica = require("./startBatchWithReplica");
36
54
 
37
- var _flushController = require("./flushController");
55
+ var _flushController = require("./flushController");
56
+
57
+ var _eventBridge = require("./eventBridge");
package/esm/init.js CHANGED
@@ -38,19 +38,19 @@ export function getGlobalObject() {
38
38
  return globalThis;
39
39
  }
40
40
 
41
- Object.defineProperty(Object.prototype, '_dd_temp_', {
41
+ Object.defineProperty(Object.prototype, '_gc_temp_', {
42
42
  get: function get() {
43
43
  return this;
44
44
  },
45
45
  configurable: true
46
46
  }); // @ts-ignore
47
47
 
48
- var globalObject = _dd_temp_; // @ts-ignore
48
+ var globalObject = _gc_temp_; // @ts-ignore
49
49
 
50
- delete Object.prototype._dd_temp_;
50
+ delete Object.prototype._gc_temp_;
51
51
 
52
52
  if (typeof globalObject !== 'object') {
53
- // on safari _dd_temp_ is available on window but not globally
53
+ // on safari _gc_temp_ is available on window but not globally
54
54
  // fallback on other browser globals check
55
55
  if (typeof self === 'object') {
56
56
  globalObject = self;
@@ -1,7 +1,8 @@
1
1
  import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod';
2
+ import { isNullUndefinedDefaultValue } from '../helper/tools';
2
3
  import { computeStackTrace } from './computeStackTrace'; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
3
4
 
4
- var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;
5
+ var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;
5
6
  /**
6
7
  * Cross-browser collection of unhandled errors
7
8
  *
@@ -53,40 +54,48 @@ export function startUnhandledErrorCollection(callback) {
53
54
 
54
55
  function instrumentOnError(callback) {
55
56
  return instrumentMethodAndCallOriginal(window, 'onerror', {
56
- before: function before(message, url, lineNo, columnNo, errorObj) {
57
- var stack;
57
+ before: function before(messageObj, url, line, column, errorObj) {
58
+ var stackTrace;
58
59
 
59
- if (errorObj) {
60
- stack = computeStackTrace(errorObj);
61
- callback(stack, errorObj);
60
+ if (errorObj instanceof Error) {
61
+ stackTrace = computeStackTrace(errorObj);
62
62
  } else {
63
63
  var location = {
64
64
  url: url,
65
- column: columnNo,
66
- line: lineNo
65
+ column: column,
66
+ line: line
67
67
  };
68
- var name;
69
- var msg = message;
70
-
71
- if ({}.toString.call(message) === '[object String]') {
72
- var groups = ERROR_TYPES_RE.exec(msg);
73
-
74
- if (groups) {
75
- name = groups[1];
76
- msg = groups[2];
77
- }
78
- }
79
-
80
- stack = {
81
- name: name,
82
- message: typeof msg === 'string' ? msg : undefined,
68
+ var parse = tryToParseMessage(messageObj);
69
+ stackTrace = {
70
+ name: parse.name,
71
+ message: parse.message,
83
72
  stack: [location]
84
73
  };
85
- callback(stack, message);
86
74
  }
75
+
76
+ callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj));
87
77
  }
88
78
  });
89
79
  }
80
+
81
+ function tryToParseMessage(messageObj) {
82
+ var name;
83
+ var message;
84
+
85
+ if ({}.toString.call(messageObj) === '[object String]') {
86
+ var groups = ERROR_TYPES_RE.exec(messageObj);
87
+
88
+ if (groups) {
89
+ name = groups[1];
90
+ message = groups[2];
91
+ }
92
+ }
93
+
94
+ return {
95
+ name: name,
96
+ message: message
97
+ };
98
+ }
90
99
  /**
91
100
  * Install a global onunhandledrejection handler
92
101
  */
@@ -0,0 +1,27 @@
1
+ import { getGlobalObject } from '../init';
2
+
3
+ function getEventBridgeGlobal() {
4
+ return getGlobalObject().FTWebViewJavascriptBridge;
5
+ }
6
+
7
+ export function getEventBridge() {
8
+ var eventBridgeGlobal = getEventBridgeGlobal();
9
+
10
+ if (!eventBridgeGlobal) {
11
+ return;
12
+ }
13
+
14
+ return {
15
+ send(eventType, event) {
16
+ eventBridgeGlobal.sendEvent(JSON.stringify({
17
+ name: eventType,
18
+ data: event
19
+ }));
20
+ }
21
+
22
+ };
23
+ }
24
+ export function canUseEventBridge() {
25
+ var bridge = getEventBridge();
26
+ return !!bridge;
27
+ }
@@ -1,4 +1,5 @@
1
1
  export { createHttpRequest } from './httpRequest';
2
- export { Batch } from './batch';
2
+ export { Batch, processedMessageByDataMap } from './batch';
3
3
  export { startBatchWithReplica } from './startBatchWithReplica';
4
- export { createFlushController } from './flushController';
4
+ export { createFlushController } from './flushController';
5
+ export { getEventBridge, canUseEventBridge } from './eventBridge';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "2.0.17",
3
+ "version": "2.0.18",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "scripts": {
@@ -20,5 +20,5 @@
20
20
  "author": "dataflux",
21
21
  "license": "MIT",
22
22
  "description": "DataFlux RUM Web 端数据指标监控",
23
- "gitHead": "ea5e097ee7a211e948b0766be016b50d671e4724"
23
+ "gitHead": "95a35040844e8959ebf322eeeeb1269fc369e679"
24
24
  }
package/src/init.js CHANGED
@@ -39,18 +39,18 @@ export function getGlobalObject() {
39
39
  if (typeof globalThis === 'object') {
40
40
  return globalThis
41
41
  }
42
- Object.defineProperty(Object.prototype, '_dd_temp_', {
42
+ Object.defineProperty(Object.prototype, '_gc_temp_', {
43
43
  get: function () {
44
44
  return this
45
45
  },
46
46
  configurable: true
47
47
  })
48
48
  // @ts-ignore
49
- var globalObject = _dd_temp_
49
+ var globalObject = _gc_temp_
50
50
  // @ts-ignore
51
- delete Object.prototype._dd_temp_
51
+ delete Object.prototype._gc_temp_
52
52
  if (typeof globalObject !== 'object') {
53
- // on safari _dd_temp_ is available on window but not globally
53
+ // on safari _gc_temp_ is available on window but not globally
54
54
  // fallback on other browser globals check
55
55
  if (typeof self === 'object') {
56
56
  globalObject = self
@@ -1,10 +1,10 @@
1
1
  import { instrumentMethodAndCallOriginal } from '../helper/instrumentMethod'
2
+ import { isNullUndefinedDefaultValue } from '../helper/tools'
2
3
  import { computeStackTrace } from './computeStackTrace'
3
4
 
4
5
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types
5
6
  var ERROR_TYPES_RE =
6
- /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/
7
-
7
+ /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/
8
8
  /**
9
9
  * Cross-browser collection of unhandled errors
10
10
  *
@@ -41,10 +41,10 @@ export function startUnhandledErrorCollection(callback) {
41
41
  var _instrumentOnError = instrumentOnError(callback)
42
42
  var _instrumentUnhandledRejection = instrumentUnhandledRejection(callback)
43
43
  return {
44
- stop: function() {
44
+ stop: function () {
45
45
  _instrumentOnError.stop()
46
46
  _instrumentUnhandledRejection.stop()
47
- },
47
+ }
48
48
  }
49
49
  }
50
50
 
@@ -53,48 +53,49 @@ export function startUnhandledErrorCollection(callback) {
53
53
  */
54
54
  function instrumentOnError(callback) {
55
55
  return instrumentMethodAndCallOriginal(window, 'onerror', {
56
- before: function(message, url, lineNo, columnNo, errorObj) {
57
- var stack
58
- if (errorObj) {
59
- stack = computeStackTrace(errorObj)
60
- callback(stack, errorObj)
56
+ before: function (messageObj, url, line, column, errorObj) {
57
+ var stackTrace
58
+ if (errorObj instanceof Error) {
59
+ stackTrace = computeStackTrace(errorObj)
61
60
  } else {
62
61
  var location = {
63
62
  url: url,
64
- column: columnNo,
65
- line: lineNo,
66
- }
67
- var name
68
- var msg = message
69
- if ({}.toString.call(message) === '[object String]') {
70
- var groups = ERROR_TYPES_RE.exec(msg)
71
- if (groups) {
72
- name = groups[1]
73
- msg = groups[2]
74
- }
63
+ column: column,
64
+ line: line
75
65
  }
66
+ var parse = tryToParseMessage(messageObj)
76
67
 
77
- stack = {
78
- name: name,
79
- message: typeof msg === 'string' ? msg : undefined,
80
- stack: [location],
68
+ stackTrace = {
69
+ name: parse.name,
70
+ message: parse.message,
71
+ stack: [location]
81
72
  }
82
-
83
- callback(stack, message)
84
73
  }
85
- },
74
+ callback(stackTrace, isNullUndefinedDefaultValue(errorObj, messageObj))
75
+ }
86
76
  })
87
77
  }
88
-
78
+ function tryToParseMessage(messageObj) {
79
+ let name
80
+ let message
81
+ if ({}.toString.call(messageObj) === '[object String]') {
82
+ var groups = ERROR_TYPES_RE.exec(messageObj)
83
+ if (groups) {
84
+ name = groups[1]
85
+ message = groups[2]
86
+ }
87
+ }
88
+ return { name: name, message: message }
89
+ }
89
90
  /**
90
91
  * Install a global onunhandledrejection handler
91
92
  */
92
93
  function instrumentUnhandledRejection(callback) {
93
94
  return instrumentMethodAndCallOriginal(window, 'onunhandledrejection', {
94
- before: function(e) {
95
+ before: function (e) {
95
96
  var reason = e.reason || 'Empty reason'
96
97
  var stack = computeStackTrace(reason)
97
98
  callback(stack, reason)
98
- },
99
+ }
99
100
  })
100
101
  }
@@ -0,0 +1,24 @@
1
+ import { getGlobalObject } from '../init'
2
+
3
+ function getEventBridgeGlobal() {
4
+ return getGlobalObject().FTWebViewJavascriptBridge
5
+ }
6
+ export function getEventBridge() {
7
+ var eventBridgeGlobal = getEventBridgeGlobal()
8
+
9
+ if (!eventBridgeGlobal) {
10
+ return
11
+ }
12
+
13
+ return {
14
+ send(eventType, event) {
15
+ eventBridgeGlobal.sendEvent(
16
+ JSON.stringify({ name: eventType, data: event })
17
+ )
18
+ }
19
+ }
20
+ }
21
+ export function canUseEventBridge() {
22
+ var bridge = getEventBridge()
23
+ return !!bridge
24
+ }
@@ -1,4 +1,5 @@
1
1
  export { createHttpRequest } from './httpRequest'
2
- export { Batch } from './batch'
2
+ export { Batch, processedMessageByDataMap } from './batch'
3
3
  export { startBatchWithReplica } from './startBatchWithReplica'
4
4
  export { createFlushController } from './flushController'
5
+ export { getEventBridge, canUseEventBridge } from './eventBridge'