@benmalka/foxdriver
Version:
Foxdriver is a Node library which provides a high-level API to control Firefox over the Remote Debugging Protocol
59 lines (49 loc) • 5.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addEventListener = addEventListener;
exports.removeEventListeners = removeEventListeners;
exports.transformEvaluateArgs = transformEvaluateArgs;
exports.transformEvaluateScript = transformEvaluateScript;
exports.determinePrefValue = determinePrefValue;
function addEventListener(emitter, eventName, handler) {
emitter.on(eventName, handler);
return {
emitter,
eventName,
handler
};
}
function removeEventListeners(listeners) {
for (const listener of listeners) {
listener.emitter.removeListener(listener.eventName, listener.handler);
}
listeners.splice(0, listeners.length);
}
function transformEvaluateArgs(args) {
args = Array.isArray(args) ? args : [args];
return JSON.stringify(args.map(arg => {
if (typeof arg === 'function') {
return arg.toString();
}
return arg;
}));
}
function transformEvaluateScript(script, argsTransformed) {
if (typeof script === 'function') {
return `(${script}).apply(window, ${argsTransformed})`;
}
return `(function () { ${script} }).apply(window, ${argsTransformed})`;
}
function determinePrefValue(value) {
switch (typeof value) {
case 'string':
return `'${value}'`;
case 'boolean':
case 'number':
default:
return value;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi91dGlscy5qcyJdLCJuYW1lcyI6WyJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lcnMiLCJ0cmFuc2Zvcm1FdmFsdWF0ZUFyZ3MiLCJ0cmFuc2Zvcm1FdmFsdWF0ZVNjcmlwdCIsImRldGVybWluZVByZWZWYWx1ZSIsImVtaXR0ZXIiLCJldmVudE5hbWUiLCJoYW5kbGVyIiwib24iLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwic3BsaWNlIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiaXNBcnJheSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYXAiLCJhcmciLCJ0b1N0cmluZyIsInNjcmlwdCIsImFyZ3NUcmFuc2Zvcm1lZCIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUFnQkEsZ0IsR0FBQUEsZ0I7UUFLQUMsb0IsR0FBQUEsb0I7UUFPQUMscUIsR0FBQUEscUI7UUFXQUMsdUIsR0FBQUEsdUI7UUFRQUMsa0IsR0FBQUEsa0I7O0FBL0JULFNBQVNKLGdCQUFULENBQTJCSyxPQUEzQixFQUFvQ0MsU0FBcEMsRUFBK0NDLE9BQS9DLEVBQXdEO0FBQzNERixFQUFBQSxPQUFPLENBQUNHLEVBQVIsQ0FBV0YsU0FBWCxFQUFzQkMsT0FBdEI7QUFDQSxTQUFPO0FBQUVGLElBQUFBLE9BQUY7QUFBV0MsSUFBQUEsU0FBWDtBQUFzQkMsSUFBQUE7QUFBdEIsR0FBUDtBQUNIOztBQUVNLFNBQVNOLG9CQUFULENBQStCUSxTQUEvQixFQUEwQztBQUM3QyxPQUFLLE1BQU1DLFFBQVgsSUFBdUJELFNBQXZCLEVBQWtDO0FBQzlCQyxJQUFBQSxRQUFRLENBQUNMLE9BQVQsQ0FBaUJNLGNBQWpCLENBQWdDRCxRQUFRLENBQUNKLFNBQXpDLEVBQW9ESSxRQUFRLENBQUNILE9BQTdEO0FBQ0g7O0FBQ0RFLEVBQUFBLFNBQVMsQ0FBQ0csTUFBVixDQUFpQixDQUFqQixFQUFvQkgsU0FBUyxDQUFDSSxNQUE5QjtBQUNIOztBQUVNLFNBQVNYLHFCQUFULENBQWdDWSxJQUFoQyxFQUFzQztBQUN6Q0EsRUFBQUEsSUFBSSxHQUFHQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsSUFBZCxJQUFzQkEsSUFBdEIsR0FBNkIsQ0FBQ0EsSUFBRCxDQUFwQztBQUNBLFNBQU9HLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixJQUFJLENBQUNLLEdBQUwsQ0FBVUMsR0FBRCxJQUFTO0FBQ3BDLFFBQUksT0FBT0EsR0FBUCxLQUFlLFVBQW5CLEVBQStCO0FBQzNCLGFBQU9BLEdBQUcsQ0FBQ0MsUUFBSixFQUFQO0FBQ0g7O0FBRUQsV0FBT0QsR0FBUDtBQUNILEdBTnFCLENBQWYsQ0FBUDtBQU9IOztBQUVNLFNBQVNqQix1QkFBVCxDQUFrQ21CLE1BQWxDLEVBQTBDQyxlQUExQyxFQUEyRDtBQUM5RCxNQUFJLE9BQU9ELE1BQVAsS0FBa0IsVUFBdEIsRUFBa0M7QUFDOUIsV0FBUSxJQUFHQSxNQUFPLG1CQUFrQkMsZUFBZ0IsR0FBcEQ7QUFDSDs7QUFFRCxTQUFRLGtCQUFpQkQsTUFBTyxxQkFBb0JDLGVBQWdCLEdBQXBFO0FBQ0g7O0FBRU0sU0FBU25CLGtCQUFULENBQTZCb0IsS0FBN0IsRUFBb0M7QUFDdkMsVUFBUSxPQUFPQSxLQUFmO0FBQ0EsU0FBSyxRQUFMO0FBQWUsYUFBUSxJQUFHQSxLQUFNLEdBQWpCOztBQUNmLFNBQUssU0FBTDtBQUNBLFNBQUssUUFBTDtBQUNBO0FBQVMsYUFBT0EsS0FBUDtBQUpUO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lciAoZW1pdHRlciwgZXZlbnROYW1lLCBoYW5kbGVyKSB7XHJcbiAgICBlbWl0dGVyLm9uKGV2ZW50TmFtZSwgaGFuZGxlcilcclxuICAgIHJldHVybiB7IGVtaXR0ZXIsIGV2ZW50TmFtZSwgaGFuZGxlciB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyAobGlzdGVuZXJzKSB7XHJcbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xyXG4gICAgICAgIGxpc3RlbmVyLmVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIuZXZlbnROYW1lLCBsaXN0ZW5lci5oYW5kbGVyKVxyXG4gICAgfVxyXG4gICAgbGlzdGVuZXJzLnNwbGljZSgwLCBsaXN0ZW5lcnMubGVuZ3RoKVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRXZhbHVhdGVBcmdzIChhcmdzKSB7XHJcbiAgICBhcmdzID0gQXJyYXkuaXNBcnJheShhcmdzKSA/IGFyZ3MgOiBbYXJnc11cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzLm1hcCgoYXJnKSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFyZy50b1N0cmluZygpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXJnXHJcbiAgICB9KSlcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUV2YWx1YXRlU2NyaXB0IChzY3JpcHQsIGFyZ3NUcmFuc2Zvcm1lZCkge1xyXG4gICAgaWYgKHR5cGVvZiBzY3JpcHQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gYCgke3NjcmlwdH0pLmFwcGx5KHdpbmRvdywgJHthcmdzVHJhbnNmb3JtZWR9KWBcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYChmdW5jdGlvbiAoKSB7ICR7c2NyaXB0fSB9KS5hcHBseSh3aW5kb3csICR7YXJnc1RyYW5zZm9ybWVkfSlgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZXRlcm1pbmVQcmVmVmFsdWUgKHZhbHVlKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xyXG4gICAgY2FzZSAnc3RyaW5nJzogcmV0dXJuIGAnJHt2YWx1ZX0nYFxyXG4gICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICBjYXNlICdudW1iZXInOlxyXG4gICAgZGVmYXVsdDogcmV0dXJuIHZhbHVlXHJcbiAgICB9XHJcbn1cclxuIl19