UNPKG

@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
"use strict"; 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