From 127b6429e7f6769b82e0deb0a7ae4b2bddc7b6ff Mon Sep 17 00:00:00 2001 From: Morten Daniel Fornes Date: Mon, 16 Jan 2023 20:08:21 +0700 Subject: [PATCH 1/2] test: add async.ts --- test/async.ts | 6 ++++++ test/async.ts.g.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 test/async.ts create mode 100644 test/async.ts.g.js diff --git a/test/async.ts b/test/async.ts new file mode 100644 index 0000000..96a5300 --- /dev/null +++ b/test/async.ts @@ -0,0 +1,6 @@ +async function haha() { +} + +async function hoho() { + await haha() +} diff --git a/test/async.ts.g.js b/test/async.ts.g.js new file mode 100644 index 0000000..e7dea2f --- /dev/null +++ b/test/async.ts.g.js @@ -0,0 +1,52 @@ +"use strict"; + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function haha() { + return _haha.apply(this, arguments); +} + +function _haha() { + _haha = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + return _haha.apply(this, arguments); +} + +function hoho() { + return _hoho.apply(this, arguments); +} + +function _hoho() { + _hoho = _asyncToGenerator( + /*#__PURE__*/ + regeneratorRuntime.mark(function _callee2() { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return haha(); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); + return _hoho.apply(this, arguments); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzeW5jLnRzIl0sIm5hbWVzIjpbImhhaGEiLCJob2hvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7U0FBZUEsSTs7Ozs7OzswQkFBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7U0FHZUMsSTs7Ozs7OzswQkFBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDVUQsSUFBSSxFQURkOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJzb3VyY2VzQ29udGVudCI6WyJhc3luYyBmdW5jdGlvbiBoYWhhKCkge1xufVxuXG5hc3luYyBmdW5jdGlvbiBob2hvKCkge1xuICAgIGF3YWl0IGhhaGEoKVxufVxuIl19 From 7e6b4029ac73d5234f1bf57f65f13b02cb925497 Mon Sep 17 00:00:00 2001 From: Morten Daniel Fornes Date: Mon, 16 Jan 2023 20:10:40 +0700 Subject: [PATCH 2/2] target nodejs v8 (BREAKING) This adds support for async/await. Prior to this patch, transpiled code using these features had references to "regeneratorRuntime", which gives errors at runtime when used in Fuse apps since "regeneratorRuntime" is not defined there. Node.js v8 uses V8 v5.8, which is older than the version(s) we're currently using in Fuse apps, so it's fairly safe to assume that all JavaScript features used by transpiled code are supported in Fuse. --- src/server.js | 12 +- test/ParameterEditor.ts.g.js | 247 +++++++++++++++-------------------- test/async.ts.g.js | 53 +------- test/chaining.js.g.js | 8 +- test/class-prop.js.g.js | 19 ++- test/decorators.js.g.js | 49 ++++--- test/decorators.ts.g.js | 49 ++++--- test/metadata.ts.g.js | 33 +++-- test/test.js.g.js | 64 ++++----- 9 files changed, 219 insertions(+), 315 deletions(-) diff --git a/src/server.js b/src/server.js index 59ca33e..6f7fb65 100644 --- a/src/server.js +++ b/src/server.js @@ -24,13 +24,21 @@ function transpile(filename, code) { babel_plugin_proposal_object_rest_spread, babel_plugin_proposal_optional_chaining ] + const target = [ + babel_preset_env, + { + "targets": { + "node": "8" + } + } + ] if (ext == "ts") { return babel.transform(code, { filename: filename, presets: [ babel_preset_typescript, - babel_preset_env + target ], plugins: plugins, sourceMaps: "inline" @@ -39,7 +47,7 @@ function transpile(filename, code) { return babel.transform(code, { filename: filename, presets: [ - babel_preset_env + target ], plugins: plugins, sourceMaps: "inline" diff --git a/test/ParameterEditor.ts.g.js b/test/ParameterEditor.ts.g.js index e9c119d..e75ed47 100644 --- a/test/ParameterEditor.ts.g.js +++ b/test/ParameterEditor.ts.g.js @@ -3,20 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports["default"] = void 0; +exports.default = void 0; var _Dropdown = _interopRequireDefault(require("../controls/Dropdown")); var _App = _interopRequireDefault(require("Native/App")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -var ParametersEditor = /*#__PURE__*/function () { - function ParametersEditor() { - _classCallCheck(this, ParametersEditor); +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +class ParametersEditor { + constructor() { _defineProperty(this, "haveSelected", false); _defineProperty(this, "developer", false); _defineProperty(this, "visible", false); @@ -24,91 +19,71 @@ var ParametersEditor = /*#__PURE__*/function () { _defineProperty(this, "parameters", []); _defineProperty(this, "mappedSections", {}); } - _createClass(ParametersEditor, [{ - key: "open", - value: function open() { - this.filterMenu(); - this.visible = true; - } - }, { - key: "close", - value: function close() { - this.visible = false; - } - }, { - key: "clear", - value: function clear() { - this.sections.length = 0; - this.parameters.length = 0; - this.mappedSections = {}; - } - }, { - key: "addSection", - value: function addSection(name) { - var section = new MenuSection(this, name); - this.sections.push(section); - this.mappedSections[name] = section; - return section; + open() { + this.filterMenu(); + this.visible = true; + } + close() { + this.visible = false; + } + clear() { + this.sections.length = 0; + this.parameters.length = 0; + this.mappedSections = {}; + } + addSection(name) { + var section = new MenuSection(this, name); + this.sections.push(section); + this.mappedSections[name] = section; + return section; + } + filterMenu(developer) { + if (developer === undefined) developer = this.developer; + for (var i = 0; i < this.sections.length; i++) { + this.sections[i].visible = false; + for (var j = 0; j < this.sections[i].parameters.length; j++) { + this.sections[i].parameters[j].visible = !this.sections[i].parameters[j].developer || developer; + if (this.sections[i].parameters[j].visible) this.sections[i].visible = true; + } } - }, { - key: "filterMenu", - value: function filterMenu(developer) { - if (developer === undefined) developer = this.developer; - for (var i = 0; i < this.sections.length; i++) { - this.sections[i].visible = false; - for (var j = 0; j < this.sections[i].parameters.length; j++) { - this.sections[i].parameters[j].visible = !this.sections[i].parameters[j].developer || developer; - if (this.sections[i].parameters[j].visible) this.sections[i].visible = true; + if (!this.haveSelected) { + for (var j = 0; j < this.sections.length; j++) { + if (this.sections[j].visible) { + this.onSelected(this.sections[j]); + return; } } - if (!this.haveSelected) { - for (var j = 0; j < this.sections.length; j++) { - if (this.sections[j].visible) { - this.onSelected(this.sections[j]); - return; - } - } - } else if (!developer) { - for (var i = 0; i < this.sections.length; i++) { - if (this.sections[i].selected && !this.sections[i].visible) { - for (var j = 0; j < this.sections.length; j++) { - if (this.sections[j].visible) { - this.onSelected(this.sections[j]); - return; - } + } else if (!developer) { + for (var i = 0; i < this.sections.length; i++) { + if (this.sections[i].selected && !this.sections[i].visible) { + for (var j = 0; j < this.sections.length; j++) { + if (this.sections[j].visible) { + this.onSelected(this.sections[j]); + return; } } } } } - }, { - key: "onSelected", - value: function onSelected(arg) { - this.parameters = arg.parameters; - this.haveSelected = true; - for (var i = 0; i < this.sections.length; i++) this.sections[i].selected = this.sections[i] === arg; - _App["default"].queryEntityParameters(arg.name); - } - }, { - key: "developerChanged", - value: function developerChanged(arg) { - this.filterMenu(arg.value); - } - }, { - key: "onEntityParameter", - value: function onEntityParameter(section, parameter, value) { - if (!this.mappedSections[section] || !this.mappedSections[section].mappedParameters[parameter]) return; - this.mappedSections[section].mappedParameters[parameter].resetValue(value); - } - }]); - return ParametersEditor; -}(); -exports["default"] = ParametersEditor; + } + onSelected(arg) { + this.parameters = arg.parameters; + this.haveSelected = true; + for (var i = 0; i < this.sections.length; i++) this.sections[i].selected = this.sections[i] === arg; + _App.default.queryEntityParameters(arg.name); + } + developerChanged(arg) { + this.filterMenu(arg.value); + } + onEntityParameter(section, parameter, value) { + if (!this.mappedSections[section] || !this.mappedSections[section].mappedParameters[parameter]) return; + this.mappedSections[section].mappedParameters[parameter].resetValue(value); + } +} +exports.default = ParametersEditor; // Dynamic menu parameters -var MenuParameter = /*#__PURE__*/function () { - function MenuParameter(section, name, type, visibility, defaultValue, dropdownValues, units) { - var _this = this; - _classCallCheck(this, MenuParameter); +class MenuParameter { + constructor(section, name, type, visibility, defaultValue, dropdownValues, units) { _defineProperty(this, "section", void 0); _defineProperty(this, "key", void 0); _defineProperty(this, "developer", void 0); @@ -128,10 +103,10 @@ var MenuParameter = /*#__PURE__*/function () { this.units = units; if (dropdownValues) { this.type = "dropdown"; - this.dropdown = new _Dropdown["default"](function (value) { - if (_this.value === value.name) return; - _this.value = value.name; - _this.valueChanged({ + this.dropdown = new _Dropdown.default(value => { + if (this.value === value.name) return; + this.value = value.name; + this.valueChanged({ value: value.name }); }); @@ -154,41 +129,31 @@ var MenuParameter = /*#__PURE__*/function () { } this.resetValue(defaultValue); } - _createClass(MenuParameter, [{ - key: "resetValue", - value: function resetValue(value) { - if (this.type == "switch") this.value = value == "1" || value && value.toLowerCase() == "true";else this.value = value; - if (this.type == "dropdown") for (var i = 0; i < this.dropdown.items.length; i++) if (this.dropdown.items[i].name == this.value) this.dropdown.select(this.dropdown.items[i]); - this.oldValue = this.value; - //console.log("reset " + this.section.name + "/" + this.key + " = " + this.value); - } - }, { - key: "valueChanged", - value: function valueChanged(arg) { - // Defer applying text or number values to DUNE until focusLost(), - // avoiding sending new values every time a new character is typed. - if (this.type == "text" || this.type == "number") this.dirty = true;else this.applyValue(arg.value); - } - }, { - key: "focusLost", - value: function focusLost() { - if (this.dirty) this.applyValue(this.value); - } - }, { - key: "applyValue", - value: function applyValue(value) { - this.dirty = false; - if (this.oldValue == value) return; - this.oldValue = value; - //console.log("apply " + this.section.name + "/" + this.key + " = " + value); - _App["default"].setEntityParameter(this.section.name, this.key, value); - } - }]); - return MenuParameter; -}(); -var MenuSection = /*#__PURE__*/function () { - function MenuSection(editor, name) { - _classCallCheck(this, MenuSection); + resetValue(value) { + if (this.type == "switch") this.value = value == "1" || value && value.toLowerCase() == "true";else this.value = value; + if (this.type == "dropdown") for (var i = 0; i < this.dropdown.items.length; i++) if (this.dropdown.items[i].name == this.value) this.dropdown.select(this.dropdown.items[i]); + this.oldValue = this.value; + //console.log("reset " + this.section.name + "/" + this.key + " = " + this.value); + } + + valueChanged(arg) { + // Defer applying text or number values to DUNE until focusLost(), + // avoiding sending new values every time a new character is typed. + if (this.type == "text" || this.type == "number") this.dirty = true;else this.applyValue(arg.value); + } + focusLost() { + if (this.dirty) this.applyValue(this.value); + } + applyValue(value) { + this.dirty = false; + if (this.oldValue == value) return; + this.oldValue = value; + //console.log("apply " + this.section.name + "/" + this.key + " = " + value); + _App.default.setEntityParameter(this.section.name, this.key, value); + } +} +class MenuSection { + constructor(editor, name) { _defineProperty(this, "editor", void 0); _defineProperty(this, "name", void 0); _defineProperty(this, "visible", true); @@ -198,21 +163,15 @@ var MenuSection = /*#__PURE__*/function () { this.editor = editor; this.name = name; } - _createClass(MenuSection, [{ - key: "addParameter", - value: function addParameter(name, type, visibility, defaultValue, dropdownValues, units) { - var parameter = new MenuParameter(this, name, type, visibility, defaultValue, dropdownValues, units); - this.parameters.push(parameter); - this.mappedParameters[name] = parameter; - parameter.even = this.parameters.length % 2 == 0; - return parameter; - } - }, { - key: "onSelect", - value: function onSelect() { - this.editor.onSelected(this); - } - }]); - return MenuSection; -}(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJhbWV0ZXJzRWRpdG9yIiwiZmlsdGVyTWVudSIsInZpc2libGUiLCJzZWN0aW9ucyIsImxlbmd0aCIsInBhcmFtZXRlcnMiLCJtYXBwZWRTZWN0aW9ucyIsIm5hbWUiLCJzZWN0aW9uIiwiTWVudVNlY3Rpb24iLCJwdXNoIiwiZGV2ZWxvcGVyIiwidW5kZWZpbmVkIiwiaSIsImoiLCJoYXZlU2VsZWN0ZWQiLCJvblNlbGVjdGVkIiwic2VsZWN0ZWQiLCJhcmciLCJOYXRpdmVBcHAiLCJxdWVyeUVudGl0eVBhcmFtZXRlcnMiLCJ2YWx1ZSIsInBhcmFtZXRlciIsIm1hcHBlZFBhcmFtZXRlcnMiLCJyZXNldFZhbHVlIiwiTWVudVBhcmFtZXRlciIsInR5cGUiLCJ2aXNpYmlsaXR5IiwiZGVmYXVsdFZhbHVlIiwiZHJvcGRvd25WYWx1ZXMiLCJ1bml0cyIsImtleSIsImRyb3Bkb3duIiwiRHJvcGRvd24iLCJ2YWx1ZUNoYW5nZWQiLCJhcnJheSIsInNwbGl0IiwiaXRlbSIsInRyaW0iLCJpdGVtcyIsInRvTG93ZXJDYXNlIiwic2VsZWN0Iiwib2xkVmFsdWUiLCJkaXJ0eSIsImFwcGx5VmFsdWUiLCJzZXRFbnRpdHlQYXJhbWV0ZXIiLCJlZGl0b3IiLCJldmVuIl0sInNvdXJjZXMiOlsiUGFyYW1ldGVyRWRpdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEcm9wZG93biBmcm9tIFwiLi4vY29udHJvbHMvRHJvcGRvd25cIjtcbmltcG9ydCBOYXRpdmVBcHAgZnJvbSBcIk5hdGl2ZS9BcHBcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVyc0VkaXRvciB7XG4gICAgaGF2ZVNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGV2ZWxvcGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHNlY3Rpb25zOiBNZW51U2VjdGlvbltdID0gW107XG4gICAgcGFyYW1ldGVyczogTWVudVBhcmFtZXRlcltdID0gW107XG4gICAgbWFwcGVkU2VjdGlvbnM6IHt9ID0ge307XG5cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlck1lbnUoKTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VjdGlvbnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMubWFwcGVkU2VjdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBhZGRTZWN0aW9uKG5hbWU6IHN0cmluZyk6IE1lbnVTZWN0aW9uIHtcbiAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgTWVudVNlY3Rpb24odGhpcywgbmFtZSk7XG4gICAgICAgIHRoaXMuc2VjdGlvbnMucHVzaChzZWN0aW9uKTtcbiAgICAgICAgdGhpcy5tYXBwZWRTZWN0aW9uc1tuYW1lXSA9IHNlY3Rpb247XG4gICAgICAgIHJldHVybiBzZWN0aW9uO1xuICAgIH1cblxuICAgIGZpbHRlck1lbnUoZGV2ZWxvcGVyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZGV2ZWxvcGVyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBkZXZlbG9wZXIgPSB0aGlzLmRldmVsb3BlcjtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbaV0udmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuc2VjdGlvbnNbaV0ucGFyYW1ldGVycy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbaV0ucGFyYW1ldGVyc1tqXS52aXNpYmxlID0gIXRoaXMuc2VjdGlvbnNbaV0ucGFyYW1ldGVyc1tqXS5kZXZlbG9wZXIgfHwgZGV2ZWxvcGVyO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlY3Rpb25zW2ldLnBhcmFtZXRlcnNbal0udmlzaWJsZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1tpXS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXZlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlY3Rpb25zW2pdLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkKHRoaXMuc2VjdGlvbnNbal0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFkZXZlbG9wZXIpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlY3Rpb25zW2ldLnNlbGVjdGVkICYmICF0aGlzLnNlY3Rpb25zW2ldLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLnNlY3Rpb25zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWN0aW9uc1tqXS52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGVkKHRoaXMuc2VjdGlvbnNbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0ZWQoYXJnOiBNZW51U2VjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSBhcmcucGFyYW1ldGVycztcbiAgICAgICAgdGhpcy5oYXZlU2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbaV0uc2VsZWN0ZWQgPSB0aGlzLnNlY3Rpb25zW2ldID09PSBhcmc7XG5cbiAgICAgICAgTmF0aXZlQXBwLnF1ZXJ5RW50aXR5UGFyYW1ldGVycyhhcmcubmFtZSk7XG4gICAgfVxuXG4gICAgZGV2ZWxvcGVyQ2hhbmdlZChhcmc6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlck1lbnUoYXJnLnZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkVudGl0eVBhcmFtZXRlcihzZWN0aW9uOiBzdHJpbmcsIHBhcmFtZXRlcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tYXBwZWRTZWN0aW9uc1tzZWN0aW9uXSB8fFxuICAgICAgICAgICAgIXRoaXMubWFwcGVkU2VjdGlvbnNbc2VjdGlvbl0ubWFwcGVkUGFyYW1ldGVyc1twYXJhbWV0ZXJdKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWFwcGVkU2VjdGlvbnNbc2VjdGlvbl0ubWFwcGVkUGFyYW1ldGVyc1twYXJhbWV0ZXJdLnJlc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbn1cblxudHlwZSBWYWx1ZSA9IHN0cmluZyB8IGJvb2xlYW47XG5cbmludGVyZmFjZSBEYXRhIHtcbiAgICB2YWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBJdGVtIHtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbi8vIER5bmFtaWMgbWVudSBwYXJhbWV0ZXJzXG5jbGFzcyBNZW51UGFyYW1ldGVyIHtcbiAgICBzZWN0aW9uOiBNZW51U2VjdGlvbjtcbiAgICBrZXk6IHN0cmluZztcbiAgICBkZXZlbG9wZXI6IGJvb2xlYW47XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVuaXRzOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGRyb3Bkb3duOiBEcm9wZG93bjxJdGVtPjtcbiAgICB2YWx1ZTogVmFsdWU7XG4gICAgb2xkVmFsdWU6IFZhbHVlO1xuICAgIGRpcnR5OiBib29sZWFuO1xuICAgIGV2ZW46IGJvb2xlYW47XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHNlY3Rpb246IE1lbnVTZWN0aW9uLCBuYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgdmlzaWJpbGl0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZywgZHJvcGRvd25WYWx1ZXM6IHN0cmluZywgdW5pdHM6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlY3Rpb24gPSBzZWN0aW9uO1xuICAgICAgICB0aGlzLmtleSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGV2ZWxvcGVyID0gdmlzaWJpbGl0eSA9PSBcImRldmVsb3BlclwiO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnVuaXRzID0gdW5pdHM7XG5cbiAgICAgICAgaWYgKGRyb3Bkb3duVmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBcImRyb3Bkb3duXCI7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duID0gbmV3IERyb3Bkb3duKCh2YWx1ZTogSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSB2YWx1ZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUubmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZCh7dmFsdWU6IHZhbHVlLm5hbWV9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGFycmF5ID0gZHJvcGRvd25WYWx1ZXMuc3BsaXQoXCIsXCIpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB7bmFtZTogYXJyYXlbaV0udHJpbSgpfTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInJlYWxcIikge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gXCJkZWNpbWFsXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcImludGVnZXJcIikge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gXCJpbnRlZ2VyXCI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gXCJzd2l0Y2hcIjtcbiAgICAgICAgfSBlbHNlIHsgLy8gbGlzdDpyZWFsIHx8IG1hdHJpeCB8fCBsaXN0OmludGVnZXIgfHwgLi4uXG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgIH1cblxuICAgIHJlc2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50eXBlID09IFwic3dpdGNoXCIpXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUgPT0gXCIxXCIgfHwgdmFsdWUgJiYgdmFsdWUudG9Mb3dlckNhc2UoKSA9PSBcInRydWVcIjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJkcm9wZG93blwiKVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRyb3Bkb3duLml0ZW1zLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyb3Bkb3duLml0ZW1zW2ldLm5hbWUgPT0gdGhpcy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5zZWxlY3QodGhpcy5kcm9wZG93bi5pdGVtc1tpXSk7XG5cbiAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJyZXNldCBcIiArIHRoaXMuc2VjdGlvbi5uYW1lICsgXCIvXCIgKyB0aGlzLmtleSArIFwiID0gXCIgKyB0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB2YWx1ZUNoYW5nZWQoYXJnOiBEYXRhKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmVyIGFwcGx5aW5nIHRleHQgb3IgbnVtYmVyIHZhbHVlcyB0byBEVU5FIHVudGlsIGZvY3VzTG9zdCgpLFxuICAgICAgICAvLyBhdm9pZGluZyBzZW5kaW5nIG5ldyB2YWx1ZXMgZXZlcnkgdGltZSBhIG5ldyBjaGFyYWN0ZXIgaXMgdHlwZWQuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJ0ZXh0XCIgfHwgdGhpcy50eXBlID09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5hcHBseVZhbHVlKGFyZy52YWx1ZSk7XG4gICAgfVxuXG4gICAgZm9jdXNMb3N0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXJ0eSlcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBhcHBseVZhbHVlKHZhbHVlOiBWYWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMub2xkVmFsdWUgPT0gdmFsdWUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXBwbHkgXCIgKyB0aGlzLnNlY3Rpb24ubmFtZSArIFwiL1wiICsgdGhpcy5rZXkgKyBcIiA9IFwiICsgdmFsdWUpO1xuICAgICAgICBOYXRpdmVBcHAuc2V0RW50aXR5UGFyYW1ldGVyKHRoaXMuc2VjdGlvbi5uYW1lLCB0aGlzLmtleSwgdmFsdWUpO1xuICAgIH1cbn1cblxuY2xhc3MgTWVudVNlY3Rpb24ge1xuICAgIGVkaXRvcjogUGFyYW1ldGVyc0VkaXRvcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwYXJhbWV0ZXJzOiBNZW51UGFyYW1ldGVyW10gPSBbXTtcbiAgICBtYXBwZWRQYXJhbWV0ZXJzOiB7fSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yOiBQYXJhbWV0ZXJzRWRpdG9yLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgfVxuXG4gICAgYWRkUGFyYW1ldGVyKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nLCB2aXNpYmlsaXR5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nLCBkcm9wZG93blZhbHVlczogc3RyaW5nLCB1bml0czogc3RyaW5nKTogTWVudVBhcmFtZXRlciB7XG4gICAgICAgIHZhciBwYXJhbWV0ZXIgPSBuZXcgTWVudVBhcmFtZXRlcih0aGlzLCBuYW1lLCB0eXBlLCB2aXNpYmlsaXR5LCBkZWZhdWx0VmFsdWUsIGRyb3Bkb3duVmFsdWVzLCB1bml0cyk7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5wdXNoKHBhcmFtZXRlcik7XG4gICAgICAgIHRoaXMubWFwcGVkUGFyYW1ldGVyc1tuYW1lXSA9IHBhcmFtZXRlcjtcbiAgICAgICAgcGFyYW1ldGVyLmV2ZW4gPSB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoICUgMiA9PSAwO1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH1cblxuICAgIG9uU2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvci5vblNlbGVjdGVkKHRoaXMpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUFtQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFZEEsZ0JBQWdCO0VBQUE7SUFBQTtJQUFBLHNDQUNULEtBQUs7SUFBQSxtQ0FDUixLQUFLO0lBQUEsaUNBQ1AsS0FBSztJQUFBLGtDQUNFLEVBQUU7SUFBQSxvQ0FDRSxFQUFFO0lBQUEsd0NBQ1gsQ0FBQyxDQUFDO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0FFdkIsZ0JBQWE7TUFDVCxJQUFJLENBQUNDLFVBQVUsRUFBRTtNQUNqQixJQUFJLENBQUNDLE9BQU8sR0FBRyxJQUFJO0lBQ3ZCO0VBQUM7SUFBQTtJQUFBLE9BRUQsaUJBQWM7TUFDVixJQUFJLENBQUNBLE9BQU8sR0FBRyxLQUFLO0lBQ3hCO0VBQUM7SUFBQTtJQUFBLE9BRUQsaUJBQWM7TUFDVixJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7TUFDeEIsSUFBSSxDQUFDQyxVQUFVLENBQUNELE1BQU0sR0FBRyxDQUFDO01BQzFCLElBQUksQ0FBQ0UsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QjtFQUFDO0lBQUE7SUFBQSxPQUVELG9CQUFXQyxJQUFZLEVBQWU7TUFDbEMsSUFBSUMsT0FBTyxHQUFHLElBQUlDLFdBQVcsQ0FBQyxJQUFJLEVBQUVGLElBQUksQ0FBQztNQUN6QyxJQUFJLENBQUNKLFFBQVEs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 + addParameter(name, type, visibility, defaultValue, dropdownValues, units) { + var parameter = new MenuParameter(this, name, type, visibility, defaultValue, dropdownValues, units); + this.parameters.push(parameter); + this.mappedParameters[name] = parameter; + parameter.even = this.parameters.length % 2 == 0; + return parameter; + } + onSelect() { + this.editor.onSelected(this); + } +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJhbWV0ZXJzRWRpdG9yIiwib3BlbiIsImZpbHRlck1lbnUiLCJ2aXNpYmxlIiwiY2xvc2UiLCJjbGVhciIsInNlY3Rpb25zIiwibGVuZ3RoIiwicGFyYW1ldGVycyIsIm1hcHBlZFNlY3Rpb25zIiwiYWRkU2VjdGlvbiIsIm5hbWUiLCJzZWN0aW9uIiwiTWVudVNlY3Rpb24iLCJwdXNoIiwiZGV2ZWxvcGVyIiwidW5kZWZpbmVkIiwiaSIsImoiLCJoYXZlU2VsZWN0ZWQiLCJvblNlbGVjdGVkIiwic2VsZWN0ZWQiLCJhcmciLCJOYXRpdmVBcHAiLCJxdWVyeUVudGl0eVBhcmFtZXRlcnMiLCJkZXZlbG9wZXJDaGFuZ2VkIiwidmFsdWUiLCJvbkVudGl0eVBhcmFtZXRlciIsInBhcmFtZXRlciIsIm1hcHBlZFBhcmFtZXRlcnMiLCJyZXNldFZhbHVlIiwiTWVudVBhcmFtZXRlciIsImNvbnN0cnVjdG9yIiwidHlwZSIsInZpc2liaWxpdHkiLCJkZWZhdWx0VmFsdWUiLCJkcm9wZG93blZhbHVlcyIsInVuaXRzIiwia2V5IiwiZHJvcGRvd24iLCJEcm9wZG93biIsInZhbHVlQ2hhbmdlZCIsImFycmF5Iiwic3BsaXQiLCJpdGVtIiwidHJpbSIsIml0ZW1zIiwidG9Mb3dlckNhc2UiLCJzZWxlY3QiLCJvbGRWYWx1ZSIsImRpcnR5IiwiYXBwbHlWYWx1ZSIsImZvY3VzTG9zdCIsInNldEVudGl0eVBhcmFtZXRlciIsImVkaXRvciIsImFkZFBhcmFtZXRlciIsImV2ZW4iLCJvblNlbGVjdCJdLCJzb3VyY2VzIjpbIlBhcmFtZXRlckVkaXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4uL2NvbnRyb2xzL0Ryb3Bkb3duXCI7XG5pbXBvcnQgTmF0aXZlQXBwIGZyb20gXCJOYXRpdmUvQXBwXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnNFZGl0b3Ige1xuICAgIGhhdmVTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRldmVsb3BlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBzZWN0aW9uczogTWVudVNlY3Rpb25bXSA9IFtdO1xuICAgIHBhcmFtZXRlcnM6IE1lbnVQYXJhbWV0ZXJbXSA9IFtdO1xuICAgIG1hcHBlZFNlY3Rpb25zOiB7fSA9IHt9O1xuXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51KCk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlY3Rpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLm1hcHBlZFNlY3Rpb25zID0ge307XG4gICAgfVxuXG4gICAgYWRkU2VjdGlvbihuYW1lOiBzdHJpbmcpOiBNZW51U2VjdGlvbiB7XG4gICAgICAgIHZhciBzZWN0aW9uID0gbmV3IE1lbnVTZWN0aW9uKHRoaXMsIG5hbWUpO1xuICAgICAgICB0aGlzLnNlY3Rpb25zLnB1c2goc2VjdGlvbik7XG4gICAgICAgIHRoaXMubWFwcGVkU2VjdGlvbnNbbmFtZV0gPSBzZWN0aW9uO1xuICAgICAgICByZXR1cm4gc2VjdGlvbjtcbiAgICB9XG5cbiAgICBmaWx0ZXJNZW51KGRldmVsb3Blcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRldmVsb3BlciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZGV2ZWxvcGVyID0gdGhpcy5kZXZlbG9wZXI7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNlY3Rpb25zW2ldLnZpc2libGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLnNlY3Rpb25zW2ldLnBhcmFtZXRlcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW2ldLnBhcmFtZXRlcnNbal0udmlzaWJsZSA9ICF0aGlzLnNlY3Rpb25zW2ldLnBhcmFtZXRlcnNbal0uZGV2ZWxvcGVyIHx8IGRldmVsb3BlcjtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWN0aW9uc1tpXS5wYXJhbWV0ZXJzW2pdLnZpc2libGUpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbaV0udmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaGF2ZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWN0aW9uc1tqXS52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZCh0aGlzLnNlY3Rpb25zW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghZGV2ZWxvcGVyKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWN0aW9uc1tpXS5zZWxlY3RlZCAmJiAhdGhpcy5zZWN0aW9uc1tpXS52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VjdGlvbnNbal0udmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZCh0aGlzLnNlY3Rpb25zW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdGVkKGFyZzogTWVudVNlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJnLnBhcmFtZXRlcnM7XG4gICAgICAgIHRoaXMuaGF2ZVNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLnNlY3Rpb25zW2ldLnNlbGVjdGVkID0gdGhpcy5zZWN0aW9uc1tpXSA9PT0gYXJnO1xuXG4gICAgICAgIE5hdGl2ZUFwcC5xdWVyeUVudGl0eVBhcmFtZXRlcnMoYXJnLm5hbWUpO1xuICAgIH1cblxuICAgIGRldmVsb3BlckNoYW5nZWQoYXJnOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJNZW51KGFyZy52YWx1ZSk7XG4gICAgfVxuXG4gICAgb25FbnRpdHlQYXJhbWV0ZXIoc2VjdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXI6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubWFwcGVkU2VjdGlvbnNbc2VjdGlvbl0gfHxcbiAgICAgICAgICAgICF0aGlzLm1hcHBlZFNlY3Rpb25zW3NlY3Rpb25dLm1hcHBlZFBhcmFtZXRlcnNbcGFyYW1ldGVyXSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLm1hcHBlZFNlY3Rpb25zW3NlY3Rpb25dLm1hcHBlZFBhcmFtZXRlcnNbcGFyYW1ldGVyXS5yZXNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG59XG5cbnR5cGUgVmFsdWUgPSBzdHJpbmcgfCBib29sZWFuO1xuXG5pbnRlcmZhY2UgRGF0YSB7XG4gICAgdmFsdWU6IFZhbHVlO1xufVxuXG5pbnRlcmZhY2UgSXRlbSB7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG4vLyBEeW5hbWljIG1lbnUgcGFyYW1ldGVyc1xuY2xhc3MgTWVudVBhcmFtZXRlciB7XG4gICAgc2VjdGlvbjogTWVudVNlY3Rpb247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgZGV2ZWxvcGVyOiBib29sZWFuO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1bml0czogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBkcm9wZG93bjogRHJvcGRvd248SXRlbT47XG4gICAgdmFsdWU6IFZhbHVlO1xuICAgIG9sZFZhbHVlOiBWYWx1ZTtcbiAgICBkaXJ0eTogYm9vbGVhbjtcbiAgICBldmVuOiBib29sZWFuO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihzZWN0aW9uOiBNZW51U2VjdGlvbiwgbmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIHZpc2liaWxpdHk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcsIGRyb3Bkb3duVmFsdWVzOiBzdHJpbmcsIHVuaXRzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWN0aW9uID0gc2VjdGlvbjtcbiAgICAgICAgdGhpcy5rZXkgPSBuYW1lO1xuICAgICAgICB0aGlzLmRldmVsb3BlciA9IHZpc2liaWxpdHkgPT0gXCJkZXZlbG9wZXJcIjtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy51bml0cyA9IHVuaXRzO1xuXG4gICAgICAgIGlmIChkcm9wZG93blZhbHVlcykge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gXCJkcm9wZG93blwiO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93biA9IG5ldyBEcm9wZG93bigodmFsdWU6IEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gdmFsdWUubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQoe3ZhbHVlOiB2YWx1ZS5uYW1lfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBhcnJheSA9IGRyb3Bkb3duVmFsdWVzLnNwbGl0KFwiLFwiKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0ge25hbWU6IGFycmF5W2ldLnRyaW0oKX07XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJyZWFsXCIpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IFwiZGVjaW1hbFwiO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJpbnRlZ2VyXCIpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IFwiaW50ZWdlclwiO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IFwic3dpdGNoXCI7XG4gICAgICAgIH0gZWxzZSB7IC8vIGxpc3Q6cmVhbCB8fCBtYXRyaXggfHwgbGlzdDppbnRlZ2VyIHx8IC4uLlxuICAgICAgICAgICAgdGhpcy50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICB9XG5cbiAgICByZXNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBcInN3aXRjaFwiKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlID09IFwiMVwiIHx8IHZhbHVlICYmIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gXCJ0cnVlXCI7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09IFwiZHJvcGRvd25cIilcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kcm9wZG93bi5pdGVtcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wZG93bi5pdGVtc1tpXS5uYW1lID09IHRoaXMudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uc2VsZWN0KHRoaXMuZHJvcGRvd24uaXRlbXNbaV0pO1xuXG4gICAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwicmVzZXQgXCIgKyB0aGlzLnNlY3Rpb24ubmFtZSArIFwiL1wiICsgdGhpcy5rZXkgKyBcIiA9IFwiICsgdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFsdWVDaGFuZ2VkKGFyZzogRGF0YSk6IHZvaWQge1xuICAgICAgICAvLyBEZWZlciBhcHBseWluZyB0ZXh0IG9yIG51bWJlciB2YWx1ZXMgdG8gRFVORSB1bnRpbCBmb2N1c0xvc3QoKSxcbiAgICAgICAgLy8gYXZvaWRpbmcgc2VuZGluZyBuZXcgdmFsdWVzIGV2ZXJ5IHRpbWUgYSBuZXcgY2hhcmFjdGVyIGlzIHR5cGVkLlxuICAgICAgICBpZiAodGhpcy50eXBlID09IFwidGV4dFwiIHx8IHRoaXMudHlwZSA9PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWYWx1ZShhcmcudmFsdWUpO1xuICAgIH1cblxuICAgIGZvY3VzTG9zdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlydHkpXG4gICAgICAgICAgICB0aGlzLmFwcGx5VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgYXBwbHlWYWx1ZSh2YWx1ZTogVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLm9sZFZhbHVlID09IHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub2xkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImFwcGx5IFwiICsgdGhpcy5zZWN0aW9uLm5hbWUgKyBcIi9cIiArIHRoaXMua2V5ICsgXCIgPSBcIiArIHZhbHVlKTtcbiAgICAgICAgTmF0aXZlQXBwLnNldEVudGl0eVBhcmFtZXRlcih0aGlzLnNlY3Rpb24ubmFtZSwgdGhpcy5rZXksIHZhbHVlKTtcbiAgICB9XG59XG5cbmNsYXNzIE1lbnVTZWN0aW9uIHtcbiAgICBlZGl0b3I6IFBhcmFtZXRlcnNFZGl0b3I7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcGFyYW1ldGVyczogTWVudVBhcmFtZXRlcltdID0gW107XG4gICAgbWFwcGVkUGFyYW1ldGVyczoge30gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKGVkaXRvcjogUGFyYW1ldGVyc0VkaXRvciwgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIH1cblxuICAgIGFkZFBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgdmlzaWJpbGl0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZywgZHJvcGRvd25WYWx1ZXM6IHN0cmluZywgdW5pdHM6IHN0cmluZyk6IE1lbnVQYXJhbWV0ZXIge1xuICAgICAgICB2YXIgcGFyYW1ldGVyID0gbmV3IE1lbnVQYXJhbWV0ZXIodGhpcywgbmFtZSwgdHlwZSwgdmlzaWJpbGl0eSwgZGVmYXVsdFZhbHVlLCBkcm9wZG93blZhbHVlcywgdW5pdHMpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMucHVzaChwYXJhbWV0ZXIpO1xuICAgICAgICB0aGlzLm1hcHBlZFBhcmFtZXRlcnNbbmFtZV0gPSBwYXJhbWV0ZXI7XG4gICAgICAgIHBhcmFtZXRlci5ldmVuID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aCAlIDIgPT0gMDtcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICB9XG5cbiAgICBvblNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub25TZWxlY3RlZCh0aGlzKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBbUM7QUFBQTtBQUFBO0FBQUE7QUFFcEIsTUFBTUEsZ0JBQWdCLENBQUM7RUFBQTtJQUFBLHNDQUNWLEtBQUs7SUFBQSxtQ0FDUixLQUFLO0lBQUEsaUNBQ1AsS0FBSztJQUFBLGtDQUNFLEVBQUU7SUFBQSxvQ0FDRSxFQUFFO0lBQUEsd0NBQ1gsQ0FBQyxDQUFDO0VBQUE7RUFFdkJDLElBQUksR0FBUztJQUNULElBQUksQ0FBQ0MsVUFBVSxFQUFFO0lBQ2pCLElBQUksQ0FBQ0MsT0FBTyxHQUFHLElBQUk7RUFDdkI7RUFFQUMsS0FBSyxHQUFTO0lBQ1YsSUFBSSxDQUFDRCxPQUFPLEdBQUcsS0FBSztFQUN4QjtFQUVBRSxLQUFLLEdBQVM7SUFDVixJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7SUFDeEIsSUFBSSxDQUFDQyxVQUFVLENBQUNELE1BQU0sR0FBRyxDQUFDO0lBQzFCLElBQUksQ0FBQ0UsY0FBYyxHQUFHLENBQUMsQ0FBQztFQUM1QjtFQUVBQyxVQUFVLENBQUNDLElBQVksRUFBZTtJQUNsQyxJQUFJQyxP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 diff --git a/test/async.ts.g.js b/test/async.ts.g.js index e7dea2f..8634984 100644 --- a/test/async.ts.g.js +++ b/test/async.ts.g.js @@ -1,52 +1,7 @@ "use strict"; -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function haha() { - return _haha.apply(this, arguments); -} - -function _haha() { - _haha = _asyncToGenerator( - /*#__PURE__*/ - regeneratorRuntime.mark(function _callee() { - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return _haha.apply(this, arguments); -} - -function hoho() { - return _hoho.apply(this, arguments); -} - -function _hoho() { - _hoho = _asyncToGenerator( - /*#__PURE__*/ - regeneratorRuntime.mark(function _callee2() { - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return haha(); - - case 2: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })); - return _hoho.apply(this, arguments); +async function haha() {} +async function hoho() { + await haha(); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzeW5jLnRzIl0sIm5hbWVzIjpbImhhaGEiLCJob2hvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7U0FBZUEsSTs7Ozs7OzswQkFBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7U0FHZUMsSTs7Ozs7OzswQkFBZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDVUQsSUFBSSxFQURkOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJzb3VyY2VzQ29udGVudCI6WyJhc3luYyBmdW5jdGlvbiBoYWhhKCkge1xufVxuXG5hc3luYyBmdW5jdGlvbiBob2hvKCkge1xuICAgIGF3YWl0IGhhaGEoKVxufVxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYWhhIiwiaG9obyJdLCJzb3VyY2VzIjpbImFzeW5jLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImFzeW5jIGZ1bmN0aW9uIGhhaGEoKSB7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhvaG8oKSB7XG4gICAgYXdhaXQgaGFoYSgpXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsZUFBZUEsSUFBSSxHQUFHLENBQ3RCO0FBRUEsZUFBZUMsSUFBSSxHQUFHO0VBQ2xCLE1BQU1ELElBQUksRUFBRTtBQUNoQiJ9 diff --git a/test/chaining.js.g.js b/test/chaining.js.g.js index b7a1482..a542d1d 100644 --- a/test/chaining.js.g.js +++ b/test/chaining.js.g.js @@ -3,16 +3,16 @@ var _obj$foo, _obj$foo$bar, _obj$qux, _obj$foo$bar2, _obj$foo2, _obj$foo2$bar; // https://babeljs.io/docs/en/babel-plugin-proposal-optional-chaining -var obj = { +const obj = { foo: { bar: { baz: 42 } } }; -var baz = obj === null || obj === void 0 ? void 0 : (_obj$foo = obj.foo) === null || _obj$foo === void 0 ? void 0 : (_obj$foo$bar = _obj$foo.bar) === null || _obj$foo$bar === void 0 ? void 0 : _obj$foo$bar.baz; // 42 +const baz = obj === null || obj === void 0 ? void 0 : (_obj$foo = obj.foo) === null || _obj$foo === void 0 ? void 0 : (_obj$foo$bar = _obj$foo.bar) === null || _obj$foo$bar === void 0 ? void 0 : _obj$foo$bar.baz; // 42 -var safe = obj === null || obj === void 0 ? void 0 : (_obj$qux = obj.qux) === null || _obj$qux === void 0 ? void 0 : _obj$qux.baz; // undefined +const safe = obj === null || obj === void 0 ? void 0 : (_obj$qux = obj.qux) === null || _obj$qux === void 0 ? void 0 : _obj$qux.baz; // undefined // Optional chaining and normal chaining can be intermixed obj === null || obj === void 0 ? void 0 : (_obj$foo$bar2 = obj.foo.bar) === null || _obj$foo$bar2 === void 0 ? void 0 : _obj$foo$bar2.baz; // Only access `foo` if `obj` exists, and `baz` if @@ -20,4 +20,4 @@ obj === null || obj === void 0 ? void 0 : (_obj$foo$bar2 = obj.foo.bar) === null // Example usage with bracket notation: obj === null || obj === void 0 ? void 0 : (_obj$foo2 = obj['foo']) === null || _obj$foo2 === void 0 ? void 0 : (_obj$foo2$bar = _obj$foo2.bar) === null || _obj$foo2$bar === void 0 ? void 0 : _obj$foo2$bar.baz; // 42 -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvYmoiLCJmb28iLCJiYXIiLCJiYXoiLCJzYWZlIiwicXV4Il0sInNvdXJjZXMiOlsiY2hhaW5pbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9iYWJlbGpzLmlvL2RvY3MvZW4vYmFiZWwtcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNoYWluaW5nXG5cbmNvbnN0IG9iaiA9IHtcbiAgICBmb286IHtcbiAgICAgICAgYmFyOiB7XG4gICAgICAgICAgICBiYXo6IDQyLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5jb25zdCBiYXogPSBvYmo/LmZvbz8uYmFyPy5iYXo7IC8vIDQyXG5cbmNvbnN0IHNhZmUgPSBvYmo/LnF1eD8uYmF6OyAvLyB1bmRlZmluZWRcblxuLy8gT3B0aW9uYWwgY2hhaW5pbmcgYW5kIG5vcm1hbCBjaGFpbmluZyBjYW4gYmUgaW50ZXJtaXhlZFxub2JqPy5mb28uYmFyPy5iYXo7IC8vIE9ubHkgYWNjZXNzIGBmb29gIGlmIGBvYmpgIGV4aXN0cywgYW5kIGBiYXpgIGlmXG4vLyBgYmFyYCBleGlzdHNcblxuLy8gRXhhbXBsZSB1c2FnZSB3aXRoIGJyYWNrZXQgbm90YXRpb246XG5vYmo/LlsnZm9vJ10/LmJhcj8uYmF6IC8vIDQyXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBOztBQUVBLElBQU1BLEdBQUcsR0FBRztFQUNSQyxHQUFHLEVBQUU7SUFDREMsR0FBRyxFQUFFO01BQ0RDLEdBQUcsRUFBRTtJQUNUO0VBQ0o7QUFDSixDQUFDO0FBRUQsSUFBTUEsR0FBRyxHQUFHSCxHQUFHLGFBQUhBLEdBQUcsbUNBQUhBLEdBQUcsQ0FBRUMsR0FBRyw2REFBUixTQUFVQyxHQUFHLGlEQUFiLGFBQWVDLEdBQUcsQ0FBQyxDQUFDOztBQUVoQyxJQUFNQyxJQUFJLEdBQUdKLEdBQUcsYUFBSEEsR0FBRyxtQ0FBSEEsR0FBRyxDQUFFSyxHQUFHLDZDQUFSLFNBQVVGLEdBQUcsQ0FBQyxDQUFDOztBQUU1QjtBQUNBSCxHQUFHLGFBQUhBLEdBQUcsd0NBQUhBLEdBQUcsQ0FBRUMsR0FBRyxDQUFDQyxHQUFHLGtEQUFaLGNBQWNDLEdBQUcsQ0FBQyxDQUFDO0FBQ25COztBQUVBO0FBQ0FILEdBQUcsYUFBSEEsR0FBRyxvQ0FBSEEsR0FBRyxDQUFHLEtBQUssQ0FBQywrREFBWixVQUFjRSxHQUFHLGtEQUFqQixjQUFtQkMsR0FBRyxFQUFDIn0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvYmoiLCJmb28iLCJiYXIiLCJiYXoiLCJzYWZlIiwicXV4Il0sInNvdXJjZXMiOlsiY2hhaW5pbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9iYWJlbGpzLmlvL2RvY3MvZW4vYmFiZWwtcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNoYWluaW5nXG5cbmNvbnN0IG9iaiA9IHtcbiAgICBmb286IHtcbiAgICAgICAgYmFyOiB7XG4gICAgICAgICAgICBiYXo6IDQyLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5jb25zdCBiYXogPSBvYmo/LmZvbz8uYmFyPy5iYXo7IC8vIDQyXG5cbmNvbnN0IHNhZmUgPSBvYmo/LnF1eD8uYmF6OyAvLyB1bmRlZmluZWRcblxuLy8gT3B0aW9uYWwgY2hhaW5pbmcgYW5kIG5vcm1hbCBjaGFpbmluZyBjYW4gYmUgaW50ZXJtaXhlZFxub2JqPy5mb28uYmFyPy5iYXo7IC8vIE9ubHkgYWNjZXNzIGBmb29gIGlmIGBvYmpgIGV4aXN0cywgYW5kIGBiYXpgIGlmXG4vLyBgYmFyYCBleGlzdHNcblxuLy8gRXhhbXBsZSB1c2FnZSB3aXRoIGJyYWNrZXQgbm90YXRpb246XG5vYmo/LlsnZm9vJ10/LmJhcj8uYmF6IC8vIDQyXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBRztFQUNSQyxHQUFHLEVBQUU7SUFDREMsR0FBRyxFQUFFO01BQ0RDLEdBQUcsRUFBRTtJQUNUO0VBQ0o7QUFDSixDQUFDO0FBRUQsTUFBTUEsR0FBRyxHQUFHSCxHQUFHLGFBQUhBLEdBQUcsbUNBQUhBLEdBQUcsQ0FBRUMsR0FBRyw2REFBUixTQUFVQyxHQUFHLGlEQUFiLGFBQWVDLEdBQUcsQ0FBQyxDQUFDOztBQUVoQyxNQUFNQyxJQUFJLEdBQUdKLEdBQUcsYUFBSEEsR0FBRyxtQ0FBSEEsR0FBRyxDQUFFSyxHQUFHLDZDQUFSLFNBQVVGLEdBQUcsQ0FBQyxDQUFDOztBQUU1QjtBQUNBSCxHQUFHLGFBQUhBLEdBQUcsd0NBQUhBLEdBQUcsQ0FBRUMsR0FBRyxDQUFDQyxHQUFHLGtEQUFaLGNBQWNDLEdBQUcsQ0FBQyxDQUFDO0FBQ25COztBQUVBO0FBQ0FILEdBQUcsYUFBSEEsR0FBRyxvQ0FBSEEsR0FBRyxDQUFHLEtBQUssQ0FBQywrREFBWixVQUFjRSxHQUFHLGtEQUFqQixjQUFtQkMsR0FBRyxFQUFDIn0= diff --git a/test/class-prop.js.g.js b/test/class-prop.js.g.js index 6eff822..b0e8835 100644 --- a/test/class-prop.js.g.js +++ b/test/class-prop.js.g.js @@ -1,14 +1,11 @@ "use strict"; -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -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, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -var Foo = /*#__PURE__*/_createClass(function Foo() { - _classCallCheck(this, Foo); - _defineProperty(this, "bar", 1); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb28iXSwic291cmNlcyI6WyJjbGFzcy1wcm9wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7XG4gICAgYmFyID0gMVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7SUFBTUEsR0FBRztFQUFBO0VBQUEsNkJBQ0MsQ0FBQztBQUFBIn0= +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +class Foo { + constructor() { + _defineProperty(this, "bar", 1); + } +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb28iXSwic291cmNlcyI6WyJjbGFzcy1wcm9wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZvbyB7XG4gICAgYmFyID0gMVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE1BQU1BLEdBQUcsQ0FBQztFQUFBO0lBQUEsNkJBQ0EsQ0FBQztFQUFBO0FBQ1gifQ== diff --git a/test/decorators.js.g.js b/test/decorators.js.g.js index 99a87c7..b3f5bf2 100644 --- a/test/decorators.js.g.js +++ b/test/decorators.js.g.js @@ -1,19 +1,15 @@ "use strict"; -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -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, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); } -function _getDecoratorsApi() { _getDecoratorsApi = function _getDecoratorsApi() { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function initializeInstanceElements(O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function initializeClassElements(F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function defineClassElement(receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function decorateClass(elements, decorators) { var newElements = []; var finishers = []; var placements = { "static": [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function addElementPlacement(element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function decorateElement(element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function decorateConstructor(elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function fromElementDescriptor(element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function toElementDescriptors(elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function toElementDescriptor(elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function toElementFinisherExtras(elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function fromClassDescriptor(elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function toClassDescriptor(obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function runClassFinishers(constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function disallowProperty(obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } -function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } +function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } +function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } } -function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function isSameElement(other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } +function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } function _hasDecorators(element) { return element.decorators && element.decorators.length; } function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); } function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } @@ -21,11 +17,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // https://babeljs.io/docs/en/babel-plugin-proposal-decorators -var MyClass = _decorate([annotation], function (_initialize) { - var MyClass = /*#__PURE__*/_createClass(function MyClass() { - _classCallCheck(this, MyClass); - _initialize(this); - }); +let MyClass = _decorate([annotation], function (_initialize) { + class MyClass { + constructor() { + _initialize(this); + } + } return { F: MyClass, d: [] @@ -34,11 +31,12 @@ var MyClass = _decorate([annotation], function (_initialize) { function annotation(target) { target.annotated = true; } -var MyClass2 = _decorate([isTestable(true)], function (_initialize2) { - var MyClass2 = /*#__PURE__*/_createClass(function MyClass2() { - _classCallCheck(this, MyClass2); - _initialize2(this); - }); +let MyClass2 = _decorate([isTestable(true)], function (_initialize2) { + class MyClass2 { + constructor() { + _initialize2(this); + } + } return { F: MyClass2, d: [] @@ -49,11 +47,12 @@ function isTestable(value) { target.isTestable = value; }; } -var C = _decorate(null, function (_initialize3) { - var C = /*#__PURE__*/_createClass(function C() { - _classCallCheck(this, C); - _initialize3(this); - }); +let C = _decorate(null, function (_initialize3) { + class C { + constructor() { + _initialize3(this); + } + } return { F: C, d: [{ @@ -70,4 +69,4 @@ function enumerable(value) { return descriptor; }; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNeUNsYXNzIiwiYW5ub3RhdGlvbiIsInRhcmdldCIsImFubm90YXRlZCIsIk15Q2xhc3MyIiwiaXNUZXN0YWJsZSIsInZhbHVlIiwiZGVjb3JhdG9yIiwiQyIsImVudW1lcmFibGUiLCJrZXkiLCJkZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiZGVjb3JhdG9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2JhYmVsanMuaW8vZG9jcy9lbi9iYWJlbC1wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1xuXG5AYW5ub3RhdGlvblxuY2xhc3MgTXlDbGFzcyB7IH1cblxuZnVuY3Rpb24gYW5ub3RhdGlvbih0YXJnZXQpIHtcbiAgIHRhcmdldC5hbm5vdGF0ZWQgPSB0cnVlO1xufVxuXG5AaXNUZXN0YWJsZSh0cnVlKVxuY2xhc3MgTXlDbGFzczIgeyB9XG5cbmZ1bmN0aW9uIGlzVGVzdGFibGUodmFsdWUpIHtcbiAgIHJldHVybiBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQuaXNUZXN0YWJsZSA9IHZhbHVlO1xuICAgfVxufVxuXG5jbGFzcyBDIHtcbiAgQGVudW1lcmFibGUoZmFsc2UpXG4gIG1ldGhvZCgpIHsgfVxufVxuXG5mdW5jdGlvbiBlbnVtZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdmFsdWU7XG4gICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBLElBR01BLE9BQU8sY0FEWkMsVUFBVTtFQUFBLElBQ0xELE9BQU87SUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBLEdBQVBBLE9BQU87SUFBQTtFQUFBO0FBQUE7QUFFYixTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUN6QkEsTUFBTSxDQUFDQyxTQUFTLEdBQUcsSUFBSTtBQUMxQjtBQUFDLElBR0tDLFFBQVEsY0FEYkMsVUFBVSxDQUFDLElBQUksQ0FBQztFQUFBLElBQ1hELFFBQVE7SUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBLEdBQVJBLFFBQVE7SUFBQTtFQUFBO0FBQUE7QUFFZCxTQUFTQyxVQUFVLENBQUNDLEtBQUssRUFBRTtFQUN4QixPQUFPLFNBQVNDLFNBQVMsQ0FBQ0wsTUFBTSxFQUFFO0lBQy9CQSxNQUFNLENBQUNHLFVBQVUsR0FBR0MsS0FBSztFQUM1QixDQUFDO0FBQ0o7QUFBQyxJQUVLRSxDQUFDO0VBQUEsSUFBREEsQ0FBQztJQUFBO0lBQUE7RUFBQTtFQUFBO0lBQUEsR0FBREEsQ0FBQztJQUFBO01BQUE7TUFBQSxhQUNKQyxVQUFVLENBQUMsS0FBSyxDQUFDO01BQUE7TUFBQSxPQUFsQixrQkFDUyxDQUFFO0lBQUM7RUFBQTtBQUFBO0FBR2QsU0FBU0EsVUFBVSxDQUFDSCxLQUFLLEVBQUU7RUFDekIsT0FBTyxVQUFVSixNQUFNLEVBQUVRLEdBQUcsRUFBRUMsVUFBVSxFQUFFO0lBQ3ZDQSxVQUFVLENBQUNGLFVBQVUsR0FBR0gsS0FBSztJQUM3QixPQUFPSyxVQUFVO0VBQ3BCLENBQUM7QUFDSCJ9 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNeUNsYXNzIiwiYW5ub3RhdGlvbiIsInRhcmdldCIsImFubm90YXRlZCIsIk15Q2xhc3MyIiwiaXNUZXN0YWJsZSIsInZhbHVlIiwiZGVjb3JhdG9yIiwiQyIsImVudW1lcmFibGUiLCJrZXkiLCJkZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiZGVjb3JhdG9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2JhYmVsanMuaW8vZG9jcy9lbi9iYWJlbC1wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1xuXG5AYW5ub3RhdGlvblxuY2xhc3MgTXlDbGFzcyB7IH1cblxuZnVuY3Rpb24gYW5ub3RhdGlvbih0YXJnZXQpIHtcbiAgIHRhcmdldC5hbm5vdGF0ZWQgPSB0cnVlO1xufVxuXG5AaXNUZXN0YWJsZSh0cnVlKVxuY2xhc3MgTXlDbGFzczIgeyB9XG5cbmZ1bmN0aW9uIGlzVGVzdGFibGUodmFsdWUpIHtcbiAgIHJldHVybiBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQuaXNUZXN0YWJsZSA9IHZhbHVlO1xuICAgfVxufVxuXG5jbGFzcyBDIHtcbiAgQGVudW1lcmFibGUoZmFsc2UpXG4gIG1ldGhvZCgpIHsgfVxufVxuXG5mdW5jdGlvbiBlbnVtZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdmFsdWU7XG4gICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsSUFHTUEsT0FBTyxjQURaQyxVQUFVO0VBQVgsTUFDTUQsT0FBTyxDQUFDO0lBQUE7TUFBQTtJQUFBO0VBQUU7RUFBQztJQUFBLEdBQVhBLE9BQU87SUFBQTtFQUFBO0FBQUE7QUFFYixTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUN6QkEsTUFBTSxDQUFDQyxTQUFTLEdBQUcsSUFBSTtBQUMxQjtBQUFDLElBR0tDLFFBQVEsY0FEYkMsVUFBVSxDQUFDLElBQUksQ0FBQztFQUFqQixNQUNNRCxRQUFRLENBQUM7SUFBQTtNQUFBO0lBQUE7RUFBRTtFQUFDO0lBQUEsR0FBWkEsUUFBUTtJQUFBO0VBQUE7QUFBQTtBQUVkLFNBQVNDLFVBQVUsQ0FBQ0MsS0FBSyxFQUFFO0VBQ3hCLE9BQU8sU0FBU0MsU0FBUyxDQUFDTCxNQUFNLEVBQUU7SUFDL0JBLE1BQU0sQ0FBQ0csVUFBVSxHQUFHQyxLQUFLO0VBQzVCLENBQUM7QUFDSjtBQUFDLElBRUtFLENBQUM7RUFBUCxNQUFNQSxDQUFDLENBQUM7SUFBQTtNQUFBO0lBQUE7RUFHUjtFQUFDO0lBQUEsR0FIS0EsQ0FBQztJQUFBO01BQUE7TUFBQSxhQUNKQyxVQUFVLENBQUMsS0FBSyxDQUFDO01BQUE7TUFBQSxPQUFsQixrQkFDUyxDQUFFO0lBQUM7RUFBQTtBQUFBO0FBR2QsU0FBU0EsVUFBVSxDQUFDSCxLQUFLLEVBQUU7RUFDekIsT0FBTyxVQUFVSixNQUFNLEVBQUVRLEdBQUcsRUFBRUMsVUFBVSxFQUFFO0lBQ3ZDQSxVQUFVLENBQUNGLFVBQVUsR0FBR0gsS0FBSztJQUM3QixPQUFPSyxVQUFVO0VBQ3BCLENBQUM7QUFDSCJ9 diff --git a/test/decorators.ts.g.js b/test/decorators.ts.g.js index 24d22c6..d41324f 100644 --- a/test/decorators.ts.g.js +++ b/test/decorators.ts.g.js @@ -1,19 +1,15 @@ "use strict"; -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -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, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); } -function _getDecoratorsApi() { _getDecoratorsApi = function _getDecoratorsApi() { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function initializeInstanceElements(O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function initializeClassElements(F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function defineClassElement(receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function decorateClass(elements, decorators) { var newElements = []; var finishers = []; var placements = { "static": [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function addElementPlacement(element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function decorateElement(element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function decorateConstructor(elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function fromElementDescriptor(element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function toElementDescriptors(elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function toElementDescriptor(elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function toElementFinisherExtras(elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function fromClassDescriptor(elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function toClassDescriptor(obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function runClassFinishers(constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function disallowProperty(obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } -function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } +function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } +function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } } -function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function isSameElement(other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } +function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } function _hasDecorators(element) { return element.decorators && element.decorators.length; } function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); } function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } @@ -21,11 +17,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // https://babeljs.io/docs/en/babel-plugin-proposal-decorators -var MyClass = _decorate([annotation], function (_initialize) { - var MyClass = /*#__PURE__*/_createClass(function MyClass() { - _classCallCheck(this, MyClass); - _initialize(this); - }); +let MyClass = _decorate([annotation], function (_initialize) { + class MyClass { + constructor() { + _initialize(this); + } + } return { F: MyClass, d: [] @@ -34,11 +31,12 @@ var MyClass = _decorate([annotation], function (_initialize) { function annotation(target) { target.annotated = true; } -var MyClass2 = _decorate([isTestable(true)], function (_initialize2) { - var MyClass2 = /*#__PURE__*/_createClass(function MyClass2() { - _classCallCheck(this, MyClass2); - _initialize2(this); - }); +let MyClass2 = _decorate([isTestable(true)], function (_initialize2) { + class MyClass2 { + constructor() { + _initialize2(this); + } + } return { F: MyClass2, d: [] @@ -49,11 +47,12 @@ function isTestable(value) { target.isTestable = value; }; } -var C = _decorate(null, function (_initialize3) { - var C = /*#__PURE__*/_createClass(function C() { - _classCallCheck(this, C); - _initialize3(this); - }); +let C = _decorate(null, function (_initialize3) { + class C { + constructor() { + _initialize3(this); + } + } return { F: C, d: [{ @@ -70,4 +69,4 @@ function enumerable(value) { return descriptor; }; } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNeUNsYXNzIiwiYW5ub3RhdGlvbiIsInRhcmdldCIsImFubm90YXRlZCIsIk15Q2xhc3MyIiwiaXNUZXN0YWJsZSIsInZhbHVlIiwiZGVjb3JhdG9yIiwiQyIsImVudW1lcmFibGUiLCJrZXkiLCJkZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiZGVjb3JhdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2JhYmVsanMuaW8vZG9jcy9lbi9iYWJlbC1wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1xuXG5AYW5ub3RhdGlvblxuY2xhc3MgTXlDbGFzcyB7IH1cblxuZnVuY3Rpb24gYW5ub3RhdGlvbih0YXJnZXQpIHtcbiAgIHRhcmdldC5hbm5vdGF0ZWQgPSB0cnVlO1xufVxuXG5AaXNUZXN0YWJsZSh0cnVlKVxuY2xhc3MgTXlDbGFzczIgeyB9XG5cbmZ1bmN0aW9uIGlzVGVzdGFibGUodmFsdWUpIHtcbiAgIHJldHVybiBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQuaXNUZXN0YWJsZSA9IHZhbHVlO1xuICAgfVxufVxuXG5jbGFzcyBDIHtcbiAgQGVudW1lcmFibGUoZmFsc2UpXG4gIG1ldGhvZCgpIHsgfVxufVxuXG5mdW5jdGlvbiBlbnVtZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdmFsdWU7XG4gICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBLElBR01BLE9BQU8sY0FEWkMsVUFBVTtFQUFBLElBQ0xELE9BQU87SUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBLEdBQVBBLE9BQU87SUFBQTtFQUFBO0FBQUE7QUFFYixTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUN6QkEsTUFBTSxDQUFDQyxTQUFTLEdBQUcsSUFBSTtBQUMxQjtBQUFDLElBR0tDLFFBQVEsY0FEYkMsVUFBVSxDQUFDLElBQUksQ0FBQztFQUFBLElBQ1hELFFBQVE7SUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBLEdBQVJBLFFBQVE7SUFBQTtFQUFBO0FBQUE7QUFFZCxTQUFTQyxVQUFVLENBQUNDLEtBQUssRUFBRTtFQUN4QixPQUFPLFNBQVNDLFNBQVMsQ0FBQ0wsTUFBTSxFQUFFO0lBQy9CQSxNQUFNLENBQUNHLFVBQVUsR0FBR0MsS0FBSztFQUM1QixDQUFDO0FBQ0o7QUFBQyxJQUVLRSxDQUFDO0VBQUEsSUFBREEsQ0FBQztJQUFBO0lBQUE7RUFBQTtFQUFBO0lBQUEsR0FBREEsQ0FBQztJQUFBO01BQUE7TUFBQSxhQUNKQyxVQUFVLENBQUMsS0FBSyxDQUFDO01BQUE7TUFBQSxPQUFsQixrQkFDUyxDQUFFO0lBQUM7RUFBQTtBQUFBO0FBR2QsU0FBU0EsVUFBVSxDQUFDSCxLQUFLLEVBQUU7RUFDekIsT0FBTyxVQUFVSixNQUFNLEVBQUVRLEdBQUcsRUFBRUMsVUFBVSxFQUFFO0lBQ3ZDQSxVQUFVLENBQUNGLFVBQVUsR0FBR0gsS0FBSztJQUM3QixPQUFPSyxVQUFVO0VBQ3BCLENBQUM7QUFDSCJ9 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNeUNsYXNzIiwiYW5ub3RhdGlvbiIsInRhcmdldCIsImFubm90YXRlZCIsIk15Q2xhc3MyIiwiaXNUZXN0YWJsZSIsInZhbHVlIiwiZGVjb3JhdG9yIiwiQyIsImVudW1lcmFibGUiLCJrZXkiLCJkZXNjcmlwdG9yIl0sInNvdXJjZXMiOlsiZGVjb3JhdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2JhYmVsanMuaW8vZG9jcy9lbi9iYWJlbC1wbHVnaW4tcHJvcG9zYWwtZGVjb3JhdG9yc1xuXG5AYW5ub3RhdGlvblxuY2xhc3MgTXlDbGFzcyB7IH1cblxuZnVuY3Rpb24gYW5ub3RhdGlvbih0YXJnZXQpIHtcbiAgIHRhcmdldC5hbm5vdGF0ZWQgPSB0cnVlO1xufVxuXG5AaXNUZXN0YWJsZSh0cnVlKVxuY2xhc3MgTXlDbGFzczIgeyB9XG5cbmZ1bmN0aW9uIGlzVGVzdGFibGUodmFsdWUpIHtcbiAgIHJldHVybiBmdW5jdGlvbiBkZWNvcmF0b3IodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQuaXNUZXN0YWJsZSA9IHZhbHVlO1xuICAgfVxufVxuXG5jbGFzcyBDIHtcbiAgQGVudW1lcmFibGUoZmFsc2UpXG4gIG1ldGhvZCgpIHsgfVxufVxuXG5mdW5jdGlvbiBlbnVtZXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdmFsdWU7XG4gICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUEsSUFHTUEsT0FBTyxjQURaQyxVQUFVO0VBQVgsTUFDTUQsT0FBTyxDQUFDO0lBQUE7TUFBQTtJQUFBO0VBQUU7RUFBQztJQUFBLEdBQVhBLE9BQU87SUFBQTtFQUFBO0FBQUE7QUFFYixTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUN6QkEsTUFBTSxDQUFDQyxTQUFTLEdBQUcsSUFBSTtBQUMxQjtBQUFDLElBR0tDLFFBQVEsY0FEYkMsVUFBVSxDQUFDLElBQUksQ0FBQztFQUFqQixNQUNNRCxRQUFRLENBQUM7SUFBQTtNQUFBO0lBQUE7RUFBRTtFQUFDO0lBQUEsR0FBWkEsUUFBUTtJQUFBO0VBQUE7QUFBQTtBQUVkLFNBQVNDLFVBQVUsQ0FBQ0MsS0FBSyxFQUFFO0VBQ3hCLE9BQU8sU0FBU0MsU0FBUyxDQUFDTCxNQUFNLEVBQUU7SUFDL0JBLE1BQU0sQ0FBQ0csVUFBVSxHQUFHQyxLQUFLO0VBQzVCLENBQUM7QUFDSjtBQUFDLElBRUtFLENBQUM7RUFBUCxNQUFNQSxDQUFDLENBQUM7SUFBQTtNQUFBO0lBQUE7RUFHUjtFQUFDO0lBQUEsR0FIS0EsQ0FBQztJQUFBO01BQUE7TUFBQSxhQUNKQyxVQUFVLENBQUMsS0FBSyxDQUFDO01BQUE7TUFBQSxPQUFsQixrQkFDUyxDQUFFO0lBQUM7RUFBQTtBQUFBO0FBR2QsU0FBU0EsVUFBVSxDQUFDSCxLQUFLLEVBQUU7RUFDekIsT0FBTyxVQUFVSixNQUFNLEVBQUVRLEdBQUcsRUFBRUMsVUFBVSxFQUFFO0lBQ3ZDQSxVQUFVLENBQUNGLFVBQVUsR0FBR0gsS0FBSztJQUM3QixPQUFPSyxVQUFVO0VBQ3BCLENBQUM7QUFDSCJ9 diff --git a/test/metadata.ts.g.js b/test/metadata.ts.g.js index c63b1c2..ca8b88f 100644 --- a/test/metadata.ts.g.js +++ b/test/metadata.ts.g.js @@ -1,39 +1,36 @@ "use strict"; -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } require("reflect-metadata"); -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, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); } -function _getDecoratorsApi() { _getDecoratorsApi = function _getDecoratorsApi() { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function initializeInstanceElements(O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function initializeClassElements(F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function defineClassElement(receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function decorateClass(elements, decorators) { var newElements = []; var finishers = []; var placements = { "static": [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function addElementPlacement(element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function decorateElement(element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function decorateConstructor(elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function fromElementDescriptor(element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function toElementDescriptors(elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function toElementDescriptor(elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function toElementFinisherExtras(elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function fromClassDescriptor(elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function toClassDescriptor(obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function runClassFinishers(constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function disallowProperty(obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } -function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } +function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; } +function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; } function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } } -function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function isSameElement(other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } +function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; } function _hasDecorators(element) { return element.decorators && element.decorators.length; } function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); } function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -var formatMetadataKey = Symbol("format"); +const formatMetadataKey = Symbol("format"); function format(formatString) { return Reflect.metadata(formatMetadataKey, formatString); } function getFormat(target, propertyKey) { return Reflect.getMetadata(formatMetadataKey, target, propertyKey); } -var Greeter = _decorate(null, function (_initialize) { - var Greeter = /*#__PURE__*/_createClass(function Greeter(message) { - _classCallCheck(this, Greeter); - _initialize(this); - this.greeting = message; - }); +let Greeter = _decorate(null, function (_initialize) { + class Greeter { + constructor(message) { + _initialize(this); + this.greeting = message; + } + } return { F: Greeter, d: [{ @@ -45,7 +42,7 @@ var Greeter = _decorate(null, function (_initialize) { kind: "method", key: "greet", value: function greet() { - var formatString = getFormat(this, "greeting"); + let formatString = getFormat(this, "greeting"); console.log('metadata => ' + formatString); return formatString.replace("%s", this.greeting); } @@ -53,4 +50,4 @@ var Greeter = _decorate(null, function (_initialize) { }; }); console.log('Greeting => ' + new Greeter('Pierre').greet()); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRNZXRhZGF0YUtleSIsIlN5bWJvbCIsImZvcm1hdCIsImZvcm1hdFN0cmluZyIsIlJlZmxlY3QiLCJtZXRhZGF0YSIsImdldEZvcm1hdCIsInRhcmdldCIsInByb3BlcnR5S2V5IiwiZ2V0TWV0YWRhdGEiLCJHcmVldGVyIiwibWVzc2FnZSIsImdyZWV0aW5nIiwiY29uc29sZSIsImxvZyIsInJlcGxhY2UiLCJncmVldCJdLCJzb3VyY2VzIjpbIm1ldGFkYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmNvbnN0IGZvcm1hdE1ldGFkYXRhS2V5ID0gU3ltYm9sKFwiZm9ybWF0XCIpO1xuXG5mdW5jdGlvbiBmb3JtYXQoZm9ybWF0U3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShmb3JtYXRNZXRhZGF0YUtleSwgZm9ybWF0U3RyaW5nKTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0KHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybWF0TWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xufVxuXG5jbGFzcyBHcmVldGVyIHtcbiAgICBAZm9ybWF0KFwiSGVsbG8sICVzXCIpXG4gICAgZ3JlZXRpbmc6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyZWV0aW5nID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBncmVldCgpIHtcbiAgICAgICAgbGV0IGZvcm1hdFN0cmluZyA9IGdldEZvcm1hdCh0aGlzLCBcImdyZWV0aW5nXCIpO1xuICAgICAgICBjb25zb2xlLmxvZygnbWV0YWRhdGEgPT4gJyArIGZvcm1hdFN0cmluZylcbiAgICAgICAgcmV0dXJuIGZvcm1hdFN0cmluZy5yZXBsYWNlKFwiJXNcIiwgdGhpcy5ncmVldGluZyk7XG4gICAgfVxufVxuXG5jb25zb2xlLmxvZygnR3JlZXRpbmcgPT4gJyArIG5ldyBHcmVldGVyKCdQaWVycmUnKS5ncmVldCgpKVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUEwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUMxQixJQUFNQSxpQkFBaUIsR0FBR0MsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUUxQyxTQUFTQyxNQUFNLENBQUNDLFlBQW9CLEVBQUU7RUFDbEMsT0FBT0MsT0FBTyxDQUFDQyxRQUFRLENBQUNMLGlCQUFpQixFQUFFRyxZQUFZLENBQUM7QUFDNUQ7QUFFQSxTQUFTRyxTQUFTLENBQUNDLE1BQVcsRUFBRUMsV0FBbUIsRUFBRTtFQUNqRCxPQUFPSixPQUFPLENBQUNLLFdBQVcsQ0FBQ1QsaUJBQWlCLEVBQUVPLE1BQU0sRUFBRUMsV0FBVyxDQUFDO0FBQ3RFO0FBQUMsSUFFS0UsT0FBTztFQUFBLElBQVBBLE9BQU8sNkJBSVQsaUJBQVlDLE9BQWUsRUFBRTtJQUFBO0lBQUE7SUFDekIsSUFBSSxDQUFDQyxRQUFRLEdBQUdELE9BQU87RUFDM0IsQ0FBQztFQUFBO0lBQUEsR0FOQ0QsT0FBTztJQUFBO01BQUE7TUFBQSxhQUNSUixNQUFNLENBQUMsV0FBVyxDQUFDO01BQUE7TUFBQTtJQUFBO01BQUE7TUFBQTtNQUFBLE9BT3BCLGlCQUFRO1FBQ0osSUFBSUMsWUFBWSxHQUFHRyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztRQUM5Q08sT0FBTyxDQUFDQyxHQUFHLENBQUMsY0FBYyxHQUFHWCxZQUFZLENBQUM7UUFDMUMsT0FBT0EsWUFBWSxDQUFDWSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQ0gsUUFBUSxDQUFDO01BQ3BEO0lBQUM7RUFBQTtBQUFBO0FBR0xDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJSixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUNNLEtBQUssRUFBRSxDQUFDIn0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRNZXRhZGF0YUtleSIsIlN5bWJvbCIsImZvcm1hdCIsImZvcm1hdFN0cmluZyIsIlJlZmxlY3QiLCJtZXRhZGF0YSIsImdldEZvcm1hdCIsInRhcmdldCIsInByb3BlcnR5S2V5IiwiZ2V0TWV0YWRhdGEiLCJHcmVldGVyIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwiZ3JlZXRpbmciLCJjb25zb2xlIiwibG9nIiwicmVwbGFjZSIsImdyZWV0Il0sInNvdXJjZXMiOlsibWV0YWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuY29uc3QgZm9ybWF0TWV0YWRhdGFLZXkgPSBTeW1ib2woXCJmb3JtYXRcIik7XG5cbmZ1bmN0aW9uIGZvcm1hdChmb3JtYXRTdHJpbmc6IHN0cmluZykge1xuICAgIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGZvcm1hdE1ldGFkYXRhS2V5LCBmb3JtYXRTdHJpbmcpO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtYXQodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtYXRNZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG59XG5cbmNsYXNzIEdyZWV0ZXIge1xuICAgIEBmb3JtYXQoXCJIZWxsbywgJXNcIilcbiAgICBncmVldGluZzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3JlZXRpbmcgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIGdyZWV0KCkge1xuICAgICAgICBsZXQgZm9ybWF0U3RyaW5nID0gZ2V0Rm9ybWF0KHRoaXMsIFwiZ3JlZXRpbmdcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKCdtZXRhZGF0YSA9PiAnICsgZm9ybWF0U3RyaW5nKVxuICAgICAgICByZXR1cm4gZm9ybWF0U3RyaW5nLnJlcGxhY2UoXCIlc1wiLCB0aGlzLmdyZWV0aW5nKTtcbiAgICB9XG59XG5cbmNvbnNvbGUubG9nKCdHcmVldGluZyA9PiAnICsgbmV3IEdyZWV0ZXIoJ1BpZXJyZScpLmdyZWV0KCkpXG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFBMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDMUIsTUFBTUEsaUJBQWlCLEdBQUdDLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFFMUMsU0FBU0MsTUFBTSxDQUFDQyxZQUFvQixFQUFFO0VBQ2xDLE9BQU9DLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDTCxpQkFBaUIsRUFBRUcsWUFBWSxDQUFDO0FBQzVEO0FBRUEsU0FBU0csU0FBUyxDQUFDQyxNQUFXLEVBQUVDLFdBQW1CLEVBQUU7RUFDakQsT0FBT0osT0FBTyxDQUFDSyxXQUFXLENBQUNULGlCQUFpQixFQUFFTyxNQUFNLEVBQUVDLFdBQVcsQ0FBQztBQUN0RTtBQUFDLElBRUtFLE9BQU87RUFBYixNQUFNQSxPQUFPLENBQUM7SUFJVkMsV0FBVyxDQUFDQyxPQUFlLEVBQUU7TUFBQTtNQUN6QixJQUFJLENBQUNDLFFBQVEsR0FBR0QsT0FBTztJQUMzQjtFQU9KO0VBQUM7SUFBQSxHQWJLRixPQUFPO0lBQUE7TUFBQTtNQUFBLGFBQ1JSLE1BQU0sQ0FBQyxXQUFXLENBQUM7TUFBQTtNQUFBO0lBQUE7TUFBQTtNQUFBO01BQUEsT0FPcEIsaUJBQVE7UUFDSixJQUFJQyxZQUFZLEdBQUdHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQzlDUSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxjQUFjLEdBQUdaLFlBQVksQ0FBQztRQUMxQyxPQUFPQSxZQUFZLENBQUNhLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDSCxRQUFRLENBQUM7TUFDcEQ7SUFBQztFQUFBO0FBQUE7QUFHTEMsT0FBTyxDQUFDQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUlMLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQ08sS0FBSyxFQUFFLENBQUMifQ== diff --git a/test/test.js.g.js b/test/test.js.g.js index 8ca7a09..a192f4c 100644 --- a/test/test.js.g.js +++ b/test/test.js.g.js @@ -1,57 +1,47 @@ "use strict"; -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -var fs = require("fs"); -var path = require("path"); -var _require = require("child_process"), - spawn = _require.spawn; -var _require2 = require("child_process"), - spawnSync = _require2.spawnSync; +const fs = require("fs"); +const path = require("path"); +const { + spawn +} = require("child_process"); +const { + spawnSync +} = require("child_process"); function transpile(port, file) { - var client = spawnSync("node", [path.join(__dirname, "..", "src", "client.js"), port, path.join(__dirname, file)]); + const client = spawnSync("node", [path.join(__dirname, "..", "src", "client.js"), port, path.join(__dirname, file)]); if (client.error) throw client.error; - var stderr = String(client.stderr); + const stderr = String(client.stderr); if (stderr.length) console.error(stderr); fs.writeFileSync(path.join(__dirname, file) + ".g.js", String(client.stdout)); return client.status; } function runTests(port) { - var failed = 0; - var _iterator = _createForOfIteratorHelper(fs.readdirSync(__dirname)), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - file = _step.value; - if (file.endsWith('.g.js')) continue; - switch (file.split('.').pop()) { - case "ts": - case "js": - break; - default: - continue; - } - console.log(file); - var status = transpile(port, file); - if (status != 0) failed++; + let failed = 0; + for (file of fs.readdirSync(__dirname)) { + if (file.endsWith('.g.js')) continue; + switch (file.split('.').pop()) { + case "ts": + case "js": + break; + default: + continue; } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); + console.log(file); + const status = transpile(port, file); + if (status != 0) failed++; } - if (!failed) console.log("\nall tests passed");else console.log("\n".concat(failed, " tests failed")); + if (!failed) console.log(`\nall tests passed`);else console.log(`\n${failed} tests failed`); return failed; } // Start transpiler server. -var server = spawn("node", [process.argv.length > 2 ? process.argv[2] : path.join(__dirname, "..", "src", "server.js")]); -server.stdout.on('data', function (data) { +const server = spawn("node", [process.argv.length > 2 ? process.argv[2] : path.join(__dirname, "..", "src", "server.js")]); +server.stdout.on('data', data => { // Get port from log. - var port = data.toString().trim().split(":")[1]; + const port = data.toString().trim().split(":")[1]; // Run test suite. process.exit(runTests(port)); }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwic3Bhd24iLCJzcGF3blN5bmMiLCJ0cmFuc3BpbGUiLCJwb3J0IiwiZmlsZSIsImNsaWVudCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJlcnJvciIsInN0ZGVyciIsIlN0cmluZyIsImxlbmd0aCIsImNvbnNvbGUiLCJ3cml0ZUZpbGVTeW5jIiwic3Rkb3V0Iiwic3RhdHVzIiwicnVuVGVzdHMiLCJmYWlsZWQiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3BsaXQiLCJwb3AiLCJsb2ciLCJzZXJ2ZXIiLCJwcm9jZXNzIiwiYXJndiIsIm9uIiwiZGF0YSIsInRvU3RyaW5nIiwidHJpbSIsImV4aXQiXSwic291cmNlcyI6WyJ0ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3Qge3NwYXdufSA9IHJlcXVpcmUoXCJjaGlsZF9wcm9jZXNzXCIpO1xuY29uc3Qge3NwYXduU3luY30gPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKTtcblxuZnVuY3Rpb24gdHJhbnNwaWxlKHBvcnQsIGZpbGUpIHtcbiAgICBjb25zdCBjbGllbnQgPSBzcGF3blN5bmMoXCJub2RlXCIsIFtcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcInNyY1wiLCBcImNsaWVudC5qc1wiKSxcbiAgICAgICAgcG9ydCwgcGF0aC5qb2luKF9fZGlybmFtZSwgZmlsZSlcbiAgICBdKTtcblxuICAgIGlmIChjbGllbnQuZXJyb3IpXG4gICAgICAgIHRocm93IGNsaWVudC5lcnJvcjtcblxuICAgIGNvbnN0IHN0ZGVyciA9IFN0cmluZyhjbGllbnQuc3RkZXJyKTtcbiAgICBpZiAoc3RkZXJyLmxlbmd0aClcbiAgICAgICAgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCBmaWxlKSArIFwiLmcuanNcIiwgU3RyaW5nKGNsaWVudC5zdGRvdXQpKTtcbiAgICByZXR1cm4gY2xpZW50LnN0YXR1cztcbn1cblxuZnVuY3Rpb24gcnVuVGVzdHMocG9ydCkge1xuICAgIGxldCBmYWlsZWQgPSAwO1xuXG4gICAgZm9yIChmaWxlIG9mIGZzLnJlYWRkaXJTeW5jKF9fZGlybmFtZSkpIHtcbiAgICAgICAgaWYgKGZpbGUuZW5kc1dpdGgoJy5nLmpzJykpXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBzd2l0Y2ggKGZpbGUuc3BsaXQoJy4nKS5wb3AoKSkge1xuICAgICAgICAgICAgY2FzZSBcInRzXCI6XG4gICAgICAgICAgICBjYXNlIFwianNcIjpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdHJhbnNwaWxlKHBvcnQsIGZpbGUpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT0gMClcbiAgICAgICAgICAgIGZhaWxlZCsrO1xuICAgIH1cblxuICAgIGlmICghZmFpbGVkKVxuICAgICAgICBjb25zb2xlLmxvZyhgXFxuYWxsIHRlc3RzIHBhc3NlZGApO1xuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFxcbiR7ZmFpbGVkfSB0ZXN0cyBmYWlsZWRgKTtcblxuICAgIHJldHVybiBmYWlsZWQ7XG59XG5cbi8vIFN0YXJ0IHRyYW5zcGlsZXIgc2VydmVyLlxuY29uc3Qgc2VydmVyID0gc3Bhd24oXCJub2RlXCIsIFtcbiAgICBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMlxuICAgICAgICA/IHByb2Nlc3MuYXJndlsyXVxuICAgICAgICA6IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJzcmNcIiwgXCJzZXJ2ZXIuanNcIilcbl0pO1xuXG5zZXJ2ZXIuc3Rkb3V0Lm9uKCdkYXRhJywgZGF0YSA9PiB7XG4gICAgLy8gR2V0IHBvcnQgZnJvbSBsb2cuXG4gICAgY29uc3QgcG9ydCA9IGRhdGEudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoXCI6XCIpWzFdO1xuXG4gICAgLy8gUnVuIHRlc3Qgc3VpdGUuXG4gICAgcHJvY2Vzcy5leGl0KHJ1blRlc3RzKHBvcnQpKTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLEVBQUUsR0FBR0MsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixJQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDNUIsZUFBZ0JBLE9BQU8sQ0FBQyxlQUFlLENBQUM7RUFBakNFLEtBQUssWUFBTEEsS0FBSztBQUNaLGdCQUFvQkYsT0FBTyxDQUFDLGVBQWUsQ0FBQztFQUFyQ0csU0FBUyxhQUFUQSxTQUFTO0FBRWhCLFNBQVNDLFNBQVMsQ0FBQ0MsSUFBSSxFQUFFQyxJQUFJLEVBQUU7RUFDM0IsSUFBTUMsTUFBTSxHQUFHSixTQUFTLENBQUMsTUFBTSxFQUFFLENBQzdCRixJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQzlDSixJQUFJLEVBQUVKLElBQUksQ0FBQ08sSUFBSSxDQUFDQyxTQUFTLEVBQUVILElBQUksQ0FBQyxDQUNuQyxDQUFDO0VBRUYsSUFBSUMsTUFBTSxDQUFDRyxLQUFLLEVBQ1osTUFBTUgsTUFBTSxDQUFDRyxLQUFLO0VBRXRCLElBQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDTCxNQUFNLENBQUNJLE1BQU0sQ0FBQztFQUNwQyxJQUFJQSxNQUFNLENBQUNFLE1BQU0sRUFDYkMsT0FBTyxDQUFDSixLQUFLLENBQUNDLE1BQU0sQ0FBQztFQUV6QlosRUFBRSxDQUFDZ0IsYUFBYSxDQUFDZCxJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFSCxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUVNLE1BQU0sQ0FBQ0wsTUFBTSxDQUFDUyxNQUFNLENBQUMsQ0FBQztFQUM3RSxPQUFPVCxNQUFNLENBQUNVLE1BQU07QUFDeEI7QUFFQSxTQUFTQyxRQUFRLENBQUNiLElBQUksRUFBRTtFQUNwQixJQUFJYyxNQUFNLEdBQUcsQ0FBQztFQUFDLDJDQUVGcEIsRUFBRSxDQUFDcUIsV0FBVyxDQUFDWCxTQUFTLENBQUM7SUFBQTtFQUFBO0lBQXRDLG9EQUF3QztNQUFuQ0gsSUFBSTtNQUNMLElBQUlBLElBQUksQ0FBQ2UsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUN0QjtNQUVKLFFBQVFmLElBQUksQ0FBQ2dCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxFQUFFO1FBQ3pCLEtBQUssSUFBSTtRQUNULEtBQUssSUFBSTtVQUNMO1FBQ0o7VUFDSTtNQUFTO01BR2pCVCxPQUFPLENBQUNVLEdBQUcsQ0FBQ2xCLElBQUksQ0FBQztNQUNqQixJQUFNVyxNQUFNLEdBQUdiLFNBQVMsQ0FBQ0MsSUFBSSxFQUFFQyxJQUFJLENBQUM7TUFFcEMsSUFBSVcsTUFBTSxJQUFJLENBQUMsRUFDWEUsTUFBTSxFQUFFO0lBQ2hCO0VBQUM7SUFBQTtFQUFBO0lBQUE7RUFBQTtFQUVELElBQUksQ0FBQ0EsTUFBTSxFQUNQTCxPQUFPLENBQUNVLEdBQUcsc0JBQXNCLENBQUMsS0FFbENWLE9BQU8sQ0FBQ1UsR0FBRyxhQUFNTCxNQUFNLG1CQUFnQjtFQUUzQyxPQUFPQSxNQUFNO0FBQ2pCOztBQUVBO0FBQ0EsSUFBTU0sTUFBTSxHQUFHdkIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUN6QndCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxNQUFNLEdBQUcsQ0FBQyxHQUNqQmEsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQ2YxQixJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQ3ZELENBQUM7QUFFRmdCLE1BQU0sQ0FBQ1QsTUFBTSxDQUFDWSxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQUFDLElBQUksRUFBSTtFQUM3QjtFQUNBLElBQU14QixJQUFJLEdBQUd3QixJQUFJLENBQUNDLFFBQVEsRUFBRSxDQUFDQyxJQUFJLEVBQUUsQ0FBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7RUFFakQ7RUFDQUksT0FBTyxDQUFDTSxJQUFJLENBQUNkLFFBQVEsQ0FBQ2IsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDIn0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwic3Bhd24iLCJzcGF3blN5bmMiLCJ0cmFuc3BpbGUiLCJwb3J0IiwiZmlsZSIsImNsaWVudCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJlcnJvciIsInN0ZGVyciIsIlN0cmluZyIsImxlbmd0aCIsImNvbnNvbGUiLCJ3cml0ZUZpbGVTeW5jIiwic3Rkb3V0Iiwic3RhdHVzIiwicnVuVGVzdHMiLCJmYWlsZWQiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3BsaXQiLCJwb3AiLCJsb2ciLCJzZXJ2ZXIiLCJwcm9jZXNzIiwiYXJndiIsIm9uIiwiZGF0YSIsInRvU3RyaW5nIiwidHJpbSIsImV4aXQiXSwic291cmNlcyI6WyJ0ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3Qge3NwYXdufSA9IHJlcXVpcmUoXCJjaGlsZF9wcm9jZXNzXCIpO1xuY29uc3Qge3NwYXduU3luY30gPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKTtcblxuZnVuY3Rpb24gdHJhbnNwaWxlKHBvcnQsIGZpbGUpIHtcbiAgICBjb25zdCBjbGllbnQgPSBzcGF3blN5bmMoXCJub2RlXCIsIFtcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcInNyY1wiLCBcImNsaWVudC5qc1wiKSxcbiAgICAgICAgcG9ydCwgcGF0aC5qb2luKF9fZGlybmFtZSwgZmlsZSlcbiAgICBdKTtcblxuICAgIGlmIChjbGllbnQuZXJyb3IpXG4gICAgICAgIHRocm93IGNsaWVudC5lcnJvcjtcblxuICAgIGNvbnN0IHN0ZGVyciA9IFN0cmluZyhjbGllbnQuc3RkZXJyKTtcbiAgICBpZiAoc3RkZXJyLmxlbmd0aClcbiAgICAgICAgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCBmaWxlKSArIFwiLmcuanNcIiwgU3RyaW5nKGNsaWVudC5zdGRvdXQpKTtcbiAgICByZXR1cm4gY2xpZW50LnN0YXR1cztcbn1cblxuZnVuY3Rpb24gcnVuVGVzdHMocG9ydCkge1xuICAgIGxldCBmYWlsZWQgPSAwO1xuXG4gICAgZm9yIChmaWxlIG9mIGZzLnJlYWRkaXJTeW5jKF9fZGlybmFtZSkpIHtcbiAgICAgICAgaWYgKGZpbGUuZW5kc1dpdGgoJy5nLmpzJykpXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBzd2l0Y2ggKGZpbGUuc3BsaXQoJy4nKS5wb3AoKSkge1xuICAgICAgICAgICAgY2FzZSBcInRzXCI6XG4gICAgICAgICAgICBjYXNlIFwianNcIjpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdHJhbnNwaWxlKHBvcnQsIGZpbGUpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT0gMClcbiAgICAgICAgICAgIGZhaWxlZCsrO1xuICAgIH1cblxuICAgIGlmICghZmFpbGVkKVxuICAgICAgICBjb25zb2xlLmxvZyhgXFxuYWxsIHRlc3RzIHBhc3NlZGApO1xuICAgIGVsc2VcbiAgICAgICAgY29uc29sZS5sb2coYFxcbiR7ZmFpbGVkfSB0ZXN0cyBmYWlsZWRgKTtcblxuICAgIHJldHVybiBmYWlsZWQ7XG59XG5cbi8vIFN0YXJ0IHRyYW5zcGlsZXIgc2VydmVyLlxuY29uc3Qgc2VydmVyID0gc3Bhd24oXCJub2RlXCIsIFtcbiAgICBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMlxuICAgICAgICA/IHByb2Nlc3MuYXJndlsyXVxuICAgICAgICA6IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJzcmNcIiwgXCJzZXJ2ZXIuanNcIilcbl0pO1xuXG5zZXJ2ZXIuc3Rkb3V0Lm9uKCdkYXRhJywgZGF0YSA9PiB7XG4gICAgLy8gR2V0IHBvcnQgZnJvbSBsb2cuXG4gICAgY29uc3QgcG9ydCA9IGRhdGEudG9TdHJpbmcoKS50cmltKCkuc3BsaXQoXCI6XCIpWzFdO1xuXG4gICAgLy8gUnVuIHRlc3Qgc3VpdGUuXG4gICAgcHJvY2Vzcy5leGl0KHJ1blRlc3RzKHBvcnQpKTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLEVBQUUsR0FBR0MsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDNUIsTUFBTTtFQUFDRTtBQUFLLENBQUMsR0FBR0YsT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUN4QyxNQUFNO0VBQUNHO0FBQVMsQ0FBQyxHQUFHSCxPQUFPLENBQUMsZUFBZSxDQUFDO0FBRTVDLFNBQVNJLFNBQVMsQ0FBQ0MsSUFBSSxFQUFFQyxJQUFJLEVBQUU7RUFDM0IsTUFBTUMsTUFBTSxHQUFHSixTQUFTLENBQUMsTUFBTSxFQUFFLENBQzdCRixJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQzlDSixJQUFJLEVBQUVKLElBQUksQ0FBQ08sSUFBSSxDQUFDQyxTQUFTLEVBQUVILElBQUksQ0FBQyxDQUNuQyxDQUFDO0VBRUYsSUFBSUMsTUFBTSxDQUFDRyxLQUFLLEVBQ1osTUFBTUgsTUFBTSxDQUFDRyxLQUFLO0VBRXRCLE1BQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDTCxNQUFNLENBQUNJLE1BQU0sQ0FBQztFQUNwQyxJQUFJQSxNQUFNLENBQUNFLE1BQU0sRUFDYkMsT0FBTyxDQUFDSixLQUFLLENBQUNDLE1BQU0sQ0FBQztFQUV6QlosRUFBRSxDQUFDZ0IsYUFBYSxDQUFDZCxJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFSCxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUVNLE1BQU0sQ0FBQ0wsTUFBTSxDQUFDUyxNQUFNLENBQUMsQ0FBQztFQUM3RSxPQUFPVCxNQUFNLENBQUNVLE1BQU07QUFDeEI7QUFFQSxTQUFTQyxRQUFRLENBQUNiLElBQUksRUFBRTtFQUNwQixJQUFJYyxNQUFNLEdBQUcsQ0FBQztFQUVkLEtBQUtiLElBQUksSUFBSVAsRUFBRSxDQUFDcUIsV0FBVyxDQUFDWCxTQUFTLENBQUMsRUFBRTtJQUNwQyxJQUFJSCxJQUFJLENBQUNlLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDdEI7SUFFSixRQUFRZixJQUFJLENBQUNnQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLEdBQUcsRUFBRTtNQUN6QixLQUFLLElBQUk7TUFDVCxLQUFLLElBQUk7UUFDTDtNQUNKO1FBQ0k7SUFBUztJQUdqQlQsT0FBTyxDQUFDVSxHQUFHLENBQUNsQixJQUFJLENBQUM7SUFDakIsTUFBTVcsTUFBTSxHQUFHYixTQUFTLENBQUNDLElBQUksRUFBRUMsSUFBSSxDQUFDO0lBRXBDLElBQUlXLE1BQU0sSUFBSSxDQUFDLEVBQ1hFLE1BQU0sRUFBRTtFQUNoQjtFQUVBLElBQUksQ0FBQ0EsTUFBTSxFQUNQTCxPQUFPLENBQUNVLEdBQUcsQ0FBRSxvQkFBbUIsQ0FBQyxDQUFDLEtBRWxDVixPQUFPLENBQUNVLEdBQUcsQ0FBRSxLQUFJTCxNQUFPLGVBQWMsQ0FBQztFQUUzQyxPQUFPQSxNQUFNO0FBQ2pCOztBQUVBO0FBQ0EsTUFBTU0sTUFBTSxHQUFHdkIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUN6QndCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDZCxNQUFNLEdBQUcsQ0FBQyxHQUNqQmEsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQ2YxQixJQUFJLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQ3ZELENBQUM7QUFFRmdCLE1BQU0sQ0FBQ1QsTUFBTSxDQUFDWSxFQUFFLENBQUMsTUFBTSxFQUFFQyxJQUFJLElBQUk7RUFDN0I7RUFDQSxNQUFNeEIsSUFBSSxHQUFHd0IsSUFBSSxDQUFDQyxRQUFRLEVBQUUsQ0FBQ0MsSUFBSSxFQUFFLENBQUNULEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7O0VBRWpEO0VBQ0FJLE9BQU8sQ0FBQ00sSUFBSSxDQUFDZCxRQUFRLENBQUNiLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyJ9