@arms/rum-core 0.0.37 → 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.
- package/es/model/client.js +1 -1
- package/es/utils/events.d.ts +29 -0
- package/es/utils/events.js +84 -0
- package/lib/model/client.js +1 -1
- package/lib/utils/events.d.ts +29 -0
- package/lib/utils/events.js +88 -0
- package/package.json +1 -4
package/es/model/client.js
CHANGED
|
@@ -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 () {
|
|
@@ -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
|
+
}();
|
package/lib/model/client.js
CHANGED
|
@@ -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."); }
|
|
@@ -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.
|
|
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
|
},
|