emitter-master
Advanced tools
Comparing version 1.0.13 to 1.0.14
@@ -1,1 +0,219 @@ | ||
var Emitter=function(e){"use strict";const r={},n={};function p(e){return n[e]??(n[e]=[])}function s(e){return r[e]??(r[e]=[])}function t(e,n){let t=[],o;if("string"==typeof e)o="string",t.push(e);else{if(!Array.isArray(e))throw new Error("错误的参数:"+e);o="array",t=e}if("function"==typeof n){for(let e=0,r=t.length;e<r;e++){var l=t[e],a=s(l);for(let e=0,r=a.length;e<r;e++)"array"===o?n({event_name:l,data:a[e]}):n(a[e]);a.length=0,p(l).push({type:"normal",event_name_type:o,handle:n})}return()=>c(e,n)}for(let e=0,r=t.length;e<r;e++){const i=t[e],f=s(i);if(0!=f.length)return new Promise(e=>{"array"===o?e({event_name:i,data:f.pop()}):e(f.pop())})}return new Promise(e=>e(void 0===n?null:n))}function o(e,n){let t=[];if("string"==typeof e)t.push(e);else{if(!Array.isArray(e))throw new Error("错误的参数:"+e);t=e}for(let r=0,e=t.length;r<e;r++){var o=t[r],l=p(o);if(0===l.length)s(o).push(n);else for(let e=0;e<l.length;e++){var a=l[r];"string"===a.event_name_type?a.handle(n):a.handle({event_name:o,data:n}),"once"===a.type&&(l.splice(e,1),e--)}}}function c(e,r){let n=[];if("string"==typeof e)n.push(e);else{if(!Array.isArray(e))throw new Error("错误的参数:"+e);n=e}var t={offline:!1};if(void 0!==r&&("function"==typeof r?t.callback=r:(void 0!==r.offline&&(t.offline=r.offline),void 0!==r.callback&&(t.callback=r.callback))),void 0===t.callback)for(let e=0,r=n.length;e<r;e++){var o=n[e];t.offline&&(s(o).length=0),p(o).length=0}else for(let e=0,r=n.length;e<r;e++){var l=p(n[e]);for(let e=0;e<l.length;e++)l[e].handle===t.callback&&(l.splice(e,1),e--)}}var l=t,a=o,i=c,a=(console.log("%cemitter-master:%c 1.0.13 %c=> %curl:%c https://www.npmjs.com/package/emitter-master","color: #fff;background: purple;padding: 2px 5px;border-radius:4px;font-size: 14px;","color: purple;font-size:14px;","color: #333;font-size:14px;","background: purple;font-size:14px; padding: 2px 5px; border-radius: 4px; color: #fff;","font-size:14px;"),{sender:a,receiver:l,listener:t,once:function(e,n){let t=[],o;if("string"==typeof e)o="string",t.push(e);else{if(!Array.isArray(e))throw new Error("错误的参数:"+e);o="array",t=e}if("function"==typeof n){for(let e=0,r=t.length;e<r;e++){var l=t[e],a=s(l);0===a.length?p(l).push({type:"once",event_name_type:o,handle:n}):"array"===o?n({event_name:l,data:a.pop()}):n(a.pop())}return()=>c(e,n)}for(let e=0;e<t.length;e++){const r=t[e],i=s(r);if(0!==i.length)return new Promise(e=>"array"===o?e({event_name:r,data:i.pop()}):e(i.pop()))}return new Promise(e=>e(void 0===n?null:n))},trigger:o,clear:c,debug_print:function(){console.log("事件缓存--\x3e",n),console.log("离线缓存--\x3e",r)},remove:i});return e.Emitter=a,Object.defineProperty(e,"__esModule",{value:!0}),e}({}); | ||
var Emitter = (function (exports) { | ||
'use strict'; | ||
var version = "1.0.14"; | ||
// 用于发送和监听某个事件的发射器 | ||
const offline_cache = {}; // 存储离线队列的事件处理程序 | ||
const event_cache = {}; // 存储事件对应的事件处理程序 | ||
// 获取 event_list | ||
function get_event_list(event_name) { | ||
return event_cache[event_name] ?? (event_cache[event_name] = []); | ||
} | ||
// 获取离线列表 | ||
function get_offline_list(event_name) { | ||
return offline_cache[event_name] ?? (offline_cache[event_name] = []); | ||
} | ||
function listener(event_names, handle_or_default) { | ||
let event_name_list = []; | ||
let arg1_type; | ||
if (typeof event_names === "string") { | ||
arg1_type = "string"; | ||
event_name_list.push(event_names); | ||
} | ||
else if (Array.isArray(event_names)) { | ||
arg1_type = "array"; | ||
event_name_list = event_names; | ||
} | ||
else { | ||
throw new Error("错误的参数:" + event_names); | ||
} | ||
if (typeof handle_or_default === "function") { | ||
// 第二个参数是函数的情况必定会返回函数 | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
const offline_list = get_offline_list(event_name); | ||
for (let j = 0, len2 = offline_list.length; j < len2; j++) { | ||
arg1_type === "array" ? | ||
handle_or_default({ event_name, data: offline_list[j] }) : | ||
handle_or_default(offline_list[j]); | ||
} | ||
offline_list.length = 0; | ||
// 离线执行全部执行一遍并清空之后添加监听 | ||
const event_list = get_event_list(event_name); | ||
event_list.push({ | ||
type: "normal", | ||
event_name_type: arg1_type, | ||
handle: handle_or_default | ||
}); | ||
} | ||
return () => clear(event_names, handle_or_default); | ||
} | ||
else { | ||
// 第二个参数为值 | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
const offline_list = get_offline_list(event_name); | ||
if (offline_list.length == 0) | ||
continue; | ||
return new Promise(resolve => { | ||
arg1_type === "array" ? | ||
resolve({ event_name, data: offline_list.pop() }) : | ||
resolve(offline_list.pop()); | ||
}); | ||
} | ||
return new Promise(resolve => handle_or_default === undefined ? resolve(null) : resolve(handle_or_default)); | ||
} | ||
} | ||
function once(event_names, handle_or_default) { | ||
let event_name_list = []; | ||
let arg1_type; | ||
if (typeof event_names === "string") { | ||
arg1_type = "string"; | ||
event_name_list.push(event_names); | ||
} | ||
else if (Array.isArray(event_names)) { | ||
arg1_type = "array"; | ||
event_name_list = event_names; | ||
} | ||
else { | ||
throw new Error("错误的参数:" + event_names); | ||
} | ||
if (typeof handle_or_default === "function") { | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
const offline_list = get_offline_list(event_name); | ||
if (offline_list.length === 0) { | ||
get_event_list(event_name).push({ | ||
type: "once", | ||
event_name_type: arg1_type, | ||
handle: handle_or_default | ||
}); | ||
continue; | ||
} | ||
arg1_type === "array" ? | ||
handle_or_default({ event_name, data: offline_list.pop() }) : | ||
handle_or_default(offline_list.pop()); | ||
} | ||
return () => clear(event_names, handle_or_default); | ||
} | ||
else { | ||
for (let i = 0; i < event_name_list.length; i++) { | ||
const event_name = event_name_list[i]; | ||
const offline_list = get_offline_list(event_name); | ||
if (offline_list.length === 0) | ||
continue; | ||
return new Promise(resolve => arg1_type === "array" ? | ||
resolve({ event_name, data: offline_list.pop() }) : | ||
resolve(offline_list.pop())); | ||
} | ||
return new Promise(resolve => handle_or_default === undefined ? resolve(null) : resolve(handle_or_default)); | ||
} | ||
} | ||
// 触发事件,或发送数据 | ||
function trigger(event_names, data) { | ||
let event_name_list = []; | ||
if (typeof event_names === "string") { | ||
event_name_list.push(event_names); | ||
} | ||
else if (Array.isArray(event_names)) { | ||
event_name_list = event_names; | ||
} | ||
else { | ||
throw new Error("错误的参数:" + event_names); | ||
} | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
const event_list = get_event_list(event_name); | ||
if (event_list.length === 0) { // 如果当前的事件中没有对应的处理函数那么直接将这个请求添加到离线列表 | ||
const offline_list = get_offline_list(event_name); | ||
offline_list.push(data); | ||
} | ||
else { | ||
for (let j = 0; j < event_list.length; j++) { | ||
const event_info = event_list[i]; | ||
event_info.event_name_type === "string" ? event_info.handle(data) : event_info.handle({ | ||
event_name, | ||
data | ||
}); | ||
if (event_info.type === "once") { | ||
event_list.splice(j, 1); // 对于 once 类型的事件执行之后删除掉 | ||
j--; // 删除之后记得减掉索引,不让会跳过一些handle函数 | ||
} | ||
} | ||
} | ||
} | ||
} | ||
// 清除单个事件或者清除所有的事件 | ||
function clear(event_names, callback_or_config) { | ||
let event_name_list = []; | ||
if (typeof event_names === "string") { | ||
event_name_list.push(event_names); | ||
} | ||
else if (Array.isArray(event_names)) { | ||
event_name_list = event_names; | ||
} | ||
else { | ||
throw new Error("错误的参数:" + event_names); | ||
} | ||
const event_config = { offline: false }; | ||
if (callback_or_config !== undefined) { | ||
if (typeof callback_or_config === "function") { | ||
event_config.callback = callback_or_config; | ||
} | ||
else { | ||
(callback_or_config.offline !== undefined) && (event_config.offline = callback_or_config.offline); | ||
(callback_or_config.callback !== undefined) && (event_config.callback = callback_or_config.callback); | ||
} | ||
} | ||
if (event_config.callback === undefined) { | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
event_config.offline && (get_offline_list(event_name).length = 0); | ||
get_event_list(event_name).length = 0; | ||
} | ||
} | ||
else { | ||
for (let i = 0, len = event_name_list.length; i < len; i++) { | ||
const event_name = event_name_list[i]; | ||
const event_list = get_event_list(event_name); | ||
for (let j = 0; j < event_list.length; j++) { | ||
const event_info = event_list[j]; | ||
if (event_info.handle === event_config.callback) { // 如果callback和handle是同一个函数那么删除 | ||
event_list.splice(j, 1); | ||
j--; | ||
} | ||
} | ||
} | ||
} | ||
} | ||
// 用于debug的打印 | ||
function debug_print() { | ||
console.log("事件缓存-->", event_cache); | ||
console.log("离线缓存-->", offline_cache); | ||
} | ||
// 定义别名 | ||
const receiver = listener; | ||
const sender = trigger; | ||
const remove = clear; | ||
console.log(`%cemitter-master:%c ${version} %c=> %curl:%c https://www.npmjs.com/package/emitter-master`, "color: #fff;background: purple;padding: 2px 5px;border-radius:4px;font-size: 14px;", "color: purple;font-size:14px;", "color: #333;font-size:14px;", "background: purple;font-size:14px; padding: 2px 5px; border-radius: 4px; color: #fff;", "font-size:14px;"); | ||
// 用于导出的 Event 对象 | ||
const Emitter = { | ||
sender, | ||
receiver, | ||
listener, | ||
once, | ||
trigger, | ||
clear, | ||
debug_print, | ||
remove | ||
}; | ||
exports.Emitter = Emitter; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
return exports; | ||
})({}); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "emitter-master", | ||
"version": "1.0.13", | ||
"version": "1.0.14", | ||
"description": "Support for offline event emitters, event, listener", | ||
@@ -5,0 +5,0 @@ "main": "./cjs/index.cjs", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Unpublished package
Supply chain riskPackage version was not found on the registry. It may exist on a different registry and need to be configured to pull from that registry.
Found 1 instance in 1 package
Unpopular package
QualityThis package is not very popular.
Found 1 instance in 1 package
50811
7
667
0
1