ly-utils-lib 2.6.0 → 2.8.2
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/README.md +130 -0
- package/dist/event.cjs +234 -0
- package/dist/event.cjs.map +1 -0
- package/dist/event.d.cts +2 -0
- package/dist/event.d.ts +2 -0
- package/dist/event.js +220 -0
- package/dist/event.js.map +1 -0
- package/dist/index-g6UFPtxf.d.cts +260 -0
- package/dist/index-g6UFPtxf.d.ts +260 -0
- package/dist/index.cjs +228 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +227 -1
- package/dist/index.js.map +1 -1
- package/package.json +12 -1
package/dist/index.cjs
CHANGED
|
@@ -36,6 +36,7 @@ var style = require('ol/style');
|
|
|
36
36
|
var extent = require('ol/extent');
|
|
37
37
|
var Cookies = require('js-cookie');
|
|
38
38
|
var CryptoJS = require('crypto-js');
|
|
39
|
+
var mitt = require('mitt');
|
|
39
40
|
|
|
40
41
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
41
42
|
|
|
@@ -83,6 +84,7 @@ var XYZ__default = /*#__PURE__*/_interopDefault(XYZ);
|
|
|
83
84
|
var GeoJSON__default = /*#__PURE__*/_interopDefault(GeoJSON);
|
|
84
85
|
var Cookies__default = /*#__PURE__*/_interopDefault(Cookies);
|
|
85
86
|
var CryptoJS__namespace = /*#__PURE__*/_interopNamespace(CryptoJS);
|
|
87
|
+
var mitt__default = /*#__PURE__*/_interopDefault(mitt);
|
|
86
88
|
|
|
87
89
|
var __defProp = Object.defineProperty;
|
|
88
90
|
var __export = (target, all) => {
|
|
@@ -3664,6 +3666,231 @@ var websocket_default = {
|
|
|
3664
3666
|
quickConnect,
|
|
3665
3667
|
WebSocketState
|
|
3666
3668
|
};
|
|
3669
|
+
|
|
3670
|
+
// src/modules/event/index.ts
|
|
3671
|
+
var event_exports = {};
|
|
3672
|
+
__export(event_exports, {
|
|
3673
|
+
EventBus: () => EventBus,
|
|
3674
|
+
batchSubscribe: () => batchSubscribe,
|
|
3675
|
+
createEventBus: () => createEventBus,
|
|
3676
|
+
createNamespacedEventBus: () => createNamespacedEventBus,
|
|
3677
|
+
default: () => event_default,
|
|
3678
|
+
getGlobalEventBus: () => getGlobalEventBus,
|
|
3679
|
+
waitForEvent: () => waitForEvent
|
|
3680
|
+
});
|
|
3681
|
+
var EventBus = class {
|
|
3682
|
+
constructor(options = {}) {
|
|
3683
|
+
this.listeners = /* @__PURE__ */ new Map();
|
|
3684
|
+
this.options = {
|
|
3685
|
+
debug: options.debug ?? false,
|
|
3686
|
+
prefix: options.prefix ?? ""
|
|
3687
|
+
};
|
|
3688
|
+
this.emitter = mitt__default.default();
|
|
3689
|
+
this.log("EventBus created");
|
|
3690
|
+
}
|
|
3691
|
+
on(event, handler) {
|
|
3692
|
+
const events = Array.isArray(event) ? event : [event];
|
|
3693
|
+
const unsubscribers = [];
|
|
3694
|
+
events.forEach((eventName) => {
|
|
3695
|
+
const fullName = this.getFullName(eventName);
|
|
3696
|
+
const wrappedHandler = (data) => {
|
|
3697
|
+
this.log(`Event triggered: ${fullName}`, data);
|
|
3698
|
+
return handler(data);
|
|
3699
|
+
};
|
|
3700
|
+
this.emitter.on(fullName, wrappedHandler);
|
|
3701
|
+
const meta = {
|
|
3702
|
+
event: fullName,
|
|
3703
|
+
handler: wrappedHandler,
|
|
3704
|
+
once: false,
|
|
3705
|
+
timestamp: Date.now()
|
|
3706
|
+
};
|
|
3707
|
+
this.addListener(fullName, meta);
|
|
3708
|
+
unsubscribers.push(() => {
|
|
3709
|
+
this.emitter.off(fullName, wrappedHandler);
|
|
3710
|
+
this.removeListener(fullName, wrappedHandler);
|
|
3711
|
+
this.log(`Unsubscribed from: ${fullName}`);
|
|
3712
|
+
});
|
|
3713
|
+
});
|
|
3714
|
+
return () => {
|
|
3715
|
+
unsubscribers.forEach((unsub) => unsub());
|
|
3716
|
+
};
|
|
3717
|
+
}
|
|
3718
|
+
once(event, handler) {
|
|
3719
|
+
const events = Array.isArray(event) ? event : [event];
|
|
3720
|
+
const unsubscribers = [];
|
|
3721
|
+
events.forEach((eventName) => {
|
|
3722
|
+
const fullName = this.getFullName(eventName);
|
|
3723
|
+
const wrappedHandler = (data) => {
|
|
3724
|
+
this.log(`One-time event triggered: ${fullName}`, data);
|
|
3725
|
+
this.emitter.off(fullName, wrappedHandler);
|
|
3726
|
+
this.removeListener(fullName, wrappedHandler);
|
|
3727
|
+
return handler(data);
|
|
3728
|
+
};
|
|
3729
|
+
this.emitter.on(fullName, wrappedHandler);
|
|
3730
|
+
const meta = {
|
|
3731
|
+
event: fullName,
|
|
3732
|
+
handler: wrappedHandler,
|
|
3733
|
+
once: true,
|
|
3734
|
+
timestamp: Date.now()
|
|
3735
|
+
};
|
|
3736
|
+
this.addListener(fullName, meta);
|
|
3737
|
+
unsubscribers.push(() => {
|
|
3738
|
+
this.emitter.off(fullName, wrappedHandler);
|
|
3739
|
+
this.removeListener(fullName, wrappedHandler);
|
|
3740
|
+
});
|
|
3741
|
+
});
|
|
3742
|
+
return () => {
|
|
3743
|
+
unsubscribers.forEach((unsub) => unsub());
|
|
3744
|
+
};
|
|
3745
|
+
}
|
|
3746
|
+
off(event, handler) {
|
|
3747
|
+
const events = Array.isArray(event) ? event : [event];
|
|
3748
|
+
events.forEach((eventName) => {
|
|
3749
|
+
const fullName = this.getFullName(eventName);
|
|
3750
|
+
const listeners = this.listeners.get(fullName) || [];
|
|
3751
|
+
if (handler) {
|
|
3752
|
+
const index = listeners.findIndex((meta) => meta.handler === handler);
|
|
3753
|
+
if (index !== -1) {
|
|
3754
|
+
this.emitter.off(fullName, listeners[index].handler);
|
|
3755
|
+
listeners.splice(index, 1);
|
|
3756
|
+
this.log(`Removed handler from: ${fullName}`);
|
|
3757
|
+
}
|
|
3758
|
+
} else {
|
|
3759
|
+
listeners.forEach((meta) => {
|
|
3760
|
+
this.emitter.off(fullName, meta.handler);
|
|
3761
|
+
});
|
|
3762
|
+
this.listeners.delete(fullName);
|
|
3763
|
+
this.log(`Cleared all listeners for: ${fullName}`);
|
|
3764
|
+
}
|
|
3765
|
+
});
|
|
3766
|
+
}
|
|
3767
|
+
emit(event, data) {
|
|
3768
|
+
const fullName = this.getFullName(event);
|
|
3769
|
+
this.log(`Emitting event: ${fullName}`, data);
|
|
3770
|
+
this.emitter.emit(fullName, data);
|
|
3771
|
+
}
|
|
3772
|
+
/**
|
|
3773
|
+
* 清空所有事件监听器
|
|
3774
|
+
*/
|
|
3775
|
+
clear() {
|
|
3776
|
+
this.emitter.all.clear();
|
|
3777
|
+
this.listeners.clear();
|
|
3778
|
+
this.log("All event listeners cleared");
|
|
3779
|
+
}
|
|
3780
|
+
/**
|
|
3781
|
+
* 获取所有事件
|
|
3782
|
+
*/
|
|
3783
|
+
get all() {
|
|
3784
|
+
return this.emitter.all;
|
|
3785
|
+
}
|
|
3786
|
+
/**
|
|
3787
|
+
* 获取事件监听器数量
|
|
3788
|
+
*/
|
|
3789
|
+
getListenerCount(event) {
|
|
3790
|
+
if (event) {
|
|
3791
|
+
const fullName = this.getFullName(event);
|
|
3792
|
+
return this.listeners.get(fullName)?.length || 0;
|
|
3793
|
+
}
|
|
3794
|
+
return Array.from(this.listeners.values()).reduce((total, list) => total + list.length, 0);
|
|
3795
|
+
}
|
|
3796
|
+
/**
|
|
3797
|
+
* 获取所有事件名称
|
|
3798
|
+
*/
|
|
3799
|
+
getEventNames() {
|
|
3800
|
+
return Array.from(this.listeners.keys());
|
|
3801
|
+
}
|
|
3802
|
+
/**
|
|
3803
|
+
* 获取事件监听器列表
|
|
3804
|
+
*/
|
|
3805
|
+
getListeners(event) {
|
|
3806
|
+
const fullName = this.getFullName(event);
|
|
3807
|
+
return this.listeners.get(fullName) || [];
|
|
3808
|
+
}
|
|
3809
|
+
/**
|
|
3810
|
+
* 添加监听器记录
|
|
3811
|
+
*/
|
|
3812
|
+
addListener(event, meta) {
|
|
3813
|
+
if (!this.listeners.has(event)) {
|
|
3814
|
+
this.listeners.set(event, []);
|
|
3815
|
+
}
|
|
3816
|
+
this.listeners.get(event).push(meta);
|
|
3817
|
+
}
|
|
3818
|
+
/**
|
|
3819
|
+
* 移除监听器记录
|
|
3820
|
+
*/
|
|
3821
|
+
removeListener(event, handler) {
|
|
3822
|
+
const listeners = this.listeners.get(event);
|
|
3823
|
+
if (listeners) {
|
|
3824
|
+
const index = listeners.findIndex((meta) => meta.handler === handler);
|
|
3825
|
+
if (index !== -1) {
|
|
3826
|
+
listeners.splice(index, 1);
|
|
3827
|
+
}
|
|
3828
|
+
if (listeners.length === 0) {
|
|
3829
|
+
this.listeners.delete(event);
|
|
3830
|
+
}
|
|
3831
|
+
}
|
|
3832
|
+
}
|
|
3833
|
+
/**
|
|
3834
|
+
* 获取完整的事件名称(带前缀)
|
|
3835
|
+
*/
|
|
3836
|
+
getFullName(event) {
|
|
3837
|
+
return this.options.prefix ? `${this.options.prefix}:${event}` : event;
|
|
3838
|
+
}
|
|
3839
|
+
/**
|
|
3840
|
+
* 日志输出
|
|
3841
|
+
*/
|
|
3842
|
+
log(...args) {
|
|
3843
|
+
if (this.options.debug) {
|
|
3844
|
+
console.log("[EventBus]", ...args);
|
|
3845
|
+
}
|
|
3846
|
+
}
|
|
3847
|
+
};
|
|
3848
|
+
function createEventBus(options) {
|
|
3849
|
+
return new EventBus(options);
|
|
3850
|
+
}
|
|
3851
|
+
var globalEventBus = null;
|
|
3852
|
+
function getGlobalEventBus(options) {
|
|
3853
|
+
if (!globalEventBus) {
|
|
3854
|
+
globalEventBus = createEventBus(options);
|
|
3855
|
+
}
|
|
3856
|
+
return globalEventBus;
|
|
3857
|
+
}
|
|
3858
|
+
function waitForEvent(bus, event, timeout = 5e3) {
|
|
3859
|
+
return new Promise((resolve, reject) => {
|
|
3860
|
+
const timer = setTimeout(() => {
|
|
3861
|
+
unsubscribe();
|
|
3862
|
+
reject(new Error(`Timeout waiting for event: ${event}`));
|
|
3863
|
+
}, timeout);
|
|
3864
|
+
const unsubscribe = bus.on(event, (data) => {
|
|
3865
|
+
clearTimeout(timer);
|
|
3866
|
+
unsubscribe();
|
|
3867
|
+
resolve(data);
|
|
3868
|
+
});
|
|
3869
|
+
});
|
|
3870
|
+
}
|
|
3871
|
+
function batchSubscribe(bus, events) {
|
|
3872
|
+
const unsubscribers = [];
|
|
3873
|
+
Object.entries(events).forEach(([event, handler]) => {
|
|
3874
|
+
unsubscribers.push(bus.on(event, handler));
|
|
3875
|
+
});
|
|
3876
|
+
return () => {
|
|
3877
|
+
unsubscribers.forEach((unsub) => unsub());
|
|
3878
|
+
};
|
|
3879
|
+
}
|
|
3880
|
+
function createNamespacedEventBus(namespace, options) {
|
|
3881
|
+
return createEventBus({
|
|
3882
|
+
...options,
|
|
3883
|
+
prefix: namespace
|
|
3884
|
+
});
|
|
3885
|
+
}
|
|
3886
|
+
var event_default = {
|
|
3887
|
+
EventBus,
|
|
3888
|
+
createEventBus,
|
|
3889
|
+
getGlobalEventBus,
|
|
3890
|
+
waitForEvent,
|
|
3891
|
+
batchSubscribe,
|
|
3892
|
+
createNamespacedEventBus
|
|
3893
|
+
};
|
|
3667
3894
|
/**
|
|
3668
3895
|
* Utils Toolkit
|
|
3669
3896
|
* 一个功能强大的 JavaScript/TypeScript 工具函数库
|
|
@@ -3679,6 +3906,7 @@ Object.defineProperty(exports, "dayjs", {
|
|
|
3679
3906
|
exports.array = array_exports;
|
|
3680
3907
|
exports.crypto = crypto_exports;
|
|
3681
3908
|
exports.date = date_exports;
|
|
3909
|
+
exports.event = event_exports;
|
|
3682
3910
|
exports.excel = excel_exports;
|
|
3683
3911
|
exports.map = map_exports;
|
|
3684
3912
|
exports.object = object_exports;
|