function-tree
Version:
When a function is not enough
166 lines (164 loc) • 7.67 kB
JavaScript
;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Devtools = void 0;
Object.defineProperty(exports, "DevtoolsBase", {
enumerable: true,
get: function get() {
return _base["default"];
}
});
exports["default"] = void 0;
var _Provider2 = _interopRequireDefault(require("../Provider"));
var _base = _interopRequireDefault(require("./base"));
var _universalWebsocketClient = _interopRequireDefault(require("universal-websocket-client"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* global VERSION */ // Used by cerebral/devtools
var Devtools = exports.Devtools = /*#__PURE__*/function (_DevtoolsBase) {
function Devtools(options) {
var _this;
_classCallCheck(this, Devtools);
_this = _callSuper(this, Devtools, [options]);
_this.trees = [];
_this.latestExecutionId = null;
_this.version = "5.2.5";
_this.init();
return _this;
}
_inherits(Devtools, _DevtoolsBase);
return _createClass(Devtools, [{
key: "createSocket",
value: function createSocket() {
this.ws = new _universalWebsocketClient["default"]("".concat(this.https ? 'wss' : 'ws', "://").concat(this.host));
}
}, {
key: "onMessage",
value: function onMessage(event) {
var message = JSON.parse(event.data);
switch (message.type) {
case 'pong':
this.sendInitial();
break;
case 'ping':
this.sendInitial();
break;
}
}
}, {
key: "add",
value: function add(tree) {
this.trees.push(tree);
tree.contextProviders["debugger"] = this.Provider();
this.watchExecution(tree, 'ft');
}
}, {
key: "remove",
value: function remove(tree) {
this.trees.splice(this.trees.indexOf(tree), 1);
delete tree.contextProviders["debugger"];
tree.removeAllListeners('start');
tree.removeAllListeners('end');
tree.removeAllListeners('pathStart');
tree.removeAllListeners('functionStart');
tree.removeAllListeners('functionEnd');
tree.removeAllListeners('error');
}
}, {
key: "removeAll",
value: function removeAll() {
var _this2 = this;
var trees = this.trees.reduce(function (newTrees, tree) {
newTrees.push(tree);
return newTrees;
}, []);
trees.forEach(function (tree) {
_this2.remove(tree);
});
}
}, {
key: "sendInitial",
value: function sendInitial() {
var message = JSON.stringify({
type: 'init',
source: 'ft',
version: this.version
});
this.sendMessage(message);
if (this.backlog.length) {
this.sendBulkMessage(this.backlog, 'ft');
this.backlog = [];
}
this.isConnected = true;
}
/*
Create the stringified message for the debugger. As we need to
store mutations with the default true "storeMutations" option used
by time travel and jumping between Cerebral apps, we are careful
not doing unnecessary stringifying.
*/
}, {
key: "createExecutionMessage",
value: function createExecutionMessage(debuggingData, execution, functionDetails, payload) {
var type = 'execution';
var data = {
execution: {
executionId: execution.id,
functionIndex: functionDetails.functionIndex,
payload: payload,
datetime: execution.datetime,
data: debuggingData
}
};
return this.safeStringify({
type: type,
source: 'ft',
version: this.version,
data: data
});
}
}, {
key: "Provider",
value: function Provider() {
var sendExecutionData = this.sendExecutionData.bind(this);
return new _Provider2["default"]({
send: function send(data) {
sendExecutionData(data, this.context.execution, this.context.functionDetails, this.context.props);
},
wrapProvider: function wrapProvider(name, provider) {
var _this3 = this;
return Object.keys(provider).reduce(function (wrappedProvider, key) {
var originalFunc = provider[key];
wrappedProvider[key] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this3.context["debugger"].send({
method: "".concat(name, ".").concat(key),
args: args
});
return originalFunc.apply(provider, args);
};
return wrappedProvider;
}, {});
}
}, {
wrap: false
});
}
}]);
}(_base["default"]);
var _default = exports["default"] = Devtools;
//# sourceMappingURL=index.js.map