UNPKG

6.07 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
9function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
11function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
12
13function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
14
15/**
16 * A Command extends the Function class by generating Javascript
17 * and passing it directly to the Function (super) constructor.
18 */
19var commandCount = 0;
20
21var Command = exports.Command = function (_Function) {
22 _inherits(Command, _Function);
23
24 _createClass(Command, null, [{
25 key: 'count',
26 value: function (_count) {
27 function count() {
28 return _count.apply(this, arguments);
29 }
30
31 count.toString = function () {
32 return _count.toString();
33 };
34
35 return count;
36 }(function () {
37 return count;
38 })
39 }, {
40 key: 'codegen',
41 value: function codegen(fn) {
42 if ('function' != typeof fn) {
43 throw new TypeError("Expecting a function");
44 } else {
45 return '"use strict"; return (' + String(fn) + ').apply(this, arguments);';
46 }
47 }
48 }]);
49
50 function Command(fn) {
51 var _ret;
52
53 _classCallCheck(this, Command);
54
55 if ('function' != typeof fn) {
56 throw new TypeError("Command constructor expects a function.");
57 }
58 // initialize underlying function wrap
59
60 var _this = _possibleConstructorReturn(this, (Command.__proto__ || Object.getPrototypeOf(Command)).call(this, Command.codegen(function wrap(fn) {
61 return fn.apply(fn, Array.prototype.slice.call(arguments, 1));
62 })));
63
64 var exec = function exec() {
65 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
66 args[_key] = arguments[_key];
67 }
68
69 return _this.apply(undefined, [fn].concat(args));
70 };
71 _this.constructor = exec.constructor = Command;
72 void commandCount++;
73 return _ret = Object.assign(exec, { 'this': _this }), _possibleConstructorReturn(_this, _ret);
74 }
75
76 return Command;
77}(Function);
78//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2NvbW1hbmQuanMiXSwibmFtZXMiOlsiY29tbWFuZENvdW50IiwiQ29tbWFuZCIsImNvdW50IiwiZm4iLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJjb2RlZ2VuIiwid3JhcCIsImFwcGx5IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJleGVjIiwiYXJncyIsImNvbnN0cnVjdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwiRnVuY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFJQSxJQUFJQSxlQUFlLENBQW5COztJQUNhQyxPLFdBQUFBLE87Ozs7Ozs7Ozs7Ozs7OztrQkFDSTtBQUFFLGFBQU9DLEtBQVA7QUFBYyxLOzs7NEJBQ2hCQyxFLEVBQUk7QUFDakIsVUFBSSxjQUFjLE9BQU9BLEVBQXpCLEVBQTZCO0FBQUUsY0FBTSxJQUFJQyxTQUFKLENBQWMsc0JBQWQsQ0FBTjtBQUE2QyxPQUE1RSxNQUNLO0FBQUUsMENBQWdDQyxPQUFPRixFQUFQLENBQWhDO0FBQXVFO0FBQy9FOzs7QUFFRCxtQkFBWUEsRUFBWixFQUFnQjtBQUFBOztBQUFBOztBQUNkLFFBQUksY0FBYyxPQUFPQSxFQUF6QixFQUE2QjtBQUMzQixZQUFNLElBQUlDLFNBQUosQ0FBYyx5Q0FBZCxDQUFOO0FBQ0Q7QUFDRDs7QUFKYyxrSEFLUkgsUUFBUUssT0FBUixDQUFnQixTQUFTQyxJQUFULENBQWNKLEVBQWQsRUFBa0I7QUFDdEMsYUFBT0EsR0FBR0ssS0FBSCxDQUFTTCxFQUFULEVBQWFNLE1BQU1DLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkMsU0FBM0IsRUFBc0MsQ0FBdEMsQ0FBYixDQUFQO0FBQ0QsS0FGSyxDQUxROztBQVFkLFFBQU1DLE9BQU8sU0FBUEEsSUFBTztBQUFBLHdDQUFJQyxJQUFKO0FBQUlBLFlBQUo7QUFBQTs7QUFBQSxhQUFhLHdCQUFLWixFQUFMLFNBQVlZLElBQVosRUFBYjtBQUFBLEtBQWI7QUFDQSxVQUFLQyxXQUFMLEdBQW1CRixLQUFLRSxXQUFMLEdBQW1CZixPQUF0QztBQUNBLFNBQUtELGNBQUw7QUFDQSxrQkFBT2lCLE9BQU9DLE1BQVAsQ0FBY0osSUFBZCxFQUFvQixFQUFDLGFBQUQsRUFBcEIsQ0FBUDtBQUNEOzs7RUFuQjBCSyxRIiwiZmlsZSI6ImNvbW1hbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgQ29tbWFuZCBleHRlbmRzIHRoZSBGdW5jdGlvbiBjbGFzcyBieSBnZW5lcmF0aW5nIEphdmFzY3JpcHRcbiAqIGFuZCBwYXNzaW5nIGl0IGRpcmVjdGx5IHRvIHRoZSBGdW5jdGlvbiAoc3VwZXIpIGNvbnN0cnVjdG9yLlxuICovXG5sZXQgY29tbWFuZENvdW50ID0gMFxuZXhwb3J0IGNsYXNzIENvbW1hbmQgZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIHN0YXRpYyBjb3VudCgpIHsgcmV0dXJuIGNvdW50IH1cbiAgc3RhdGljIGNvZGVnZW4oZm4pIHtcbiAgICBpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgZm4pIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGluZyBhIGZ1bmN0aW9uXCIpIH1cbiAgICBlbHNlIHsgcmV0dXJuIGBcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgke1N0cmluZyhmbil9KS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO2AgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoZm4pIHtcbiAgICBpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgZm4pIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb21tYW5kIGNvbnN0cnVjdG9yIGV4cGVjdHMgYSBmdW5jdGlvbi5cIilcbiAgICB9XG4gICAgLy8gaW5pdGlhbGl6ZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHdyYXBcbiAgICBzdXBlcihDb21tYW5kLmNvZGVnZW4oZnVuY3Rpb24gd3JhcChmbikge1xuICAgICAgcmV0dXJuIGZuLmFwcGx5KGZuLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKVxuICAgIH0pKVxuICAgIGNvbnN0IGV4ZWMgPSAoLi4uYXJncykgPT4gdGhpcyhmbiwgLi4uYXJncylcbiAgICB0aGlzLmNvbnN0cnVjdG9yID0gZXhlYy5jb25zdHJ1Y3RvciA9IENvbW1hbmRcbiAgICB2b2lkIGNvbW1hbmRDb3VudCArK1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV4ZWMsIHsndGhpcyc6IHRoaXN9KVxuICB9XG59XG4iXX0=
\No newline at end of file