You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
7.4 KiB
206 lines
7.4 KiB
const __commonJS = (cb, mod) => function __require() {
|
|
return mod || (0, cb[Object.getOwnPropertyNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
};
|
|
|
|
// node_modules/pubsub-js/src/pubsub.js
|
|
var require_pubsub = __commonJS({
|
|
"node_modules/pubsub-js/src/pubsub.js"(exports, module) {
|
|
(function(root, factory) {
|
|
"use strict";
|
|
var PubSub = {};
|
|
if (root.PubSub) {
|
|
PubSub = root.PubSub;
|
|
console.warn("PubSub already loaded, using existing version");
|
|
} else {
|
|
root.PubSub = PubSub;
|
|
factory(PubSub);
|
|
}
|
|
if (typeof exports === "object") {
|
|
if (module !== void 0 && module.exports) {
|
|
exports = module.exports = PubSub;
|
|
}
|
|
exports.PubSub = PubSub;
|
|
module.exports = exports = PubSub;
|
|
} else if (typeof define === "function" && define.amd) {
|
|
define(function() {
|
|
return PubSub;
|
|
});
|
|
}
|
|
})(typeof window === "object" && window || exports, function(PubSub) {
|
|
"use strict";
|
|
var messages = {}, lastUid = -1, ALL_SUBSCRIBING_MSG = "*";
|
|
function hasKeys(obj) {
|
|
var key;
|
|
for (key in obj) {
|
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function throwException(ex) {
|
|
return function reThrowException() {
|
|
throw ex;
|
|
};
|
|
}
|
|
function callSubscriberWithDelayedExceptions(subscriber, message, data) {
|
|
try {
|
|
subscriber(message, data);
|
|
} catch (ex) {
|
|
setTimeout(throwException(ex), 0);
|
|
}
|
|
}
|
|
function callSubscriberWithImmediateExceptions(subscriber, message, data) {
|
|
subscriber(message, data);
|
|
}
|
|
function deliverMessage(originalMessage, matchedMessage, data, immediateExceptions) {
|
|
var subscribers = messages[matchedMessage], callSubscriber = immediateExceptions ? callSubscriberWithImmediateExceptions : callSubscriberWithDelayedExceptions, s;
|
|
if (!Object.prototype.hasOwnProperty.call(messages, matchedMessage)) {
|
|
return;
|
|
}
|
|
for (s in subscribers) {
|
|
if (Object.prototype.hasOwnProperty.call(subscribers, s)) {
|
|
callSubscriber(subscribers[s], originalMessage, data);
|
|
}
|
|
}
|
|
}
|
|
function createDeliveryFunction(message, data, immediateExceptions) {
|
|
return function deliverNamespaced() {
|
|
var topic = String(message), position = topic.lastIndexOf(".");
|
|
deliverMessage(message, message, data, immediateExceptions);
|
|
while (position !== -1) {
|
|
topic = topic.substr(0, position);
|
|
position = topic.lastIndexOf(".");
|
|
deliverMessage(message, topic, data, immediateExceptions);
|
|
}
|
|
deliverMessage(message, ALL_SUBSCRIBING_MSG, data, immediateExceptions);
|
|
};
|
|
}
|
|
function hasDirectSubscribersFor(message) {
|
|
var topic = String(message), found = Boolean(Object.prototype.hasOwnProperty.call(messages, topic) && hasKeys(messages[topic]));
|
|
return found;
|
|
}
|
|
function messageHasSubscribers(message) {
|
|
var topic = String(message), found = hasDirectSubscribersFor(topic) || hasDirectSubscribersFor(ALL_SUBSCRIBING_MSG), position = topic.lastIndexOf(".");
|
|
while (!found && position !== -1) {
|
|
topic = topic.substr(0, position);
|
|
position = topic.lastIndexOf(".");
|
|
found = hasDirectSubscribersFor(topic);
|
|
}
|
|
return found;
|
|
}
|
|
function publish(message, data, sync, immediateExceptions) {
|
|
message = typeof message === "symbol" ? message.toString() : message;
|
|
var deliver = createDeliveryFunction(message, data, immediateExceptions), hasSubscribers = messageHasSubscribers(message);
|
|
if (!hasSubscribers) {
|
|
return false;
|
|
}
|
|
if (sync === true) {
|
|
deliver();
|
|
} else {
|
|
setTimeout(deliver, 0);
|
|
}
|
|
return true;
|
|
}
|
|
PubSub.publish = function(message, data) {
|
|
return publish(message, data, false, PubSub.immediateExceptions);
|
|
};
|
|
PubSub.publishSync = function(message, data) {
|
|
return publish(message, data, true, PubSub.immediateExceptions);
|
|
};
|
|
PubSub.subscribe = function(message, func) {
|
|
if (typeof func !== "function") {
|
|
return false;
|
|
}
|
|
message = typeof message === "symbol" ? message.toString() : message;
|
|
if (!Object.prototype.hasOwnProperty.call(messages, message)) {
|
|
messages[message] = {};
|
|
}
|
|
var token = "uid_" + String(++lastUid);
|
|
messages[message][token] = func;
|
|
return token;
|
|
};
|
|
PubSub.subscribeAll = function(func) {
|
|
return PubSub.subscribe(ALL_SUBSCRIBING_MSG, func);
|
|
};
|
|
PubSub.subscribeOnce = function(message, func) {
|
|
var token = PubSub.subscribe(message, function() {
|
|
PubSub.unsubscribe(token);
|
|
func.apply(this, arguments);
|
|
});
|
|
return PubSub;
|
|
};
|
|
PubSub.clearAllSubscriptions = function clearAllSubscriptions() {
|
|
messages = {};
|
|
};
|
|
PubSub.clearSubscriptions = function clearSubscriptions(topic) {
|
|
var m;
|
|
for (m in messages) {
|
|
if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0) {
|
|
delete messages[m];
|
|
}
|
|
}
|
|
};
|
|
PubSub.countSubscriptions = function countSubscriptions(topic) {
|
|
var m;
|
|
var token;
|
|
var count = 0;
|
|
for (m in messages) {
|
|
if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0) {
|
|
for (token in messages[m]) {
|
|
count++;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return count;
|
|
};
|
|
PubSub.getSubscriptions = function getSubscriptions(topic) {
|
|
var m;
|
|
var list = [];
|
|
for (m in messages) {
|
|
if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0) {
|
|
list.push(m);
|
|
}
|
|
}
|
|
return list;
|
|
};
|
|
PubSub.unsubscribe = function(value) {
|
|
var descendantTopicExists = function(topic) {
|
|
var m2;
|
|
for (m2 in messages) {
|
|
if (Object.prototype.hasOwnProperty.call(messages, m2) && m2.indexOf(topic) === 0) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}, isTopic = typeof value === "string" && (Object.prototype.hasOwnProperty.call(messages, value) || descendantTopicExists(value)), isToken = !isTopic && typeof value === "string", isFunction = typeof value === "function", result = false, m, message, t;
|
|
if (isTopic) {
|
|
PubSub.clearSubscriptions(value);
|
|
return;
|
|
}
|
|
for (m in messages) {
|
|
if (Object.prototype.hasOwnProperty.call(messages, m)) {
|
|
message = messages[m];
|
|
if (isToken && message[value]) {
|
|
delete message[value];
|
|
result = value;
|
|
break;
|
|
}
|
|
if (isFunction) {
|
|
for (t in message) {
|
|
if (Object.prototype.hasOwnProperty.call(message, t) && message[t] === value) {
|
|
delete message[t];
|
|
result = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
});
|
|
}
|
|
});
|
|
export default require_pubsub();
|
|
|
|
|