@arms/rum-core 0.0.36 → 0.0.38

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.
@@ -2,7 +2,7 @@ function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof S
2
2
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
3
3
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4
4
  import { EventType } from '../types/client';
5
- import { EventEmitter } from 'events';
5
+ import { EventEmitter } from '../utils/events';
6
6
  import Context from './context';
7
7
  import { isFunction } from "../utils/is";
8
8
  var Client = /*#__PURE__*/function () {
@@ -20,6 +20,12 @@ var Context = /*#__PURE__*/function () {
20
20
  return this.views;
21
21
  };
22
22
  _proto.addView = function addView(view) {
23
+ var index = this.views.findIndex(function (v) {
24
+ return v.id === view.id;
25
+ });
26
+ if (index >= 0) {
27
+ this.views.splice(index, 1);
28
+ }
23
29
  this.views.push(view);
24
30
  };
25
31
  _proto.removeView = function removeView(viewId) {
@@ -158,5 +158,13 @@ export interface IConfiguration {
158
158
  properties?: {
159
159
  [key: string]: number | string;
160
160
  };
161
+ /**
162
+ * 检测元素是否溢出的弹性长度
163
+ */
164
+ overflowPx?: number;
165
+ /**
166
+ * 检测正则匹配内容
167
+ */
168
+ regexp?: string;
161
169
  [key: string]: unknown;
162
170
  }
@@ -117,7 +117,8 @@ export declare enum AppType {
117
117
  browser = "browser",
118
118
  miniapp = "miniapp",
119
119
  minigame = "minigame",
120
- uniapp = "uniapp"
120
+ uniapp = "uniapp",
121
+ reactnative = "reactnative"
121
122
  }
122
123
  export interface RumEventBundle {
123
124
  app: {
@@ -170,6 +171,7 @@ export interface RumEventBundle {
170
171
  net?: {
171
172
  model?: string;
172
173
  name?: string;
174
+ ip?: string;
173
175
  };
174
176
  events: Array<RumEvent>;
175
177
  properties?: BaseObject;
@@ -22,5 +22,6 @@ export var AppType = /*#__PURE__*/function (AppType) {
22
22
  AppType["miniapp"] = "miniapp";
23
23
  AppType["minigame"] = "minigame";
24
24
  AppType["uniapp"] = "uniapp";
25
+ AppType["reactnative"] = "reactnative";
25
26
  return AppType;
26
27
  }({});
package/es/utils/base.js CHANGED
@@ -56,7 +56,7 @@ export function generateGUID() {
56
56
  }, '').replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '\$1-\$2-\$3-\$4-\$5');
57
57
  }
58
58
  } catch (e) {
59
- //
59
+ guid = '';
60
60
  }
61
61
  if (!guid) {
62
62
  guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
@@ -0,0 +1,29 @@
1
+ type EventHandler = (...args: any[]) => void;
2
+ export declare class EventEmitter {
3
+ private events;
4
+ /**
5
+ * 订阅事件
6
+ * @param eventName 事件名称
7
+ * @param handler 事件处理函数
8
+ */
9
+ on(eventName: string, handler: EventHandler): void;
10
+ /**
11
+ * 触发事件
12
+ * @param eventName 事件名称
13
+ * @param args 传递给处理函数的参数
14
+ */
15
+ emit(eventName: string, ...args: any[]): void;
16
+ /**
17
+ * 取消订阅
18
+ * @param eventName 事件名称
19
+ * @param handler 要移除的事件处理函数(可选)
20
+ */
21
+ off(eventName: string, handler?: EventHandler): void;
22
+ /**
23
+ * 添加一次性监听器(可选扩展)
24
+ * @param eventName 事件名称
25
+ * @param handler 事件处理函数
26
+ */
27
+ once(eventName: string, handler: EventHandler): void;
28
+ }
29
+ export {};
@@ -0,0 +1,84 @@
1
+ export var EventEmitter = /*#__PURE__*/function () {
2
+ function EventEmitter() {
3
+ this.events = {};
4
+ }
5
+ var _proto = EventEmitter.prototype;
6
+ /**
7
+ * 订阅事件
8
+ * @param eventName 事件名称
9
+ * @param handler 事件处理函数
10
+ */
11
+ _proto.on = function on(eventName, handler) {
12
+ if (!this.events[eventName]) {
13
+ this.events[eventName] = [];
14
+ }
15
+ this.events[eventName].push(handler);
16
+ }
17
+
18
+ /**
19
+ * 触发事件
20
+ * @param eventName 事件名称
21
+ * @param args 传递给处理函数的参数
22
+ */;
23
+ _proto.emit = function emit(eventName) {
24
+ var handlers = this.events[eventName];
25
+ if (handlers) {
26
+ // 创建副本避免执行过程中数组被修改
27
+ var handlersCopy = handlers.slice();
28
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
29
+ args[_key - 1] = arguments[_key];
30
+ }
31
+ for (var i = 0; i < handlersCopy.length; i++) {
32
+ try {
33
+ handlersCopy[i].apply(handlersCopy, args);
34
+ } catch (err) {
35
+ console.error("Error in handler for \"" + eventName + "\":", err);
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ /**
42
+ * 取消订阅
43
+ * @param eventName 事件名称
44
+ * @param handler 要移除的事件处理函数(可选)
45
+ */;
46
+ _proto.off = function off(eventName, handler) {
47
+ var handlers = this.events[eventName];
48
+ if (!handlers) return;
49
+ if (!handler) {
50
+ // 移除该事件的所有监听器
51
+ delete this.events[eventName];
52
+ return;
53
+ }
54
+
55
+ // 手动遍历并移除匹配的处理函数
56
+ var i = handlers.length;
57
+ while (i--) {
58
+ if (handlers[i] === handler) {
59
+ handlers.splice(i, 1);
60
+ }
61
+ }
62
+
63
+ // 清理空数组
64
+ if (handlers.length === 0) {
65
+ delete this.events[eventName];
66
+ }
67
+ }
68
+
69
+ /**
70
+ * 添加一次性监听器(可选扩展)
71
+ * @param eventName 事件名称
72
+ * @param handler 事件处理函数
73
+ */;
74
+ _proto.once = function once(eventName, handler) {
75
+ var _this = this;
76
+ var _onceWrapper = function onceWrapper() {
77
+ // 先移除再执行,确保不会多次触发
78
+ _this.off(eventName, _onceWrapper);
79
+ handler.apply(void 0, arguments);
80
+ };
81
+ this.on(eventName, _onceWrapper);
82
+ };
83
+ return EventEmitter;
84
+ }();
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  exports.__esModule = true;
5
5
  exports["default"] = void 0;
6
6
  var _client = require("../types/client");
7
- var _events = require("events");
7
+ var _events = require("../utils/events");
8
8
  var _context = _interopRequireDefault(require("./context"));
9
9
  var _is = require("../utils/is");
10
10
  function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -24,6 +24,12 @@ var Context = /*#__PURE__*/function () {
24
24
  return this.views;
25
25
  };
26
26
  _proto.addView = function addView(view) {
27
+ var index = this.views.findIndex(function (v) {
28
+ return v.id === view.id;
29
+ });
30
+ if (index >= 0) {
31
+ this.views.splice(index, 1);
32
+ }
27
33
  this.views.push(view);
28
34
  };
29
35
  _proto.removeView = function removeView(viewId) {
@@ -158,5 +158,13 @@ export interface IConfiguration {
158
158
  properties?: {
159
159
  [key: string]: number | string;
160
160
  };
161
+ /**
162
+ * 检测元素是否溢出的弹性长度
163
+ */
164
+ overflowPx?: number;
165
+ /**
166
+ * 检测正则匹配内容
167
+ */
168
+ regexp?: string;
161
169
  [key: string]: unknown;
162
170
  }
@@ -117,7 +117,8 @@ export declare enum AppType {
117
117
  browser = "browser",
118
118
  miniapp = "miniapp",
119
119
  minigame = "minigame",
120
- uniapp = "uniapp"
120
+ uniapp = "uniapp",
121
+ reactnative = "reactnative"
121
122
  }
122
123
  export interface RumEventBundle {
123
124
  app: {
@@ -170,6 +171,7 @@ export interface RumEventBundle {
170
171
  net?: {
171
172
  model?: string;
172
173
  name?: string;
174
+ ip?: string;
173
175
  };
174
176
  events: Array<RumEvent>;
175
177
  properties?: BaseObject;
@@ -26,5 +26,6 @@ var AppType = exports.AppType = /*#__PURE__*/function (AppType) {
26
26
  AppType["miniapp"] = "miniapp";
27
27
  AppType["minigame"] = "minigame";
28
28
  AppType["uniapp"] = "uniapp";
29
+ AppType["reactnative"] = "reactnative";
29
30
  return AppType;
30
31
  }({});
package/lib/utils/base.js CHANGED
@@ -69,7 +69,7 @@ function generateGUID() {
69
69
  }, '').replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '\$1-\$2-\$3-\$4-\$5');
70
70
  }
71
71
  } catch (e) {
72
- //
72
+ guid = '';
73
73
  }
74
74
  if (!guid) {
75
75
  guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
@@ -0,0 +1,29 @@
1
+ type EventHandler = (...args: any[]) => void;
2
+ export declare class EventEmitter {
3
+ private events;
4
+ /**
5
+ * 订阅事件
6
+ * @param eventName 事件名称
7
+ * @param handler 事件处理函数
8
+ */
9
+ on(eventName: string, handler: EventHandler): void;
10
+ /**
11
+ * 触发事件
12
+ * @param eventName 事件名称
13
+ * @param args 传递给处理函数的参数
14
+ */
15
+ emit(eventName: string, ...args: any[]): void;
16
+ /**
17
+ * 取消订阅
18
+ * @param eventName 事件名称
19
+ * @param handler 要移除的事件处理函数(可选)
20
+ */
21
+ off(eventName: string, handler?: EventHandler): void;
22
+ /**
23
+ * 添加一次性监听器(可选扩展)
24
+ * @param eventName 事件名称
25
+ * @param handler 事件处理函数
26
+ */
27
+ once(eventName: string, handler: EventHandler): void;
28
+ }
29
+ export {};
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.EventEmitter = void 0;
5
+ var EventEmitter = exports.EventEmitter = /*#__PURE__*/function () {
6
+ function EventEmitter() {
7
+ this.events = {};
8
+ }
9
+ var _proto = EventEmitter.prototype;
10
+ /**
11
+ * 订阅事件
12
+ * @param eventName 事件名称
13
+ * @param handler 事件处理函数
14
+ */
15
+ _proto.on = function on(eventName, handler) {
16
+ if (!this.events[eventName]) {
17
+ this.events[eventName] = [];
18
+ }
19
+ this.events[eventName].push(handler);
20
+ }
21
+
22
+ /**
23
+ * 触发事件
24
+ * @param eventName 事件名称
25
+ * @param args 传递给处理函数的参数
26
+ */;
27
+ _proto.emit = function emit(eventName) {
28
+ var handlers = this.events[eventName];
29
+ if (handlers) {
30
+ // 创建副本避免执行过程中数组被修改
31
+ var handlersCopy = handlers.slice();
32
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
33
+ args[_key - 1] = arguments[_key];
34
+ }
35
+ for (var i = 0; i < handlersCopy.length; i++) {
36
+ try {
37
+ handlersCopy[i].apply(handlersCopy, args);
38
+ } catch (err) {
39
+ console.error("Error in handler for \"" + eventName + "\":", err);
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ /**
46
+ * 取消订阅
47
+ * @param eventName 事件名称
48
+ * @param handler 要移除的事件处理函数(可选)
49
+ */;
50
+ _proto.off = function off(eventName, handler) {
51
+ var handlers = this.events[eventName];
52
+ if (!handlers) return;
53
+ if (!handler) {
54
+ // 移除该事件的所有监听器
55
+ delete this.events[eventName];
56
+ return;
57
+ }
58
+
59
+ // 手动遍历并移除匹配的处理函数
60
+ var i = handlers.length;
61
+ while (i--) {
62
+ if (handlers[i] === handler) {
63
+ handlers.splice(i, 1);
64
+ }
65
+ }
66
+
67
+ // 清理空数组
68
+ if (handlers.length === 0) {
69
+ delete this.events[eventName];
70
+ }
71
+ }
72
+
73
+ /**
74
+ * 添加一次性监听器(可选扩展)
75
+ * @param eventName 事件名称
76
+ * @param handler 事件处理函数
77
+ */;
78
+ _proto.once = function once(eventName, handler) {
79
+ var _this = this;
80
+ var _onceWrapper = function onceWrapper() {
81
+ // 先移除再执行,确保不会多次触发
82
+ _this.off(eventName, _onceWrapper);
83
+ handler.apply(void 0, arguments);
84
+ };
85
+ this.on(eventName, _onceWrapper);
86
+ };
87
+ return EventEmitter;
88
+ }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arms/rum-core",
3
- "version": "0.0.36",
3
+ "version": "0.0.38",
4
4
  "description": "arms rum javascript sdk core",
5
5
  "author": "guangli.fj <guangli.fj@alibaba-inc.com>",
6
6
  "license": "ISC",
@@ -25,9 +25,6 @@
25
25
  "prepublishOnly": "npm run build",
26
26
  "test": "node ./__tests__/@arms/core.test.js"
27
27
  },
28
- "dependencies": {
29
- "events": "^3.3.0"
30
- },
31
28
  "peerDependencies": {
32
29
  "@babel/runtime": "^7.24.5"
33
30
  },