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 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..8634984 --- /dev/null +++ b/test/async.ts.g.js @@ -0,0 +1,7 @@ +"use strict"; + +async function haha() {} +async function hoho() { + await haha(); +} +//# 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