diff --git a/doric-js/bundle/doric-lib.es5.js b/doric-js/bundle/doric-lib.es5.js new file mode 100644 index 00000000..8308e830 --- /dev/null +++ b/doric-js/bundle/doric-lib.es5.js @@ -0,0 +1,3024 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function obj2Model(obj) { + if (obj instanceof Array) { + return obj.map(function (e) { return obj2Model(e); }); + } + else if (obj instanceof Object) { + if (Reflect.has(obj, 'toModel') && Reflect.get(obj, 'toModel') instanceof Function) { + obj = Reflect.apply(Reflect.get(obj, 'toModel'), obj, []); + return obj; + } + else { + for (var key in obj) { + var val = Reflect.get(obj, key); + Reflect.set(obj, key, obj2Model(val)); + } + return obj; + } + } + else { + return obj; + } +} +var Mutable = /** @class */ (function () { + function Mutable(v) { + var _this = this; + this.binders = new Set; + this.get = function () { + return _this.val; + }; + this.set = function (v) { + _this.val = v; + _this.binders.forEach(function (e) { + Reflect.apply(e, undefined, [_this.val]); + }); + }; + this.val = v; + } + Mutable.prototype.bind = function (binder) { + this.binders.add(binder); + Reflect.apply(binder, undefined, [this.val]); + }; + Mutable.of = function (v) { + return new Mutable(v); + }; + return Mutable; +}()); + +/* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __uniqueId__ = 0; +function uniqueId(prefix) { + return "__" + prefix + "_" + __uniqueId__++ + "__"; +} + +function toString(message) { + if (message instanceof Function) { + return message.toString(); + } + else if (message instanceof Object) { + try { + return JSON.stringify(message); + } + catch (e) { + return message.toString(); + } + } + else if (message === undefined) { + return "undefined"; + } + else { + return message.toString(); + } +} +function log() { + var arguments$1 = arguments; + + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments$1[_i]; + } + var out = ""; + for (var i = 0; i < arguments.length; i++) { + if (i > 0) { + out += ','; + } + out += toString(arguments$1[i]); + } + nativeLog('d', out); +} +function loge() { + var arguments$1 = arguments; + + var message = []; + for (var _i = 0; _i < arguments.length; _i++) { + message[_i] = arguments$1[_i]; + } + var out = ""; + for (var i = 0; i < arguments.length; i++) { + if (i > 0) { + out += ','; + } + out += toString(arguments$1[i]); + } + nativeLog('e', out); +} +function logw() { + var arguments$1 = arguments; + + var message = []; + for (var _i = 0; _i < arguments.length; _i++) { + message[_i] = arguments$1[_i]; + } + var out = ""; + for (var i = 0; i < arguments.length; i++) { + if (i > 0) { + out += ','; + } + out += toString(arguments$1[i]); + } + nativeLog('w', out); +} + +var __extends = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var __values = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +function Property(target, propKey) { + Object.defineProperty(target, propKey, { + get: function () { + return Reflect.get(this, "__prop__" + propKey, this); + }, + set: function (v) { + var oldV = Reflect.get(this, "__prop__" + propKey, this); + Reflect.set(this, "__prop__" + propKey, v, this); + if (oldV !== v) { + Reflect.apply(this.onPropertyChanged, this, [propKey, oldV, v]); + } + }, + }); +} +var View = /** @class */ (function () { + function View() { + this.width = 0; + this.height = 0; + this.x = 0; + this.y = 0; + this.viewId = uniqueId('ViewId'); + this.nativeViewModel = { + id: this.viewId, + type: this.constructor.name, + props: this.__dirty_props__, + }; + } + View.prototype.callback2Id = function (f) { + if (this.callbacks === undefined) { + this.callbacks = new Map; + } + var id = uniqueId('Function'); + this.callbacks.set(id, f); + return id; + }; + View.prototype.id2Callback = function (id) { + var f = this.callbacks.get(id); + if (f === undefined) { + f = Reflect.get(this, id); + } + return f; + }; + Object.defineProperty(View.prototype, "left", { + /** Anchor start*/ + get: function () { + return this.x; + }, + set: function (v) { + this.x = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "right", { + get: function () { + return this.x + this.width; + }, + set: function (v) { + this.x = v - this.width; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "top", { + get: function () { + return this.y; + }, + set: function (v) { + this.y = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "bottom", { + get: function () { + return this.y + this.height; + }, + set: function (v) { + this.y = v - this.height; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "centerX", { + get: function () { + return this.x + this.width / 2; + }, + set: function (v) { + this.x = v - this.width / 2; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "centerY", { + get: function () { + return this.y + this.height / 2; + }, + set: function (v) { + this.y = v - this.height / 2; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(View.prototype, "dirtyProps", { + /** Anchor end*/ + get: function () { + return this.__dirty_props__; + }, + enumerable: true, + configurable: true + }); + View.prototype.onPropertyChanged = function (propKey, oldV, newV) { + if (newV instanceof Function) { + newV = this.callback2Id(newV); + } + else { + newV = obj2Model(newV); + } + if (this.__dirty_props__ === undefined) { + this.__dirty_props__ = {}; + } + this.__dirty_props__[propKey] = newV; + }; + View.prototype.clean = function () { + for (var key in this.__dirty_props__) { + if (Reflect.has(this.__dirty_props__, key)) { + Reflect.deleteProperty(this.__dirty_props__, key); + } + } + }; + View.prototype.isDirty = function () { + return Reflect.ownKeys(this.__dirty_props__).length !== 0; + }; + View.prototype.responseCallback = function (id) { + var arguments$1 = arguments; + + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments$1[_i]; + } + var f = this.id2Callback(id); + if (f instanceof Function) { + var argumentsList = []; + for (var i = 1; i < arguments.length; i++) { + argumentsList.push(arguments$1[i]); + } + return Reflect.apply(f, this, argumentsList); + } + else { + loge("Cannot find callback:" + id + " for " + JSON.stringify(this.toModel())); + } + }; + View.prototype.toModel = function () { + return this.nativeViewModel; + }; + View.prototype.let = function (block) { + block(this); + }; + View.prototype.also = function (block) { + block(this); + return this; + }; + View.prototype.apply = function (config) { + for (var key in config) { + Reflect.set(this, key, Reflect.get(config, key, config), this); + } + return this; + }; + View.prototype.in = function (group) { + group.addChild(this); + return this; + }; + View.prototype.nativeChannel = function (context, name) { + var thisView = this; + return function (args) { + if (args === void 0) { args = undefined; } + var func = context.shader.command; + var viewIds = []; + while (thisView != undefined) { + viewIds.push(thisView.viewId); + thisView = thisView.superview; + } + var params = { + viewIds: viewIds.reverse(), + name: name, + args: args, + }; + return Reflect.apply(func, undefined, [params]); + }; + }; + View.prototype.getWidth = function (context) { + return this.nativeChannel(context, 'getWidth')(); + }; + View.prototype.getHeight = function (context) { + return this.nativeChannel(context, 'getHeight')(); + }; + View.prototype.getLocationOnScreen = function (context) { + return this.nativeChannel(context, "getLocationOnScreen")(); + }; + /**----------transform----------*/ + View.prototype.doAnimation = function (context, animation) { + var _this = this; + return this.nativeChannel(context, "doAnimation")(animation.toModel()).then(function (args) { + for (var key in args) { + Reflect.set(_this, key, Reflect.get(args, key, args), _this); + Reflect.deleteProperty(_this.__dirty_props__, key); + } + }); + }; + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "width", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "height", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "x", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "y", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "backgroundColor", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "corners", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "border", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "shadow", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "alpha", void 0); + __decorate([ + Property, + __metadata("design:type", Boolean) + ], View.prototype, "hidden", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "viewId", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "padding", void 0); + __decorate([ + Property, + __metadata("design:type", Object) + ], View.prototype, "layoutConfig", void 0); + __decorate([ + Property, + __metadata("design:type", Function) + ], View.prototype, "onClick", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "translationX", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "translationY", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "scaleX", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "scaleY", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "pivotX", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "pivotY", void 0); + __decorate([ + Property, + __metadata("design:type", Number) + ], View.prototype, "rotation", void 0); + return View; +}()); +var Superview = /** @class */ (function (_super) { + __extends(Superview, _super); + function Superview() { + return _super !== null && _super.apply(this, arguments) || this; + } + Superview.prototype.subviewById = function (id) { + var e_1, _a; + try { + for (var _b = __values(this.allSubviews()), _c = _b.next(); !_c.done; _c = _b.next()) { + var v = _c.value; + if (v.viewId === id) { + return v; + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_1) { throw e_1.error; } } + } + }; + Superview.prototype.isDirty = function () { + var e_2, _a; + if (_super.prototype.isDirty.call(this)) { + return true; + } + else { + try { + for (var _b = __values(this.allSubviews()), _c = _b.next(); !_c.done; _c = _b.next()) { + var v = _c.value; + if (v.isDirty()) { + return true; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_2) { throw e_2.error; } } + } + } + return false; + }; + Superview.prototype.clean = function () { + var e_3, _a; + try { + for (var _b = __values(this.allSubviews()), _c = _b.next(); !_c.done; _c = _b.next()) { + var v = _c.value; + v.clean(); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_3) { throw e_3.error; } } + } + _super.prototype.clean.call(this); + }; + Superview.prototype.toModel = function () { + var e_4, _a; + var subviews = []; + try { + for (var _b = __values(this.allSubviews()), _c = _b.next(); !_c.done; _c = _b.next()) { + var v = _c.value; + if (v != undefined) { + v.superview = this; + if (v.isDirty()) { + subviews.push(v.toModel()); + } + } + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_4) { throw e_4.error; } } + } + this.dirtyProps.subviews = subviews; + return _super.prototype.toModel.call(this); + }; + return Superview; +}(View)); +var Group = /** @class */ (function (_super) { + __extends(Group, _super); + function Group() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.children = []; + return _this; + } + Group.prototype.allSubviews = function () { + return this.children; + }; + Group.prototype.addChild = function (view) { + this.children.push(view); + this.dirtyProps.children = this.children.map(function (e) { return e.viewId; }); + }; + return Group; +}(Superview)); + +var SPECIFIED = 1; +var START = 1 << 1; +var END = 1 << 2; +var SHIFT_X = 0; +var SHIFT_Y = 4; +var LEFT = (START | SPECIFIED) << SHIFT_X; +var RIGHT = (END | SPECIFIED) << SHIFT_X; +var TOP = (START | SPECIFIED) << SHIFT_Y; +var BOTTOM = (END | SPECIFIED) << SHIFT_Y; +var CENTER_X = SPECIFIED << SHIFT_X; +var CENTER_Y = SPECIFIED << SHIFT_Y; +var CENTER = CENTER_X | CENTER_Y; +var Gravity = /** @class */ (function () { + function Gravity() { + this.val = 0; + } + Gravity.prototype.left = function () { + var val = this.val | LEFT; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.right = function () { + var val = this.val | RIGHT; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.top = function () { + var val = this.val | TOP; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.bottom = function () { + var val = this.val | BOTTOM; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.center = function () { + var val = this.val | CENTER; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.centerX = function () { + var val = this.val | CENTER_X; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.centerY = function () { + var val = this.val | CENTER_Y; + var ret = new Gravity; + ret.val = val; + return ret; + }; + Gravity.prototype.toModel = function () { + return this.val; + }; + Gravity.origin = new Gravity; + Gravity.Center = Gravity.origin.center(); + Gravity.CenterX = Gravity.origin.centerX(); + Gravity.CenterY = Gravity.origin.centerY(); + Gravity.Left = Gravity.origin.left(); + Gravity.Right = Gravity.origin.right(); + Gravity.Top = Gravity.origin.top(); + Gravity.Bottom = Gravity.origin.bottom(); + return Gravity; +}()); +function gravity() { + return new Gravity; +} + +(function (LayoutSpec) { + /** + * Depends on what's been set on width or height. + */ + LayoutSpec[LayoutSpec["JUST"] = 0] = "JUST"; + /** + * Depends on it's content. + */ + LayoutSpec[LayoutSpec["FIT"] = 1] = "FIT"; + /** + * Extend as much as parent let it take. + */ + LayoutSpec[LayoutSpec["MOST"] = 2] = "MOST"; +})(exports.LayoutSpec || (exports.LayoutSpec = {})); +var LayoutConfigImpl = /** @class */ (function () { + function LayoutConfigImpl() { + } + LayoutConfigImpl.prototype.fit = function () { + this.widthSpec = exports.LayoutSpec.FIT; + this.heightSpec = exports.LayoutSpec.FIT; + return this; + }; + LayoutConfigImpl.prototype.most = function () { + this.widthSpec = exports.LayoutSpec.MOST; + this.heightSpec = exports.LayoutSpec.MOST; + return this; + }; + LayoutConfigImpl.prototype.just = function () { + this.widthSpec = exports.LayoutSpec.JUST; + this.heightSpec = exports.LayoutSpec.JUST; + return this; + }; + LayoutConfigImpl.prototype.configWidth = function (w) { + this.widthSpec = w; + return this; + }; + LayoutConfigImpl.prototype.configHeight = function (h) { + this.heightSpec = h; + return this; + }; + LayoutConfigImpl.prototype.configMargin = function (m) { + this.margin = m; + return this; + }; + LayoutConfigImpl.prototype.configAlignment = function (a) { + this.alignment = a; + return this; + }; + LayoutConfigImpl.prototype.configWeight = function (w) { + this.weight = w; + return this; + }; + LayoutConfigImpl.prototype.toModel = function () { + return { + widthSpec: this.widthSpec, + heightSpec: this.heightSpec, + margin: this.margin, + alignment: this.alignment ? this.alignment.toModel() : undefined, + weight: this.weight, + }; + }; + return LayoutConfigImpl; +}()); +function layoutConfig() { + return new LayoutConfigImpl; +} + +var __extends$1 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$1 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var __values$1 = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var Stack = /** @class */ (function (_super) { + __extends$1(Stack, _super); + function Stack() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Stack; +}(Group)); +var Root = /** @class */ (function (_super) { + __extends$1(Root, _super); + function Root() { + return _super !== null && _super.apply(this, arguments) || this; + } + return Root; +}(Stack)); +var LinearLayout = /** @class */ (function (_super) { + __extends$1(LinearLayout, _super); + function LinearLayout() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$1([ + Property, + __metadata$1("design:type", Number) + ], LinearLayout.prototype, "space", void 0); + __decorate$1([ + Property, + __metadata$1("design:type", Gravity) + ], LinearLayout.prototype, "gravity", void 0); + return LinearLayout; +}(Group)); +var VLayout = /** @class */ (function (_super) { + __extends$1(VLayout, _super); + function VLayout() { + return _super !== null && _super.apply(this, arguments) || this; + } + return VLayout; +}(LinearLayout)); +var HLayout = /** @class */ (function (_super) { + __extends$1(HLayout, _super); + function HLayout() { + return _super !== null && _super.apply(this, arguments) || this; + } + return HLayout; +}(LinearLayout)); +function stack(views, config) { + var e_1, _a; + var ret = new Stack; + ret.layoutConfig = layoutConfig().fit(); + try { + for (var views_1 = __values$1(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) { + var v = views_1_1.value; + ret.addChild(v); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (views_1_1 && !views_1_1.done && (_a = views_1.return)) { _a.call(views_1); } + } + finally { if (e_1) { throw e_1.error; } } + } + if (config) { + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + } + return ret; +} +function hlayout(views, config) { + var e_2, _a; + var ret = new HLayout; + ret.layoutConfig = layoutConfig().fit(); + try { + for (var views_2 = __values$1(views), views_2_1 = views_2.next(); !views_2_1.done; views_2_1 = views_2.next()) { + var v = views_2_1.value; + ret.addChild(v); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (views_2_1 && !views_2_1.done && (_a = views_2.return)) { _a.call(views_2); } + } + finally { if (e_2) { throw e_2.error; } } + } + if (config) { + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + } + return ret; +} +function vlayout(views, config) { + var e_3, _a; + var ret = new VLayout; + ret.layoutConfig = layoutConfig().fit(); + try { + for (var views_3 = __values$1(views), views_3_1 = views_3.next(); !views_3_1.done; views_3_1 = views_3.next()) { + var v = views_3_1.value; + ret.addChild(v); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (views_3_1 && !views_3_1.done && (_a = views_3.return)) { _a.call(views_3); } + } + finally { if (e_3) { throw e_3.error; } } + } + if (config) { + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + } + return ret; +} + +var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$2 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var __values$2 = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +function NativeCall(target, propertyKey, descriptor) { + var originVal = descriptor.value; + descriptor.value = function () { + var ret = Reflect.apply(originVal, this, arguments); + return ret; + }; + return descriptor; +} +var Panel = /** @class */ (function () { + function Panel() { + this.__root__ = new Root; + this.headviews = new Map; + } + Panel.prototype.onCreate = function () { }; + Panel.prototype.onDestroy = function () { }; + Panel.prototype.onShow = function () { }; + Panel.prototype.onHidden = function () { }; + Panel.prototype.addHeadView = function (type, v) { + var map = this.headviews.get(type); + if (map) { + map.set(v.viewId, v); + } + else { + map = new Map; + map.set(v.viewId, v); + this.headviews.set(type, map); + } + }; + Panel.prototype.allHeadViews = function () { + return this.headviews.values(); + }; + Panel.prototype.removeHeadView = function (type, v) { + if (this.headviews.has(type)) { + var map = this.headviews.get(type); + if (map) { + if (v instanceof View) { + map.delete(v.viewId); + } + else { + map.delete(v); + } + } + } + }; + Panel.prototype.clearHeadViews = function (type) { + if (this.headviews.has(type)) { + this.headviews.delete(type); + } + }; + Panel.prototype.getRootView = function () { + return this.__root__; + }; + Panel.prototype.getInitData = function () { + return this.__data__; + }; + Panel.prototype.__init__ = function (frame, data) { + if (data) { + this.__data__ = JSON.parse(data); + } + this.__root__.width = frame.width; + this.__root__.height = frame.height; + this.__root__.children.length = 0; + this.build(this.__root__); + }; + Panel.prototype.__onCreate__ = function () { + this.onCreate(); + }; + Panel.prototype.__onDestroy__ = function () { + this.onDestroy(); + }; + Panel.prototype.__onShow__ = function () { + this.onShow(); + }; + Panel.prototype.__onHidden__ = function () { + this.onHidden(); + }; + Panel.prototype.__build__ = function () { + this.build(this.__root__); + }; + Panel.prototype.__response__ = function (viewIds, callbackId) { + var arguments$1 = arguments; + + var v = this.retrospectView(viewIds); + if (v === undefined) { + loge("Cannot find view for " + viewIds); + } + else { + var argumentsList = [callbackId]; + for (var i = 2; i < arguments.length; i++) { + argumentsList.push(arguments$1[i]); + } + return Reflect.apply(v.responseCallback, v, argumentsList); + } + }; + Panel.prototype.retrospectView = function (ids) { + var _this = this; + return ids.reduce(function (acc, cur) { + var e_1, _a; + if (acc === undefined) { + if (cur === _this.__root__.viewId) { + return _this.__root__; + } + try { + for (var _b = __values$2(_this.headviews.values()), _c = _b.next(); !_c.done; _c = _b.next()) { + var map = _c.value; + if (map.has(cur)) { + return map.get(cur); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_1) { throw e_1.error; } } + } + return undefined; + } + else { + if (Reflect.has(acc, "subviewById")) { + return Reflect.apply(Reflect.get(acc, "subviewById"), acc, [cur]); + } + return acc; + } + }, undefined); + }; + Panel.prototype.nativeRender = function (model) { + this.context.callNative("shader", "render", model); + }; + Panel.prototype.hookBeforeNativeCall = function () { + var e_2, _a, e_3, _b; + if (Environment.platform !== 'web') { + this.__root__.clean(); + try { + for (var _c = __values$2(this.headviews.values()), _d = _c.next(); !_d.done; _d = _c.next()) { + var map = _d.value; + try { + for (var _e = (e_3 = void 0, __values$2(map.values())), _f = _e.next(); !_f.done; _f = _e.next()) { + var v = _f.value; + v.clean(); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) { _b.call(_e); } + } + finally { if (e_3) { throw e_3.error; } } + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) { _a.call(_c); } + } + finally { if (e_2) { throw e_2.error; } } + } + } + }; + Panel.prototype.hookAfterNativeCall = function () { + var e_4, _a, e_5, _b; + var _this = this; + if (Environment.platform !== 'web') { + //Here insert a native call to ensure the promise is resolved done. + nativeEmpty(); + if (this.__root__.isDirty()) { + var model = this.__root__.toModel(); + this.nativeRender(model); + } + try { + for (var _c = __values$2(this.headviews.values()), _d = _c.next(); !_d.done; _d = _c.next()) { + var map = _d.value; + try { + for (var _e = (e_5 = void 0, __values$2(map.values())), _f = _e.next(); !_f.done; _f = _e.next()) { + var v = _f.value; + if (v.isDirty()) { + var model = v.toModel(); + this.nativeRender(model); + } + } + } + catch (e_5_1) { e_5 = { error: e_5_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) { _b.call(_e); } + } + finally { if (e_5) { throw e_5.error; } } + } + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) { _a.call(_c); } + } + finally { if (e_4) { throw e_4.error; } } + } + } + else { + Promise.resolve().then(function () { + var e_6, _a, e_7, _b; + if (_this.__root__.isDirty()) { + var model = _this.__root__.toModel(); + _this.nativeRender(model); + _this.__root__.clean(); + } + try { + for (var _c = __values$2(_this.headviews.values()), _d = _c.next(); !_d.done; _d = _c.next()) { + var map = _d.value; + try { + for (var _e = (e_7 = void 0, __values$2(map.values())), _f = _e.next(); !_f.done; _f = _e.next()) { + var v = _f.value; + if (v.isDirty()) { + var model = v.toModel(); + _this.nativeRender(model); + v.clean(); + } + } + } + catch (e_7_1) { e_7 = { error: e_7_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) { _b.call(_e); } + } + finally { if (e_7) { throw e_7.error; } } + } + } + } + catch (e_6_1) { e_6 = { error: e_6_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) { _a.call(_c); } + } + finally { if (e_6) { throw e_6.error; } } + } + }); + } + }; + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Object, String]), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__init__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__onCreate__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__onDestroy__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__onShow__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__onHidden__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", []), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__build__", null); + __decorate$2([ + NativeCall, + __metadata$2("design:type", Function), + __metadata$2("design:paramtypes", [Array, String]), + __metadata$2("design:returntype", void 0) + ], Panel.prototype, "__response__", null); + return Panel; +}()); + +/* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __extends$2 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values$3 = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +(function (RepeatMode) { + RepeatMode[RepeatMode["RESTART"] = 1] = "RESTART"; + RepeatMode[RepeatMode["REVERSE"] = 2] = "REVERSE"; +})(exports.RepeatMode || (exports.RepeatMode = {})); +(function (FillMode) { + /** + * The receiver is removed from the presentation when the animation is completed. + */ + FillMode[FillMode["Removed"] = 0] = "Removed"; + /** + * The receiver remains visible in its final state when the animation is completed. + */ + FillMode[FillMode["Forward"] = 1] = "Forward"; + /** + * The receiver clamps values before zero to zero when the animation is completed. + */ + FillMode[FillMode["Backward"] = 2] = "Backward"; + /** + * The receiver clamps values at both ends of the object’s time space + */ + FillMode[FillMode["Both"] = 3] = "Both"; +})(exports.FillMode || (exports.FillMode = {})); +(function (TimingFunction) { + /** + * The system default timing function. Use this function to ensure that the timing of your animations matches that of most system animations. + */ + TimingFunction[TimingFunction["Default"] = 0] = "Default"; + /** + * Linear pacing, which causes an animation to occur evenly over its duration. + */ + TimingFunction[TimingFunction["Linear"] = 1] = "Linear"; + /** + * Ease-in pacing, which causes an animation to begin slowly and then speed up as it progresses. + */ + TimingFunction[TimingFunction["EaseIn"] = 2] = "EaseIn"; + /** + * Ease-out pacing, which causes an animation to begin quickly and then slow as it progresses. + */ + TimingFunction[TimingFunction["EaseOut"] = 3] = "EaseOut"; + /** + * Ease-in-ease-out pacing, which causes an animation to begin slowly, accelerate through the middle of its duration, and then slow again before completing. + */ + TimingFunction[TimingFunction["EaseInEaseOut"] = 4] = "EaseInEaseOut"; +})(exports.TimingFunction || (exports.TimingFunction = {})); +var Animation = /** @class */ (function () { + function Animation() { + this.changeables = new Map; + this.duration = 0; + this.fillMode = exports.FillMode.Forward; + } + Animation.prototype.toModel = function () { + var e_1, _a; + var changeables = []; + try { + for (var _b = __values$3(this.changeables.values()), _c = _b.next(); !_c.done; _c = _b.next()) { + var e = _c.value; + changeables.push({ + key: e.key, + fromValue: e.fromValue, + toValue: e.toValue, + }); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_1) { throw e_1.error; } } + } + return { + type: this.constructor.name, + delay: this.delay, + duration: this.duration, + changeables: changeables, + repeatCount: this.repeatCount, + repeatMode: this.repeatMode, + fillMode: this.fillMode, + timingFunction: this.timingFunction + }; + }; + return Animation; +}()); +var ScaleAnimation = /** @class */ (function (_super) { + __extends$2(ScaleAnimation, _super); + function ScaleAnimation() { + var _this = _super.call(this) || this; + _this.scaleXChangeable = { + key: "scaleX", + fromValue: 1, + toValue: 1, + }; + _this.scaleYChangeable = { + key: "scaleY", + fromValue: 1, + toValue: 1, + }; + _this.changeables.set("scaleX", _this.scaleXChangeable); + _this.changeables.set("scaleY", _this.scaleYChangeable); + return _this; + } + Object.defineProperty(ScaleAnimation.prototype, "fromScaleX", { + get: function () { + return this.scaleXChangeable.fromValue; + }, + set: function (v) { + this.scaleXChangeable.fromValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ScaleAnimation.prototype, "toScaleX", { + get: function () { + return this.scaleXChangeable.toValue; + }, + set: function (v) { + this.scaleXChangeable.toValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ScaleAnimation.prototype, "fromScaleY", { + get: function () { + return this.scaleYChangeable.fromValue; + }, + set: function (v) { + this.scaleYChangeable.fromValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ScaleAnimation.prototype, "toScaleY", { + get: function () { + return this.scaleYChangeable.toValue; + }, + set: function (v) { + this.scaleYChangeable.toValue = v; + }, + enumerable: true, + configurable: true + }); + return ScaleAnimation; +}(Animation)); +var TranslationAnimation = /** @class */ (function (_super) { + __extends$2(TranslationAnimation, _super); + function TranslationAnimation() { + var _this = _super.call(this) || this; + _this.translationXChangeable = { + key: "translationX", + fromValue: 1, + toValue: 1, + }; + _this.translationYChangeable = { + key: "translationY", + fromValue: 1, + toValue: 1, + }; + _this.changeables.set("translationX", _this.translationXChangeable); + _this.changeables.set("translationY", _this.translationYChangeable); + return _this; + } + Object.defineProperty(TranslationAnimation.prototype, "fromTranslationX", { + get: function () { + return this.translationXChangeable.fromValue; + }, + set: function (v) { + this.translationXChangeable.fromValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TranslationAnimation.prototype, "toTranslationX", { + get: function () { + return this.translationXChangeable.toValue; + }, + set: function (v) { + this.translationXChangeable.toValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TranslationAnimation.prototype, "fromTranslationY", { + get: function () { + return this.translationYChangeable.fromValue; + }, + set: function (v) { + this.translationYChangeable.fromValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(TranslationAnimation.prototype, "toTranslationY", { + get: function () { + return this.translationYChangeable.toValue; + }, + set: function (v) { + this.translationYChangeable.toValue = v; + }, + enumerable: true, + configurable: true + }); + return TranslationAnimation; +}(Animation)); +var RotationAnimation = /** @class */ (function (_super) { + __extends$2(RotationAnimation, _super); + function RotationAnimation() { + var _this = _super.call(this) || this; + _this.rotationChaneable = { + key: "rotation", + fromValue: 1, + toValue: 1, + }; + _this.changeables.set("rotation", _this.rotationChaneable); + return _this; + } + Object.defineProperty(RotationAnimation.prototype, "fromRotation", { + get: function () { + return this.rotationChaneable.fromValue; + }, + set: function (v) { + this.rotationChaneable.fromValue = v; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(RotationAnimation.prototype, "toRotation", { + get: function () { + return this.rotationChaneable.toValue; + }, + set: function (v) { + this.rotationChaneable.toValue = v; + }, + enumerable: true, + configurable: true + }); + return RotationAnimation; +}(Animation)); +var AnimationSet = /** @class */ (function () { + function AnimationSet() { + this.animations = []; + this._duration = 0; + } + AnimationSet.prototype.addAnimation = function (anim) { + this.animations.push(anim); + }; + Object.defineProperty(AnimationSet.prototype, "duration", { + get: function () { + return this._duration; + }, + set: function (v) { + this._duration = v; + this.animations.forEach(function (e) { return e.duration = v; }); + }, + enumerable: true, + configurable: true + }); + AnimationSet.prototype.toModel = function () { + return { + animations: this.animations.map(function (e) { + return e.toModel(); + }), + delay: this.delay, + }; + }; + return AnimationSet; +}()); + +/** + * Store color as format AARRGGBB or RRGGBB + */ +var Color = /** @class */ (function () { + function Color(v) { + this._value = 0; + this._value = v | 0x0; + } + Color.parse = function (str) { + if (!str.startsWith("#")) { + throw new Error("Parse color error with " + str); + } + var val = parseInt(str.substr(1), 16); + if (str.length === 7) { + return new Color(val | 0xff000000); + } + else if (str.length === 9) { + return new Color(val); + } + else { + throw new Error("Parse color error with " + str); + } + }; + Color.safeParse = function (str, defVal) { + if (defVal === void 0) { defVal = Color.TRANSPARENT; } + var color = defVal; + try { + color = Color.parse(str); + } + catch (e) { + } + finally { + return color; + } + }; + Color.prototype.alpha = function (v) { + v = v * 255; + return new Color((this._value & 0xffffff) | ((v & 0xff) << 24)); + }; + Color.prototype.toModel = function () { + return this._value; + }; + Color.BLACK = new Color(0xFF000000); + Color.DKGRAY = new Color(0xFF444444); + Color.GRAY = new Color(0xFF888888); + Color.LTGRAY = new Color(0xFFCCCCCC); + Color.WHITE = new Color(0xFFFFFFFF); + Color.RED = new Color(0xFFFF0000); + Color.GREEN = new Color(0xFF00FF00); + Color.BLUE = new Color(0xFF0000FF); + Color.YELLOW = new Color(0xFFFFFF00); + Color.CYAN = new Color(0xFF00FFFF); + Color.MAGENTA = new Color(0xFFFF00FF); + Color.TRANSPARENT = new Color(0); + return Color; +}()); +(function (GradientOrientation) { + /** draw the gradient from the top to the bottom */ + GradientOrientation[GradientOrientation["TOP_BOTTOM"] = 0] = "TOP_BOTTOM"; + /** draw the gradient from the top-right to the bottom-left */ + GradientOrientation[GradientOrientation["TR_BL"] = 1] = "TR_BL"; + /** draw the gradient from the right to the left */ + GradientOrientation[GradientOrientation["RIGHT_LEFT"] = 2] = "RIGHT_LEFT"; + /** draw the gradient from the bottom-right to the top-left */ + GradientOrientation[GradientOrientation["BR_TL"] = 3] = "BR_TL"; + /** draw the gradient from the bottom to the top */ + GradientOrientation[GradientOrientation["BOTTOM_TOP"] = 4] = "BOTTOM_TOP"; + /** draw the gradient from the bottom-left to the top-right */ + GradientOrientation[GradientOrientation["BL_TR"] = 5] = "BL_TR"; + /** draw the gradient from the left to the right */ + GradientOrientation[GradientOrientation["LEFT_RIGHT"] = 6] = "LEFT_RIGHT"; + /** draw the gradient from the top-left to the bottom-right */ + GradientOrientation[GradientOrientation["TL_BR"] = 7] = "TL_BR"; +})(exports.GradientOrientation || (exports.GradientOrientation = {})); + +var __extends$3 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$3 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var Text = /** @class */ (function (_super) { + __extends$3(Text, _super); + function Text() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$3([ + Property, + __metadata$3("design:type", String) + ], Text.prototype, "text", void 0); + __decorate$3([ + Property, + __metadata$3("design:type", Color) + ], Text.prototype, "textColor", void 0); + __decorate$3([ + Property, + __metadata$3("design:type", Number) + ], Text.prototype, "textSize", void 0); + __decorate$3([ + Property, + __metadata$3("design:type", Number) + ], Text.prototype, "maxLines", void 0); + __decorate$3([ + Property, + __metadata$3("design:type", Gravity) + ], Text.prototype, "textAlignment", void 0); + __decorate$3([ + Property, + __metadata$3("design:type", String) + ], Text.prototype, "fontStyle", void 0); + return Text; +}(View)); +function text(config) { + var ret = new Text; + ret.layoutConfig = layoutConfig().fit(); + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} + +var __extends$4 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$4 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +(function (ScaleType) { + ScaleType[ScaleType["ScaleToFill"] = 0] = "ScaleToFill"; + ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit"; + ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill"; +})(exports.ScaleType || (exports.ScaleType = {})); +var Image = /** @class */ (function (_super) { + __extends$4(Image, _super); + function Image() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$4([ + Property, + __metadata$4("design:type", String) + ], Image.prototype, "imageUrl", void 0); + __decorate$4([ + Property, + __metadata$4("design:type", String) + ], Image.prototype, "imageBase64", void 0); + __decorate$4([ + Property, + __metadata$4("design:type", Number) + ], Image.prototype, "scaleType", void 0); + __decorate$4([ + Property, + __metadata$4("design:type", Boolean) + ], Image.prototype, "isBlur", void 0); + __decorate$4([ + Property, + __metadata$4("design:type", Function) + ], Image.prototype, "loadCallback", void 0); + return Image; +}(View)); +function image(config) { + var ret = new Image; + ret.layoutConfig = layoutConfig().fit(); + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} + +/* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var __extends$5 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$5 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var __read = (undefined && undefined.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) { return o; } + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) { m.call(i); } + } + finally { if (e) { throw e.error; } } + } + return ar; +}; +var __spread = (undefined && undefined.__spread) || function () { + var arguments$1 = arguments; + + for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments$1[i])); } + return ar; +}; +var ListItem = /** @class */ (function (_super) { + __extends$5(ListItem, _super); + function ListItem() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$5([ + Property, + __metadata$5("design:type", String) + ], ListItem.prototype, "identifier", void 0); + return ListItem; +}(Stack)); +var List = /** @class */ (function (_super) { + __extends$5(List, _super); + function List() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.cachedViews = new Map; + _this.ignoreDirtyCallOnce = false; + _this.itemCount = 0; + _this.batchCount = 15; + return _this; + } + List.prototype.allSubviews = function () { + if (this.loadMoreView) { + return __spread(this.cachedViews.values(), [this.loadMoreView]); + } + else { + return this.cachedViews.values(); + } + }; + List.prototype.reset = function () { + this.cachedViews.clear(); + this.itemCount = 0; + }; + List.prototype.getItem = function (itemIdx) { + var view = this.cachedViews.get("" + itemIdx); + if (view === undefined) { + view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set("" + itemIdx, view); + } + return view; + }; + List.prototype.isDirty = function () { + if (this.ignoreDirtyCallOnce) { + this.ignoreDirtyCallOnce = false; + //Ignore the dirty call once. + return false; + } + return _super.prototype.isDirty.call(this); + }; + List.prototype.renderBunchedItems = function (start, length) { + var _this = this; + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map(function (_, idx) { + var listItem = _this.getItem(start + idx); + return listItem.toModel(); + }); + }; + List.prototype.toModel = function () { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return _super.prototype.toModel.call(this); + }; + __decorate$5([ + Property, + __metadata$5("design:type", Object) + ], List.prototype, "itemCount", void 0); + __decorate$5([ + Property, + __metadata$5("design:type", Function) + ], List.prototype, "renderItem", void 0); + __decorate$5([ + Property, + __metadata$5("design:type", Object) + ], List.prototype, "batchCount", void 0); + __decorate$5([ + Property, + __metadata$5("design:type", Function) + ], List.prototype, "onLoadMore", void 0); + __decorate$5([ + Property, + __metadata$5("design:type", Boolean) + ], List.prototype, "loadMore", void 0); + __decorate$5([ + Property, + __metadata$5("design:type", ListItem) + ], List.prototype, "loadMoreView", void 0); + return List; +}(Superview)); +function list(config) { + var ret = new List; + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} +function listItem(item, config) { + return (new ListItem).also(function (it) { + it.layoutConfig = layoutConfig().fit(); + if (item instanceof View) { + it.addChild(item); + } + else { + item.forEach(function (e) { + it.addChild(e); + }); + } + if (config) { + for (var key in config) { + Reflect.set(it, key, Reflect.get(config, key, config), it); + } + } + }); +} + +var __extends$6 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$6 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var SlideItem = /** @class */ (function (_super) { + __extends$6(SlideItem, _super); + function SlideItem() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$6([ + Property, + __metadata$6("design:type", String) + ], SlideItem.prototype, "identifier", void 0); + return SlideItem; +}(Stack)); +var Slider = /** @class */ (function (_super) { + __extends$6(Slider, _super); + function Slider() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.cachedViews = new Map; + _this.ignoreDirtyCallOnce = false; + _this.itemCount = 0; + _this.batchCount = 3; + return _this; + } + Slider.prototype.allSubviews = function () { + return this.cachedViews.values(); + }; + Slider.prototype.getItem = function (itemIdx) { + var view = this.cachedViews.get("" + itemIdx); + if (view === undefined) { + view = this.renderPage(itemIdx); + view.superview = this; + this.cachedViews.set("" + itemIdx, view); + } + return view; + }; + Slider.prototype.isDirty = function () { + if (this.ignoreDirtyCallOnce) { + this.ignoreDirtyCallOnce = false; + //Ignore the dirty call once. + return false; + } + return _super.prototype.isDirty.call(this); + }; + Slider.prototype.renderBunchedItems = function (start, length) { + var _this = this; + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map(function (_, idx) { + var slideItem = _this.getItem(start + idx); + return slideItem.toModel(); + }); + }; + Slider.prototype.slidePage = function (context, page, smooth) { + if (smooth === void 0) { smooth = false; } + return this.nativeChannel(context, "slidePage")({ page: page, smooth: smooth }); + }; + Slider.prototype.getSlidedPage = function (context) { + return this.nativeChannel(context, "getSlidedPage")(); + }; + __decorate$6([ + Property, + __metadata$6("design:type", Object) + ], Slider.prototype, "itemCount", void 0); + __decorate$6([ + Property, + __metadata$6("design:type", Function) + ], Slider.prototype, "renderPage", void 0); + __decorate$6([ + Property, + __metadata$6("design:type", Object) + ], Slider.prototype, "batchCount", void 0); + __decorate$6([ + Property, + __metadata$6("design:type", Function) + ], Slider.prototype, "onPageSlided", void 0); + return Slider; +}(Superview)); +function slider(config) { + var ret = new Slider; + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} +function slideItem(item, config) { + return (new SlideItem).also(function (it) { + it.layoutConfig = layoutConfig().fit(); + if (item instanceof View) { + it.addChild(item); + } + else { + item.forEach(function (e) { + it.addChild(e); + }); + } + if (config) { + for (var key in config) { + Reflect.set(it, key, Reflect.get(config, key, config), it); + } + } + }); +} + +var __extends$7 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +function scroller(content, config) { + return (new Scroller).also(function (v) { + v.layoutConfig = layoutConfig().fit(); + if (config) { + for (var key in config) { + Reflect.set(v, key, Reflect.get(config, key, config), v); + } + } + v.content = content; + }); +} +var Scroller = /** @class */ (function (_super) { + __extends$7(Scroller, _super); + function Scroller() { + return _super !== null && _super.apply(this, arguments) || this; + } + Scroller.prototype.allSubviews = function () { + return [this.content]; + }; + Scroller.prototype.toModel = function () { + this.dirtyProps.content = this.content.viewId; + return _super.prototype.toModel.call(this); + }; + return Scroller; +}(Superview)); + +var __extends$8 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$7 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var Refreshable = /** @class */ (function (_super) { + __extends$8(Refreshable, _super); + function Refreshable() { + return _super !== null && _super.apply(this, arguments) || this; + } + Refreshable.prototype.allSubviews = function () { + var ret = [this.content]; + if (this.header) { + ret.push(this.header); + } + return ret; + }; + Refreshable.prototype.setRefreshable = function (context, refreshable) { + return this.nativeChannel(context, 'setRefreshable')(refreshable); + }; + Refreshable.prototype.setRefreshing = function (context, refreshing) { + return this.nativeChannel(context, 'setRefreshing')(refreshing); + }; + Refreshable.prototype.isRefreshable = function (context) { + return this.nativeChannel(context, 'isRefreshable')(); + }; + Refreshable.prototype.isRefreshing = function (context) { + return this.nativeChannel(context, 'isRefreshing')(); + }; + Refreshable.prototype.toModel = function () { + this.dirtyProps.content = this.content.viewId; + this.dirtyProps.header = (this.header || {}).viewId; + return _super.prototype.toModel.call(this); + }; + __decorate$7([ + Property, + __metadata$7("design:type", Function) + ], Refreshable.prototype, "onRefresh", void 0); + return Refreshable; +}(Superview)); +function refreshable(config) { + var ret = new Refreshable; + ret.layoutConfig = layoutConfig().fit(); + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} +function pullable(v, config) { + Reflect.set(v, 'startAnimation', config.startAnimation); + Reflect.set(v, 'stopAnimation', config.stopAnimation); + Reflect.set(v, 'setPullingDistance', config.setPullingDistance); + return v; +} + +var __extends$9 = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$8 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var __read$1 = (undefined && undefined.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) { return o; } + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) { m.call(i); } + } + finally { if (e) { throw e.error; } } + } + return ar; +}; +var __spread$1 = (undefined && undefined.__spread) || function () { + var arguments$1 = arguments; + + for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read$1(arguments$1[i])); } + return ar; +}; +var FlowLayoutItem = /** @class */ (function (_super) { + __extends$9(FlowLayoutItem, _super); + function FlowLayoutItem() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$8([ + Property, + __metadata$8("design:type", String) + ], FlowLayoutItem.prototype, "identifier", void 0); + return FlowLayoutItem; +}(Stack)); +var FlowLayout = /** @class */ (function (_super) { + __extends$9(FlowLayout, _super); + function FlowLayout() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.cachedViews = new Map; + _this.ignoreDirtyCallOnce = false; + _this.columnCount = 2; + _this.itemCount = 0; + _this.batchCount = 15; + return _this; + } + FlowLayout.prototype.allSubviews = function () { + if (this.loadMoreView) { + return __spread$1(this.cachedViews.values(), [this.loadMoreView]); + } + else { + return this.cachedViews.values(); + } + }; + FlowLayout.prototype.reset = function () { + this.cachedViews.clear(); + this.itemCount = 0; + }; + FlowLayout.prototype.getItem = function (itemIdx) { + var view = this.renderItem(itemIdx); + view.superview = this; + this.cachedViews.set("" + itemIdx, view); + return view; + }; + FlowLayout.prototype.isDirty = function () { + if (this.ignoreDirtyCallOnce) { + this.ignoreDirtyCallOnce = false; + //Ignore the dirty call once. + return false; + } + return _super.prototype.isDirty.call(this); + }; + FlowLayout.prototype.renderBunchedItems = function (start, length) { + var _this = this; + this.ignoreDirtyCallOnce = true; + return new Array(Math.min(length, this.itemCount - start)).fill(0).map(function (_, idx) { + var listItem = _this.getItem(start + idx); + return listItem.toModel(); + }); + }; + FlowLayout.prototype.toModel = function () { + if (this.loadMoreView) { + this.dirtyProps['loadMoreView'] = this.loadMoreView.viewId; + } + return _super.prototype.toModel.call(this); + }; + __decorate$8([ + Property, + __metadata$8("design:type", Object) + ], FlowLayout.prototype, "columnCount", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Number) + ], FlowLayout.prototype, "columnSpace", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Number) + ], FlowLayout.prototype, "rowSpace", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Object) + ], FlowLayout.prototype, "itemCount", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Function) + ], FlowLayout.prototype, "renderItem", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Object) + ], FlowLayout.prototype, "batchCount", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Function) + ], FlowLayout.prototype, "onLoadMore", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", Boolean) + ], FlowLayout.prototype, "loadMore", void 0); + __decorate$8([ + Property, + __metadata$8("design:type", FlowLayoutItem) + ], FlowLayout.prototype, "loadMoreView", void 0); + return FlowLayout; +}(Superview)); +function flowlayout(config) { + var ret = new FlowLayout; + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} +function flowItem(item, config) { + return (new FlowLayoutItem).also(function (it) { + it.layoutConfig = layoutConfig().fit(); + if (item instanceof View) { + it.addChild(item); + } + else { + item.forEach(function (e) { + it.addChild(e); + }); + } + if (config) { + for (var key in config) { + Reflect.set(it, key, Reflect.get(config, key, config), it); + } + } + }); +} + +var __extends$a = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$9 = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var Input = /** @class */ (function (_super) { + __extends$a(Input, _super); + function Input() { + return _super !== null && _super.apply(this, arguments) || this; + } + Input.prototype.getText = function (context) { + return this.nativeChannel(context, 'getText')(); + }; + Input.prototype.setSelection = function (context, start, end) { + if (end === void 0) { end = start; } + return this.nativeChannel(context, 'setSelection')({ + start: start, + end: end, + }); + }; + Input.prototype.requestFocus = function (context) { + return this.nativeChannel(context, 'requestFocus')(); + }; + Input.prototype.releaseFocus = function (context) { + return this.nativeChannel(context, 'releaseFocus')(); + }; + __decorate$9([ + Property, + __metadata$9("design:type", String) + ], Input.prototype, "text", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Color) + ], Input.prototype, "textColor", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Number) + ], Input.prototype, "textSize", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", String) + ], Input.prototype, "hintText", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Color) + ], Input.prototype, "hintTextColor", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Boolean) + ], Input.prototype, "multiline", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Gravity) + ], Input.prototype, "textAlignment", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Function) + ], Input.prototype, "onTextChange", void 0); + __decorate$9([ + Property, + __metadata$9("design:type", Function) + ], Input.prototype, "onFocusChange", void 0); + return Input; +}(View)); +function input(config) { + var ret = new Input; + ret.layoutConfig = layoutConfig().just(); + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + return ret; +} + +var __extends$b = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$a = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var NestedSlider = /** @class */ (function (_super) { + __extends$b(NestedSlider, _super); + function NestedSlider() { + return _super !== null && _super.apply(this, arguments) || this; + } + NestedSlider.prototype.addSlideItem = function (view) { + this.addChild(view); + }; + NestedSlider.prototype.slidePage = function (context, page, smooth) { + if (smooth === void 0) { smooth = false; } + return this.nativeChannel(context, "slidePage")({ page: page, smooth: smooth }); + }; + NestedSlider.prototype.getSlidedPage = function (context) { + return this.nativeChannel(context, "getSlidedPage")(); + }; + __decorate$a([ + Property, + __metadata$a("design:type", Function) + ], NestedSlider.prototype, "onPageSlided", void 0); + return NestedSlider; +}(Group)); + +var __extends$c = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } + else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata$b = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(k, v); } +}; +var Draggable = /** @class */ (function (_super) { + __extends$c(Draggable, _super); + function Draggable() { + return _super !== null && _super.apply(this, arguments) || this; + } + __decorate$b([ + Property, + __metadata$b("design:type", Function) + ], Draggable.prototype, "onDrag", void 0); + return Draggable; +}(Stack)); +function draggable(views, config) { + var ret = new Draggable; + ret.layoutConfig = layoutConfig().fit(); + if (views instanceof View) { + ret.addChild(views); + } + else { + views.forEach(function (e) { + ret.addChild(e); + }); + } + if (config) { + for (var key in config) { + Reflect.set(ret, key, Reflect.get(config, key, config), ret); + } + } + return ret; +} + +function modal(context) { + return { + toast: function (msg, gravity) { + if (gravity === void 0) { gravity = Gravity.Bottom; } + context.modal.toast({ + msg: msg, + gravity: gravity.toModel(), + }); + }, + alert: function (arg) { + if (typeof arg === 'string') { + return context.modal.alert({ msg: arg }); + } + else { + return context.modal.alert(arg); + } + }, + confirm: function (arg) { + if (typeof arg === 'string') { + return context.modal.confirm({ msg: arg }); + } + else { + return context.modal.confirm(arg); + } + }, + prompt: function (arg) { + return context.modal.prompt(arg); + }, + }; +} + +function navbar(context) { + var entity = context.entity; + var panel = undefined; + if (entity instanceof Panel) { + panel = entity; + } + return { + isHidden: function () { + return context.navbar.isHidden(); + }, + setHidden: function (hidden) { + return context.navbar.setHidden({ + hidden: hidden, + }); + }, + setTitle: function (title) { + return context.navbar.setTitle({ + title: title, + }); + }, + setBgColor: function (color) { + return context.navbar.setBgColor({ + color: color.toModel(), + }); + }, + setLeft: function (view) { + if (panel) { + panel.clearHeadViews("navbar_left"); + panel.addHeadView("navbar_left", view); + } + return context.navbar.setLeft(view.toModel()); + }, + setRight: function (view) { + if (panel) { + panel.clearHeadViews("navbar_right"); + panel.addHeadView("navbar_right", view); + } + return context.navbar.setRight(view.toModel()); + } + }; +} + +function navigator(context) { + return { + push: function (scheme, config) { + if (config && config.extra) { + config.extra = JSON.stringify(config.extra); + } + return context.navigator.push({ + scheme: scheme, config: config + }); + }, + pop: function (animated) { + if (animated === void 0) { animated = true; } + return context.navigator.pop({ animated: animated }); + }, + }; +} + +function transformRequest(request) { + var url = request.url || ""; + if (request.params !== undefined) { + var queryStrings = []; + for (var key in request.params) { + queryStrings.push(key + "=" + encodeURIComponent(request.params[key])); + } + request.url = "" + request.url + (url.indexOf('?') >= 0 ? '&' : '?') + queryStrings.join('&'); + } + if (typeof request.data === 'object') { + request.data = JSON.stringify(request.data); + } + return request; +} +function network(context) { + return { + request: function (config) { + return context.network.request(transformRequest(config)); + }, + get: function (url, config) { + var finalConfig = config; + if (finalConfig === undefined) { + finalConfig = {}; + } + finalConfig.url = url; + finalConfig.method = "get"; + return context.network.request(transformRequest(finalConfig)); + }, + post: function (url, data, config) { + var finalConfig = config; + if (finalConfig === undefined) { + finalConfig = {}; + } + finalConfig.url = url; + finalConfig.method = "post"; + if (data !== undefined) { + finalConfig.data = data; + } + return context.network.request(transformRequest(finalConfig)); + }, + put: function (url, data, config) { + var finalConfig = config; + if (finalConfig === undefined) { + finalConfig = {}; + } + finalConfig.url = url; + finalConfig.method = "put"; + if (data !== undefined) { + finalConfig.data = data; + } + return context.network.request(transformRequest(finalConfig)); + }, + delete: function (url, data, config) { + var finalConfig = config; + if (finalConfig === undefined) { + finalConfig = {}; + } + finalConfig.url = url; + finalConfig.method = "delete"; + return context.network.request(transformRequest(finalConfig)); + }, + }; +} + +function storage(context) { + return { + setItem: function (key, value, zone) { + return context.storage.setItem({ key: key, value: value, zone: zone }); + }, + getItem: function (key, zone) { + return context.storage.getItem({ key: key, zone: zone }); + }, + remove: function (key, zone) { + return context.storage.remove({ key: key, zone: zone }); + }, + clear: function (zone) { + return context.storage.clear({ zone: zone }); + }, + }; +} + +function popover(context) { + var entity = context.entity; + var panel = undefined; + if (entity instanceof Panel) { + panel = entity; + } + return { + show: function (view) { + if (panel) { + panel.addHeadView("popover", view); + } + return context.popover.show(view.toModel()); + }, + dismiss: function (view) { + if (view === void 0) { view = undefined; } + if (panel) { + if (view) { + panel.removeHeadView("popover", view); + } + else { + panel.clearHeadViews("popover"); + } + } + return context.popover.dismiss(view ? { id: view.viewId } : undefined); + }, + }; +} + +/* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function take(target) { + return function (block) { + block(target); + }; +} +function takeNonNull(target) { + return function (block) { + if (target !== undefined) { + return block(target); + } + }; +} +function takeNull(target) { + return function (block) { + if (target === undefined) { + return block(); + } + }; +} +function takeLet(target) { + return function (block) { + return block(target); + }; +} +function takeAlso(target) { + return function (block) { + block(target); + return target; + }; +} +function takeIf(target) { + return function (predicate) { + return predicate(target) ? target : undefined; + }; +} +function takeUnless(target) { + return function (predicate) { + return predicate(target) ? undefined : target; + }; +} +function repeat(action) { + return function (times) { + for (var i = 0; i < times; i++) { + action(i); + } + }; +} + +var __values$4 = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +/** + * Only supports x,y,width,height,corner(just for four corners),rotation,bgColor, + * @param panel @see Panel + */ +function animate(context) { + var entity = context.entity; + if (entity instanceof Panel) { + var panel_1 = entity; + return function (args) { + return takeLet(panel_1.context.animate)(function (it) { + return it.submit().then(function () { + args.animations(); + return takeLet(panel_1.getRootView())(function (root) { + var e_1, _a, e_2, _b; + if (root.isDirty()) { + var model = root.toModel(); + model.duration = args.duration; + var ret = it.animateRender(model); + root.clean(); + return ret; + } + try { + for (var _c = __values$4(panel_1.allHeadViews()), _d = _c.next(); !_d.done; _d = _c.next()) { + var map = _d.value; + try { + for (var _e = (e_2 = void 0, __values$4(map.values())), _f = _e.next(); !_f.done; _f = _e.next()) { + var v = _f.value; + if (v.isDirty()) { + var model = v.toModel(); + var ret = it.animateRender(model); + it.clean(); + return ret; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) { _b.call(_e); } + } + finally { if (e_2) { throw e_2.error; } } + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) { _a.call(_c); } + } + finally { if (e_1) { throw e_1.error; } } + } + throw new Error('Cannot find any animated elements'); + }); + }); + }); + }; + } + else { + return function (args) { + return Promise.reject("Cannot find panel in Context:" + context.id); + }; + } +} + +function notification(context) { + return { + publish: function (args) { + if (args.data !== undefined) { + args.data = JSON.stringify(args.data); + } + return context.notification.publish(args); + }, + subscribe: function (args) { + args.callback = context.function2Id(args.callback); + return context.notification.subscribe(args); + }, + unsubscribe: function (subscribeId) { + context.removeFuncById(subscribeId); + return context.notification.unsubscribe(subscribeId); + } + }; +} + +(function (StatusBarMode) { + StatusBarMode[StatusBarMode["LIGHT"] = 0] = "LIGHT"; + StatusBarMode[StatusBarMode["DARK"] = 1] = "DARK"; +})(exports.StatusBarMode || (exports.StatusBarMode = {})); +function statusbar(context) { + return { + setHidden: function (hidden) { + return context.statusbar.setHidden({ hidden: hidden }); + }, + setMode: function (mode) { + return context.statusbar.setMode({ mode: mode }); + }, + setColor: function (color) { + return context.statusbar.setColor({ color: color.toModel() }); + }, + }; +} + +var __values$5 = (undefined && undefined.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) { return m.call(o); } + if (o && typeof o.length === "number") { return { + next: function () { + if (o && i >= o.length) { o = void 0; } + return { value: o && o[i++], done: !o }; + } + }; } + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var Observable = /** @class */ (function () { + function Observable(provider, clz) { + this.observers = new Set; + this.provider = provider; + this.clz = clz; + } + Observable.prototype.addObserver = function (observer) { + this.observers.add(observer); + }; + Observable.prototype.removeObserver = function (observer) { + this.observers.delete(observer); + }; + Observable.prototype.update = function (updater) { + var e_1, _a; + var oldV = this.provider.acquire(this.clz); + var newV = updater(oldV); + if (newV !== undefined) { + this.provider.provide(newV); + } + try { + for (var _b = __values$5(this.observers), _c = _b.next(); !_c.done; _c = _b.next()) { + var observer = _c.value; + observer(newV); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) { _a.call(_b); } + } + finally { if (e_1) { throw e_1.error; } } + } + }; + return Observable; +}()); +var Provider = /** @class */ (function () { + function Provider() { + this.provision = new Map; + this.observableMap = new Map; + } + Provider.prototype.provide = function (obj) { + this.provision.set(obj.constructor, obj); + }; + Provider.prototype.acquire = function (clz) { + var ret = this.provision.get(clz); + return ret; + }; + Provider.prototype.remove = function (clz) { + this.provision.delete(clz); + }; + Provider.prototype.clear = function () { + this.provision.clear(); + }; + Provider.prototype.observe = function (clz) { + var observable = this.observableMap.get(clz); + if (observable === undefined) { + observable = new Observable(this, clz); + this.observableMap.set(clz, observable); + } + return observable; + }; + return Provider; +}()); + +var __extends$d = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var ViewHolder = /** @class */ (function () { + function ViewHolder() { + } + return ViewHolder; +}()); +var ViewModel = /** @class */ (function () { + function ViewModel(obj, v) { + this.state = obj; + this.viewHolder = v; + } + ViewModel.prototype.getState = function () { + return this.state; + }; + ViewModel.prototype.updateState = function (setter) { + setter(this.state); + this.onBind(this.state, this.viewHolder); + }; + ViewModel.prototype.attach = function (view) { + this.viewHolder.build(view); + this.onAttached(this.state, this.viewHolder); + this.onBind(this.state, this.viewHolder); + }; + return ViewModel; +}()); +var VMPanel = /** @class */ (function (_super) { + __extends$d(VMPanel, _super); + function VMPanel() { + return _super !== null && _super.apply(this, arguments) || this; + } + VMPanel.prototype.getViewModel = function () { + return this.vm; + }; + VMPanel.prototype.build = function (root) { + this.vh = new (this.getViewHolderClass()); + this.vm = new (this.getViewModelClass())(this.getState(), this.vh); + this.vm.attach(root); + }; + return VMPanel; +}(Panel)); + +exports.AnimationSet = AnimationSet; +exports.BOTTOM = BOTTOM; +exports.CENTER = CENTER; +exports.CENTER_X = CENTER_X; +exports.CENTER_Y = CENTER_Y; +exports.Color = Color; +exports.Draggable = Draggable; +exports.FlowLayout = FlowLayout; +exports.FlowLayoutItem = FlowLayoutItem; +exports.Gravity = Gravity; +exports.Group = Group; +exports.HLayout = HLayout; +exports.Image = Image; +exports.Input = Input; +exports.LEFT = LEFT; +exports.LayoutConfigImpl = LayoutConfigImpl; +exports.List = List; +exports.ListItem = ListItem; +exports.Mutable = Mutable; +exports.NativeCall = NativeCall; +exports.NestedSlider = NestedSlider; +exports.Observable = Observable; +exports.Panel = Panel; +exports.Property = Property; +exports.Provider = Provider; +exports.RIGHT = RIGHT; +exports.Refreshable = Refreshable; +exports.Root = Root; +exports.RotationAnimation = RotationAnimation; +exports.ScaleAnimation = ScaleAnimation; +exports.Scroller = Scroller; +exports.SlideItem = SlideItem; +exports.Slider = Slider; +exports.Stack = Stack; +exports.Superview = Superview; +exports.TOP = TOP; +exports.Text = Text; +exports.TranslationAnimation = TranslationAnimation; +exports.VLayout = VLayout; +exports.VMPanel = VMPanel; +exports.View = View; +exports.ViewHolder = ViewHolder; +exports.ViewModel = ViewModel; +exports.animate = animate; +exports.draggable = draggable; +exports.flowItem = flowItem; +exports.flowlayout = flowlayout; +exports.gravity = gravity; +exports.hlayout = hlayout; +exports.image = image; +exports.input = input; +exports.layoutConfig = layoutConfig; +exports.list = list; +exports.listItem = listItem; +exports.log = log; +exports.loge = loge; +exports.logw = logw; +exports.modal = modal; +exports.navbar = navbar; +exports.navigator = navigator; +exports.network = network; +exports.notification = notification; +exports.obj2Model = obj2Model; +exports.popover = popover; +exports.pullable = pullable; +exports.refreshable = refreshable; +exports.repeat = repeat; +exports.scroller = scroller; +exports.slideItem = slideItem; +exports.slider = slider; +exports.stack = stack; +exports.statusbar = statusbar; +exports.storage = storage; +exports.take = take; +exports.takeAlso = takeAlso; +exports.takeIf = takeIf; +exports.takeLet = takeLet; +exports.takeNonNull = takeNonNull; +exports.takeNull = takeNull; +exports.takeUnless = takeUnless; +exports.text = text; +exports.uniqueId = uniqueId; +exports.vlayout = vlayout; diff --git a/doric-js/bundle/doric-lib.js b/doric-js/bundle/doric-lib.js index 0e1fec33..eeabf356 100644 --- a/doric-js/bundle/doric-lib.js +++ b/doric-js/bundle/doric-lib.js @@ -770,7 +770,7 @@ class Panel { }, undefined); } nativeRender(model) { - this.context.shader.render(model); + this.context.callNative("shader", "render", model); } hookBeforeNativeCall() { if (Environment.platform !== 'web') { diff --git a/doric-js/bundle/doric-sandbox.es5.js b/doric-js/bundle/doric-sandbox.es5.js new file mode 100644 index 00000000..7dbc0c03 --- /dev/null +++ b/doric-js/bundle/doric-sandbox.es5.js @@ -0,0 +1,13306 @@ +var doric = (function (exports) { + 'use strict'; + + /* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var __uniqueId__ = 0; + function uniqueId(prefix) { + return "__" + prefix + "_" + __uniqueId__++ + "__"; + } + + function toString(message) { + if (message instanceof Function) { + return message.toString(); + } + else if (message instanceof Object) { + try { + return JSON.stringify(message); + } + catch (e) { + return message.toString(); + } + } + else if (message === undefined) { + return "undefined"; + } + else { + return message.toString(); + } + } + function loge() { + var arguments$1 = arguments; + + var message = []; + for (var _i = 0; _i < arguments.length; _i++) { + message[_i] = arguments$1[_i]; + } + var out = ""; + for (var i = 0; i < arguments.length; i++) { + if (i > 0) { + out += ','; + } + out += toString(arguments$1[i]); + } + nativeLog('e', out); + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + /*! ***************************************************************************** + Copyright (C) Microsoft. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + var Reflect$1; + (function (Reflect) { + // Metadata Proposal + // https://rbuckton.github.io/reflect-metadata/ + (function (factory) { + var root = typeof commonjsGlobal === "object" ? commonjsGlobal : + typeof self === "object" ? self : + typeof this === "object" ? this : + Function("return this;")(); + var exporter = makeExporter(Reflect); + if (typeof root.Reflect === "undefined") { + root.Reflect = Reflect; + } + else { + exporter = makeExporter(root.Reflect, exporter); + } + factory(exporter); + function makeExporter(target, previous) { + return function (key, value) { + if (typeof target[key] !== "function") { + Object.defineProperty(target, key, { configurable: true, writable: true, value: value }); + } + if (previous) + { previous(key, value); } + }; + } + })(function (exporter) { + var hasOwn = Object.prototype.hasOwnProperty; + // feature test for Symbol support + var supportsSymbol = typeof Symbol === "function"; + var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== "undefined" ? Symbol.toPrimitive : "@@toPrimitive"; + var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== "undefined" ? Symbol.iterator : "@@iterator"; + var supportsCreate = typeof Object.create === "function"; // feature test for Object.create support + var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support + var downLevel = !supportsCreate && !supportsProto; + var HashMap = { + // create an object in dictionary mode (a.k.a. "slow" mode in v8) + create: supportsCreate + ? function () { return MakeDictionary(Object.create(null)); } + : supportsProto + ? function () { return MakeDictionary({ __proto__: null }); } + : function () { return MakeDictionary({}); }, + has: downLevel + ? function (map, key) { return hasOwn.call(map, key); } + : function (map, key) { return key in map; }, + get: downLevel + ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; } + : function (map, key) { return map[key]; }, + }; + // Load global or shim versions of Map, Set, and WeakMap + var functionPrototype = Object.getPrototypeOf(Function); + var usePolyfill = typeof process === "object" && process.env && process.env["REFLECT_METADATA_USE_MAP_POLYFILL"] === "true"; + var _Map = !usePolyfill && typeof Map === "function" && typeof Map.prototype.entries === "function" ? Map : CreateMapPolyfill(); + var _Set = !usePolyfill && typeof Set === "function" && typeof Set.prototype.entries === "function" ? Set : CreateSetPolyfill(); + var _WeakMap = !usePolyfill && typeof WeakMap === "function" ? WeakMap : CreateWeakMapPolyfill(); + // [[Metadata]] internal slot + // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots + var Metadata = new _WeakMap(); + /** + * Applies a set of decorators to a property of a target object. + * @param decorators An array of decorators. + * @param target The target object. + * @param propertyKey (Optional) The property key to decorate. + * @param attributes (Optional) The property descriptor for the target key. + * @remarks Decorators are applied in reverse order. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Example = Reflect.decorate(decoratorsArray, Example); + * + * // property (on constructor) + * Reflect.decorate(decoratorsArray, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.decorate(decoratorsArray, Example.prototype, "property"); + * + * // method (on constructor) + * Object.defineProperty(Example, "staticMethod", + * Reflect.decorate(decoratorsArray, Example, "staticMethod", + * Object.getOwnPropertyDescriptor(Example, "staticMethod"))); + * + * // method (on prototype) + * Object.defineProperty(Example.prototype, "method", + * Reflect.decorate(decoratorsArray, Example.prototype, "method", + * Object.getOwnPropertyDescriptor(Example.prototype, "method"))); + * + */ + function decorate(decorators, target, propertyKey, attributes) { + if (!IsUndefined(propertyKey)) { + if (!IsArray(decorators)) + { throw new TypeError(); } + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes)) + { throw new TypeError(); } + if (IsNull(attributes)) + { attributes = undefined; } + propertyKey = ToPropertyKey(propertyKey); + return DecorateProperty(decorators, target, propertyKey, attributes); + } + else { + if (!IsArray(decorators)) + { throw new TypeError(); } + if (!IsConstructor(target)) + { throw new TypeError(); } + return DecorateConstructor(decorators, target); + } + } + exporter("decorate", decorate); + // 4.1.2 Reflect.metadata(metadataKey, metadataValue) + // https://rbuckton.github.io/reflect-metadata/#reflect.metadata + /** + * A default metadata decorator factory that can be used on a class, class member, or parameter. + * @param metadataKey The key for the metadata entry. + * @param metadataValue The value for the metadata entry. + * @returns A decorator function. + * @remarks + * If `metadataKey` is already defined for the target and target key, the + * metadataValue for that key will be overwritten. + * @example + * + * // constructor + * @Reflect.metadata(key, value) + * class Example { + * } + * + * // property (on constructor, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * static staticProperty; + * } + * + * // property (on prototype, TypeScript only) + * class Example { + * @Reflect.metadata(key, value) + * property; + * } + * + * // method (on constructor) + * class Example { + * @Reflect.metadata(key, value) + * static staticMethod() { } + * } + * + * // method (on prototype) + * class Example { + * @Reflect.metadata(key, value) + * method() { } + * } + * + */ + function metadata(metadataKey, metadataValue) { + function decorator(target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey)) + { throw new TypeError(); } + OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + return decorator; + } + exporter("metadata", metadata); + /** + * Define a unique metadata entry on the target. + * @param metadataKey A key used to store and retrieve metadata. + * @param metadataValue A value that contains attached metadata. + * @param target The target object on which to define metadata. + * @param propertyKey (Optional) The property key for the target. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * Reflect.defineMetadata("custom:annotation", options, Example); + * + * // property (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticProperty"); + * + * // property (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "property"); + * + * // method (on constructor) + * Reflect.defineMetadata("custom:annotation", options, Example, "staticMethod"); + * + * // method (on prototype) + * Reflect.defineMetadata("custom:annotation", options, Example.prototype, "method"); + * + * // decorator factory as metadata-producing annotation. + * function MyAnnotation(options): Decorator { + * return (target, key?) => Reflect.defineMetadata("custom:annotation", options, target, key); + * } + * + */ + function defineMetadata(metadataKey, metadataValue, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey); + } + exporter("defineMetadata", defineMetadata); + /** + * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryHasMetadata(metadataKey, target, propertyKey); + } + exporter("hasMetadata", hasMetadata); + /** + * Gets a value indicating whether the target object has the provided metadata key defined. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata key was defined on the target object; otherwise, `false`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.hasOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.hasOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.hasOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function hasOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey); + } + exporter("hasOwnMetadata", hasOwnMetadata); + /** + * Gets the metadata value for the provided metadata key on the target object or its prototype chain. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryGetMetadata(metadataKey, target, propertyKey); + } + exporter("getMetadata", getMetadata); + /** + * Gets the metadata value for the provided metadata key on the target object. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns The metadata value for the metadata key if found; otherwise, `undefined`. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function getOwnMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey); + } + exporter("getOwnMetadata", getOwnMetadata); + /** + * Gets the metadata keys defined on the target object or its prototype chain. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getMetadataKeys(Example.prototype, "method"); + * + */ + function getMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryMetadataKeys(target, propertyKey); + } + exporter("getMetadataKeys", getMetadataKeys); + /** + * Gets the unique metadata keys defined on the target object. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns An array of unique metadata keys. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.getOwnMetadataKeys(Example); + * + * // property (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.getOwnMetadataKeys(Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.getOwnMetadataKeys(Example.prototype, "method"); + * + */ + function getOwnMetadataKeys(target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + return OrdinaryOwnMetadataKeys(target, propertyKey); + } + exporter("getOwnMetadataKeys", getOwnMetadataKeys); + /** + * Deletes the metadata entry from the target object with the provided key. + * @param metadataKey A key used to store and retrieve metadata. + * @param target The target object on which the metadata is defined. + * @param propertyKey (Optional) The property key for the target. + * @returns `true` if the metadata entry was found and deleted; otherwise, false. + * @example + * + * class Example { + * // property declarations are not part of ES6, though they are valid in TypeScript: + * // static staticProperty; + * // property; + * + * constructor(p) { } + * static staticMethod(p) { } + * method(p) { } + * } + * + * // constructor + * result = Reflect.deleteMetadata("custom:annotation", Example); + * + * // property (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty"); + * + * // property (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property"); + * + * // method (on constructor) + * result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod"); + * + * // method (on prototype) + * result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method"); + * + */ + function deleteMetadata(metadataKey, target, propertyKey) { + if (!IsObject(target)) + { throw new TypeError(); } + if (!IsUndefined(propertyKey)) + { propertyKey = ToPropertyKey(propertyKey); } + var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false); + if (IsUndefined(metadataMap)) + { return false; } + if (!metadataMap.delete(metadataKey)) + { return false; } + if (metadataMap.size > 0) + { return true; } + var targetMetadata = Metadata.get(target); + targetMetadata.delete(propertyKey); + if (targetMetadata.size > 0) + { return true; } + Metadata.delete(target); + return true; + } + exporter("deleteMetadata", deleteMetadata); + function DecorateConstructor(decorators, target) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsConstructor(decorated)) + { throw new TypeError(); } + target = decorated; + } + } + return target; + } + function DecorateProperty(decorators, target, propertyKey, descriptor) { + for (var i = decorators.length - 1; i >= 0; --i) { + var decorator = decorators[i]; + var decorated = decorator(target, propertyKey, descriptor); + if (!IsUndefined(decorated) && !IsNull(decorated)) { + if (!IsObject(decorated)) + { throw new TypeError(); } + descriptor = decorated; + } + } + return descriptor; + } + function GetOrCreateMetadataMap(O, P, Create) { + var targetMetadata = Metadata.get(O); + if (IsUndefined(targetMetadata)) { + if (!Create) + { return undefined; } + targetMetadata = new _Map(); + Metadata.set(O, targetMetadata); + } + var metadataMap = targetMetadata.get(P); + if (IsUndefined(metadataMap)) { + if (!Create) + { return undefined; } + metadataMap = new _Map(); + targetMetadata.set(P, metadataMap); + } + return metadataMap; + } + // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata + function OrdinaryHasMetadata(MetadataKey, O, P) { + var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) + { return true; } + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + { return OrdinaryHasMetadata(MetadataKey, parent, P); } + return false; + } + // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata + function OrdinaryHasOwnMetadata(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + { return false; } + return ToBoolean(metadataMap.has(MetadataKey)); + } + // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata + function OrdinaryGetMetadata(MetadataKey, O, P) { + var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) + { return OrdinaryGetOwnMetadata(MetadataKey, O, P); } + var parent = OrdinaryGetPrototypeOf(O); + if (!IsNull(parent)) + { return OrdinaryGetMetadata(MetadataKey, parent, P); } + return undefined; + } + // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata + function OrdinaryGetOwnMetadata(MetadataKey, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + { return undefined; } + return metadataMap.get(MetadataKey); + } + // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata + function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true); + metadataMap.set(MetadataKey, MetadataValue); + } + // 3.1.6.1 OrdinaryMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys + function OrdinaryMetadataKeys(O, P) { + var ownKeys = OrdinaryOwnMetadataKeys(O, P); + var parent = OrdinaryGetPrototypeOf(O); + if (parent === null) + { return ownKeys; } + var parentKeys = OrdinaryMetadataKeys(parent, P); + if (parentKeys.length <= 0) + { return ownKeys; } + if (ownKeys.length <= 0) + { return parentKeys; } + var set = new _Set(); + var keys = []; + for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) { + var key = ownKeys_1[_i]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) { + var key = parentKeys_1[_a]; + var hasKey = set.has(key); + if (!hasKey) { + set.add(key); + keys.push(key); + } + } + return keys; + } + // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P) + // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys + function OrdinaryOwnMetadataKeys(O, P) { + var keys = []; + var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false); + if (IsUndefined(metadataMap)) + { return keys; } + var keysObj = metadataMap.keys(); + var iterator = GetIterator(keysObj); + var k = 0; + while (true) { + var next = IteratorStep(iterator); + if (!next) { + keys.length = k; + return keys; + } + var nextValue = IteratorValue(next); + try { + keys[k] = nextValue; + } + catch (e) { + try { + IteratorClose(iterator); + } + finally { + throw e; + } + } + k++; + } + } + // 6 ECMAScript Data Typ0es and Values + // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values + function Type(x) { + if (x === null) + { return 1 /* Null */; } + switch (typeof x) { + case "undefined": return 0 /* Undefined */; + case "boolean": return 2 /* Boolean */; + case "string": return 3 /* String */; + case "symbol": return 4 /* Symbol */; + case "number": return 5 /* Number */; + case "object": return x === null ? 1 /* Null */ : 6 /* Object */; + default: return 6 /* Object */; + } + } + // 6.1.1 The Undefined Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type + function IsUndefined(x) { + return x === undefined; + } + // 6.1.2 The Null Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type + function IsNull(x) { + return x === null; + } + // 6.1.5 The Symbol Type + // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type + function IsSymbol(x) { + return typeof x === "symbol"; + } + // 6.1.7 The Object Type + // https://tc39.github.io/ecma262/#sec-object-type + function IsObject(x) { + return typeof x === "object" ? x !== null : typeof x === "function"; + } + // 7.1 Type Conversion + // https://tc39.github.io/ecma262/#sec-type-conversion + // 7.1.1 ToPrimitive(input [, PreferredType]) + // https://tc39.github.io/ecma262/#sec-toprimitive + function ToPrimitive(input, PreferredType) { + switch (Type(input)) { + case 0 /* Undefined */: return input; + case 1 /* Null */: return input; + case 2 /* Boolean */: return input; + case 3 /* String */: return input; + case 4 /* Symbol */: return input; + case 5 /* Number */: return input; + } + var hint = PreferredType === 3 /* String */ ? "string" : PreferredType === 5 /* Number */ ? "number" : "default"; + var exoticToPrim = GetMethod(input, toPrimitiveSymbol); + if (exoticToPrim !== undefined) { + var result = exoticToPrim.call(input, hint); + if (IsObject(result)) + { throw new TypeError(); } + return result; + } + return OrdinaryToPrimitive(input, hint === "default" ? "number" : hint); + } + // 7.1.1.1 OrdinaryToPrimitive(O, hint) + // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive + function OrdinaryToPrimitive(O, hint) { + if (hint === "string") { + var toString_1 = O.toString; + if (IsCallable(toString_1)) { + var result = toString_1.call(O); + if (!IsObject(result)) + { return result; } + } + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + { return result; } + } + } + else { + var valueOf = O.valueOf; + if (IsCallable(valueOf)) { + var result = valueOf.call(O); + if (!IsObject(result)) + { return result; } + } + var toString_2 = O.toString; + if (IsCallable(toString_2)) { + var result = toString_2.call(O); + if (!IsObject(result)) + { return result; } + } + } + throw new TypeError(); + } + // 7.1.2 ToBoolean(argument) + // https://tc39.github.io/ecma262/2016/#sec-toboolean + function ToBoolean(argument) { + return !!argument; + } + // 7.1.12 ToString(argument) + // https://tc39.github.io/ecma262/#sec-tostring + function ToString(argument) { + return "" + argument; + } + // 7.1.14 ToPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-topropertykey + function ToPropertyKey(argument) { + var key = ToPrimitive(argument, 3 /* String */); + if (IsSymbol(key)) + { return key; } + return ToString(key); + } + // 7.2 Testing and Comparison Operations + // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations + // 7.2.2 IsArray(argument) + // https://tc39.github.io/ecma262/#sec-isarray + function IsArray(argument) { + return Array.isArray + ? Array.isArray(argument) + : argument instanceof Object + ? argument instanceof Array + : Object.prototype.toString.call(argument) === "[object Array]"; + } + // 7.2.3 IsCallable(argument) + // https://tc39.github.io/ecma262/#sec-iscallable + function IsCallable(argument) { + // NOTE: This is an approximation as we cannot check for [[Call]] internal method. + return typeof argument === "function"; + } + // 7.2.4 IsConstructor(argument) + // https://tc39.github.io/ecma262/#sec-isconstructor + function IsConstructor(argument) { + // NOTE: This is an approximation as we cannot check for [[Construct]] internal method. + return typeof argument === "function"; + } + // 7.2.7 IsPropertyKey(argument) + // https://tc39.github.io/ecma262/#sec-ispropertykey + function IsPropertyKey(argument) { + switch (Type(argument)) { + case 3 /* String */: return true; + case 4 /* Symbol */: return true; + default: return false; + } + } + // 7.3 Operations on Objects + // https://tc39.github.io/ecma262/#sec-operations-on-objects + // 7.3.9 GetMethod(V, P) + // https://tc39.github.io/ecma262/#sec-getmethod + function GetMethod(V, P) { + var func = V[P]; + if (func === undefined || func === null) + { return undefined; } + if (!IsCallable(func)) + { throw new TypeError(); } + return func; + } + // 7.4 Operations on Iterator Objects + // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects + function GetIterator(obj) { + var method = GetMethod(obj, iteratorSymbol); + if (!IsCallable(method)) + { throw new TypeError(); } // from Call + var iterator = method.call(obj); + if (!IsObject(iterator)) + { throw new TypeError(); } + return iterator; + } + // 7.4.4 IteratorValue(iterResult) + // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue + function IteratorValue(iterResult) { + return iterResult.value; + } + // 7.4.5 IteratorStep(iterator) + // https://tc39.github.io/ecma262/#sec-iteratorstep + function IteratorStep(iterator) { + var result = iterator.next(); + return result.done ? false : result; + } + // 7.4.6 IteratorClose(iterator, completion) + // https://tc39.github.io/ecma262/#sec-iteratorclose + function IteratorClose(iterator) { + var f = iterator["return"]; + if (f) + { f.call(iterator); } + } + // 9.1 Ordinary Object Internal Methods and Internal Slots + // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots + // 9.1.1.1 OrdinaryGetPrototypeOf(O) + // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof + function OrdinaryGetPrototypeOf(O) { + var proto = Object.getPrototypeOf(O); + if (typeof O !== "function" || O === functionPrototype) + { return proto; } + // TypeScript doesn't set __proto__ in ES5, as it's non-standard. + // Try to determine the superclass constructor. Compatible implementations + // must either set __proto__ on a subclass constructor to the superclass constructor, + // or ensure each class has a valid `constructor` property on its prototype that + // points back to the constructor. + // If this is not the same as Function.[[Prototype]], then this is definately inherited. + // This is the case when in ES6 or when using __proto__ in a compatible browser. + if (proto !== functionPrototype) + { return proto; } + // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage. + var prototype = O.prototype; + var prototypeProto = prototype && Object.getPrototypeOf(prototype); + if (prototypeProto == null || prototypeProto === Object.prototype) + { return proto; } + // If the constructor was not a function, then we cannot determine the heritage. + var constructor = prototypeProto.constructor; + if (typeof constructor !== "function") + { return proto; } + // If we have some kind of self-reference, then we cannot determine the heritage. + if (constructor === O) + { return proto; } + // we have a pretty good guess at the heritage. + return constructor; + } + // naive Map shim + function CreateMapPolyfill() { + var cacheSentinel = {}; + var arraySentinel = []; + var MapIterator = /** @class */ (function () { + function MapIterator(keys, values, selector) { + this._index = 0; + this._keys = keys; + this._values = values; + this._selector = selector; + } + MapIterator.prototype["@@iterator"] = function () { return this; }; + MapIterator.prototype[iteratorSymbol] = function () { return this; }; + MapIterator.prototype.next = function () { + var index = this._index; + if (index >= 0 && index < this._keys.length) { + var result = this._selector(this._keys[index], this._values[index]); + if (index + 1 >= this._keys.length) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + else { + this._index++; + } + return { value: result, done: false }; + } + return { value: undefined, done: true }; + }; + MapIterator.prototype.throw = function (error) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + throw error; + }; + MapIterator.prototype.return = function (value) { + if (this._index >= 0) { + this._index = -1; + this._keys = arraySentinel; + this._values = arraySentinel; + } + return { value: value, done: true }; + }; + return MapIterator; + }()); + return /** @class */ (function () { + function Map() { + this._keys = []; + this._values = []; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + Object.defineProperty(Map.prototype, "size", { + get: function () { return this._keys.length; }, + enumerable: true, + configurable: true + }); + Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; }; + Map.prototype.get = function (key) { + var index = this._find(key, /*insert*/ false); + return index >= 0 ? this._values[index] : undefined; + }; + Map.prototype.set = function (key, value) { + var index = this._find(key, /*insert*/ true); + this._values[index] = value; + return this; + }; + Map.prototype.delete = function (key) { + var index = this._find(key, /*insert*/ false); + if (index >= 0) { + var size = this._keys.length; + for (var i = index + 1; i < size; i++) { + this._keys[i - 1] = this._keys[i]; + this._values[i - 1] = this._values[i]; + } + this._keys.length--; + this._values.length--; + if (key === this._cacheKey) { + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + } + return true; + } + return false; + }; + Map.prototype.clear = function () { + this._keys.length = 0; + this._values.length = 0; + this._cacheKey = cacheSentinel; + this._cacheIndex = -2; + }; + Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); }; + Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); }; + Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); }; + Map.prototype["@@iterator"] = function () { return this.entries(); }; + Map.prototype[iteratorSymbol] = function () { return this.entries(); }; + Map.prototype._find = function (key, insert) { + if (this._cacheKey !== key) { + this._cacheIndex = this._keys.indexOf(this._cacheKey = key); + } + if (this._cacheIndex < 0 && insert) { + this._cacheIndex = this._keys.length; + this._keys.push(key); + this._values.push(undefined); + } + return this._cacheIndex; + }; + return Map; + }()); + function getKey(key, _) { + return key; + } + function getValue(_, value) { + return value; + } + function getEntry(key, value) { + return [key, value]; + } + } + // naive Set shim + function CreateSetPolyfill() { + return /** @class */ (function () { + function Set() { + this._map = new _Map(); + } + Object.defineProperty(Set.prototype, "size", { + get: function () { return this._map.size; }, + enumerable: true, + configurable: true + }); + Set.prototype.has = function (value) { return this._map.has(value); }; + Set.prototype.add = function (value) { return this._map.set(value, value), this; }; + Set.prototype.delete = function (value) { return this._map.delete(value); }; + Set.prototype.clear = function () { this._map.clear(); }; + Set.prototype.keys = function () { return this._map.keys(); }; + Set.prototype.values = function () { return this._map.values(); }; + Set.prototype.entries = function () { return this._map.entries(); }; + Set.prototype["@@iterator"] = function () { return this.keys(); }; + Set.prototype[iteratorSymbol] = function () { return this.keys(); }; + return Set; + }()); + } + // naive WeakMap shim + function CreateWeakMapPolyfill() { + var UUID_SIZE = 16; + var keys = HashMap.create(); + var rootKey = CreateUniqueKey(); + return /** @class */ (function () { + function WeakMap() { + this._key = CreateUniqueKey(); + } + WeakMap.prototype.has = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? HashMap.has(table, this._key) : false; + }; + WeakMap.prototype.get = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? HashMap.get(table, this._key) : undefined; + }; + WeakMap.prototype.set = function (target, value) { + var table = GetOrCreateWeakMapTable(target, /*create*/ true); + table[this._key] = value; + return this; + }; + WeakMap.prototype.delete = function (target) { + var table = GetOrCreateWeakMapTable(target, /*create*/ false); + return table !== undefined ? delete table[this._key] : false; + }; + WeakMap.prototype.clear = function () { + // NOTE: not a real clear, just makes the previous data unreachable + this._key = CreateUniqueKey(); + }; + return WeakMap; + }()); + function CreateUniqueKey() { + var key; + do + { key = "@@WeakMap@@" + CreateUUID(); } + while (HashMap.has(keys, key)); + keys[key] = true; + return key; + } + function GetOrCreateWeakMapTable(target, create) { + if (!hasOwn.call(target, rootKey)) { + if (!create) + { return undefined; } + Object.defineProperty(target, rootKey, { value: HashMap.create() }); + } + return target[rootKey]; + } + function FillRandomBytes(buffer, size) { + for (var i = 0; i < size; ++i) + { buffer[i] = Math.random() * 0xff | 0; } + return buffer; + } + function GenRandomBytes(size) { + if (typeof Uint8Array === "function") { + if (typeof crypto !== "undefined") + { return crypto.getRandomValues(new Uint8Array(size)); } + if (typeof msCrypto !== "undefined") + { return msCrypto.getRandomValues(new Uint8Array(size)); } + return FillRandomBytes(new Uint8Array(size), size); + } + return FillRandomBytes(new Array(size), size); + } + function CreateUUID() { + var data = GenRandomBytes(UUID_SIZE); + // mark as random - RFC 4122 § 4.4 + data[6] = data[6] & 0x4f | 0x40; + data[8] = data[8] & 0xbf | 0x80; + var result = ""; + for (var offset = 0; offset < UUID_SIZE; ++offset) { + var byte = data[offset]; + if (offset === 4 || offset === 6 || offset === 8) + { result += "-"; } + if (byte < 16) + { result += "0"; } + result += byte.toString(16).toLowerCase(); + } + return result; + } + } + // uses a heuristic used by v8 and chakra to force an object into dictionary mode. + function MakeDictionary(obj) { + obj.__ = undefined; + delete obj.__; + return obj; + } + }); + })(Reflect$1 || (Reflect$1 = {})); + + var __extends = (undefined && undefined.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + })(); + function hookBeforeNativeCall(context) { + if (context) { + Reflect.defineMetadata('__doric_context__', context, global$1); + context.hookBeforeNativeCall(); + } + } + function hookAfterNativeCall(context) { + if (context) { + context.hookAfterNativeCall(); + } + } + function getContext() { + return Reflect.getMetadata('__doric_context__', global$1); + } + function setContext(context) { + Reflect.defineMetadata('__doric_context__', context, global$1); + } + function jsCallResolve(contextId, callbackId, args) { + var arguments$1 = arguments; + + var context = gContexts.get(contextId); + if (context === undefined) { + loge("Cannot find context for context id:" + contextId); + return; + } + var callback = context.callbacks.get(callbackId); + if (callback === undefined) { + loge("Cannot find call for context id:" + contextId + ",callback id:" + callbackId); + return; + } + var argumentsList = []; + for (var i = 2; i < arguments.length; i++) { + argumentsList.push(arguments$1[i]); + } + hookBeforeNativeCall(context); + Reflect.apply(callback.resolve, context, argumentsList); + hookAfterNativeCall(context); + } + function jsCallReject(contextId, callbackId, args) { + var arguments$1 = arguments; + + var context = gContexts.get(contextId); + if (context === undefined) { + loge("Cannot find context for context id:" + contextId); + return; + } + var callback = context.callbacks.get(callbackId); + if (callback === undefined) { + loge("Cannot find call for context id:" + contextId + ",callback id:" + callbackId); + return; + } + var argumentsList = []; + for (var i = 2; i < arguments.length; i++) { + argumentsList.push(arguments$1[i]); + } + hookBeforeNativeCall(context); + Reflect.apply(callback.reject, context.entity, argumentsList); + hookAfterNativeCall(context); + } + var Context = /** @class */ (function () { + function Context(id) { + this.callbacks = new Map; + this.id = id; + } + Context.prototype.hookBeforeNativeCall = function () { + if (this.entity && Reflect.has(this.entity, 'hookBeforeNativeCall')) { + Reflect.apply(Reflect.get(this.entity, 'hookBeforeNativeCall'), this.entity, []); + } + }; + Context.prototype.hookAfterNativeCall = function () { + if (this.entity && Reflect.has(this.entity, 'hookAfterNativeCall')) { + Reflect.apply(Reflect.get(this.entity, 'hookAfterNativeCall'), this.entity, []); + } + }; + Context.prototype.callNative = function (namespace, method, args) { + var _this = this; + var callbackId = uniqueId('callback'); + nativeBridge(this.id, namespace, method, callbackId, args); + return new Promise(function (resolve, reject) { + _this.callbacks.set(callbackId, { + resolve: resolve, + reject: reject, + }); + }); + }; + Context.prototype.register = function (instance) { + this.entity = instance; + }; + Context.prototype.function2Id = function (func) { + var functionId = uniqueId('function'); + this.callbacks.set(functionId, { + resolve: func, + reject: function () { loge("This should not be called"); } + }); + return functionId; + }; + Context.prototype.removeFuncById = function (funcId) { + this.callbacks.delete(funcId); + }; + return Context; + }()); + var gContexts = new Map; + var gModules = new Map; + function jsObtainContext(id) { + if (gContexts.has(id)) { + var context_1 = gContexts.get(id); + setContext(context_1); + return context_1; + } + else { + var context_2 = new Context(id); + gContexts.set(id, context_2); + setContext(context_2); + return context_2; + } + } + function jsReleaseContext(id) { + var context = gContexts.get(id); + var args = arguments; + if (context) { + timerInfos.forEach(function (v, k) { + if (v.context === context) { + if (global$1.nativeClearTimer === undefined) { + return Reflect.apply(_clearTimeout, undefined, args); + } + timerInfos.delete(k); + nativeClearTimer(k); + } + }); + } + gContexts.delete(id); + } + function __require__(name) { + if (gModules.has(name)) { + return gModules.get(name); + } + else { + if (nativeRequire(name)) { + return gModules.get(name); + } + else { + return undefined; + } + } + } + function jsRegisterModule(name, moduleObject) { + gModules.set(name, moduleObject); + } + function jsCallEntityMethod(contextId, methodName, args) { + var arguments$1 = arguments; + + var context = gContexts.get(contextId); + if (context === undefined) { + loge("Cannot find context for context id:" + contextId); + return; + } + if (context.entity === undefined) { + loge("Cannot find holder for context id:" + contextId); + return; + } + if (Reflect.has(context.entity, methodName)) { + var argumentsList = []; + for (var i = 2; i < arguments.length; i++) { + argumentsList.push(arguments$1[i]); + } + hookBeforeNativeCall(context); + var ret = Reflect.apply(Reflect.get(context.entity, methodName), context.entity, argumentsList); + hookAfterNativeCall(context); + return ret; + } + else { + loge("Cannot find method for context id:" + contextId + ",method name is:" + methodName); + } + } + function jsObtainEntry(contextId) { + var context = jsObtainContext(contextId); + return function (constructor) { + var ret = /** @class */ (function (_super) { + __extends(class_1, _super); + function class_1() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.context = context; + return _this; + } + return class_1; + }(constructor)); + if (context) { + context.register(new ret); + } + return ret; + }; + } + var global$1 = Function('return this')(); + var __timerId__ = 0; + var timerInfos = new Map; + var _setTimeout = global$1.setTimeout; + var _setInterval = global$1.setInterval; + var _clearTimeout = global$1.clearTimeout; + var _clearInterval = global$1.clearInterval; + var doricSetTimeout = function (handler, timeout) { + var arguments$1 = arguments; + + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments$1[_i]; + } + if (global$1.nativeSetTimer === undefined) { + return Reflect.apply(_setTimeout, undefined, arguments); + } + var id = __timerId__++; + timerInfos.set(id, { + callback: function () { + Reflect.apply(handler, undefined, args); + timerInfos.delete(id); + }, + context: getContext(), + }); + nativeSetTimer(id, timeout || 0, false); + return id; + }; + var doricSetInterval = function (handler, timeout) { + var arguments$1 = arguments; + + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments$1[_i]; + } + if (global$1.nativeSetTimer === undefined) { + return Reflect.apply(_setInterval, undefined, arguments); + } + var id = __timerId__++; + timerInfos.set(id, { + callback: function () { + Reflect.apply(handler, undefined, args); + }, + context: getContext(), + }); + nativeSetTimer(id, timeout || 0, true); + return id; + }; + var doricClearTimeout = function (timerId) { + if (global$1.nativeClearTimer === undefined) { + return Reflect.apply(_clearTimeout, undefined, arguments); + } + timerInfos.delete(timerId); + nativeClearTimer(timerId); + }; + var doricClearInterval = function (timerId) { + if (global$1.nativeClearTimer === undefined) { + return Reflect.apply(_clearInterval, undefined, arguments); + } + timerInfos.delete(timerId); + nativeClearTimer(timerId); + }; + if (!global$1.setTimeout) { + global$1.setTimeout = doricSetTimeout; + } + else { + global$1.doricSetTimeout = doricSetTimeout; + } + if (!global$1.setInterval) { + global$1.setInterval = doricSetInterval; + } + else { + global$1.doricSetInterval = doricSetInterval; + } + if (!global$1.clearTimeout) { + global$1.clearTimeout = doricClearTimeout; + } + else { + global$1.doricClearTimeout = doricClearTimeout; + } + if (!global$1.clearInterval) { + global$1.clearInterval = doricClearInterval; + } + else { + global$1.doricClearInterval = doricClearInterval; + } + function jsCallbackTimer(timerId) { + var timerInfo = timerInfos.get(timerId); + if (timerInfo === undefined) { + return; + } + if (timerInfo.callback instanceof Function) { + hookBeforeNativeCall(timerInfo.context); + Reflect.apply(timerInfo.callback, timerInfo.context, []); + hookAfterNativeCall(timerInfo.context); + } + } + + var check = function (it) { + return it && it.Math == Math && it; + }; + + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global_1 = + // eslint-disable-next-line no-undef + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + // eslint-disable-next-line no-new-func + Function('return this')(); + + var fails = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + + // Thank's IE8 for his funny defineProperty + var descriptors = !fails(function () { + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; + }); + + var nativePropertyIsEnumerable = {}.propertyIsEnumerable; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // Nashorn ~ JDK8 bug + var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable + var f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : nativePropertyIsEnumerable; + + var objectPropertyIsEnumerable = { + f: f + }; + + var createPropertyDescriptor = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var toString$1 = {}.toString; + + var classofRaw = function (it) { + return toString$1.call(it).slice(8, -1); + }; + + var split = ''.split; + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var indexedObject = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins + return !Object('z').propertyIsEnumerable(0); + }) ? function (it) { + return classofRaw(it) == 'String' ? split.call(it, '') : Object(it); + } : Object; + + // `RequireObjectCoercible` abstract operation + // https://tc39.github.io/ecma262/#sec-requireobjectcoercible + var requireObjectCoercible = function (it) { + if (it == undefined) { throw TypeError("Can't call method on " + it); } + return it; + }; + + // toObject with fallback for non-array-like ES3 strings + + + + var toIndexedObject = function (it) { + return indexedObject(requireObjectCoercible(it)); + }; + + var isObject = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + + // `ToPrimitive` abstract operation + // https://tc39.github.io/ecma262/#sec-toprimitive + // instead of the ES6 spec version, we didn't implement @@toPrimitive case + // and the second argument - flag - preferred type is a string + var toPrimitive = function (input, PREFERRED_STRING) { + if (!isObject(input)) { return input; } + var fn, val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) { return val; } + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) { return val; } + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) { return val; } + throw TypeError("Can't convert object to primitive value"); + }; + + var hasOwnProperty = {}.hasOwnProperty; + + var has = function (it, key) { + return hasOwnProperty.call(it, key); + }; + + var document$1 = global_1.document; + // typeof document.createElement is 'object' in old IE + var EXISTS = isObject(document$1) && isObject(document$1.createElement); + + var documentCreateElement = function (it) { + return EXISTS ? document$1.createElement(it) : {}; + }; + + // Thank's IE8 for his funny defineProperty + var ie8DomDefine = !descriptors && !fails(function () { + return Object.defineProperty(documentCreateElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; + }); + + var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor + var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (ie8DomDefine) { try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } } + if (has(O, P)) { return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]); } + }; + + var objectGetOwnPropertyDescriptor = { + f: f$1 + }; + + var anObject = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; + }; + + var nativeDefineProperty = Object.defineProperty; + + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty + var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (ie8DomDefine) { try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } } + if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported'); } + if ('value' in Attributes) { O[P] = Attributes.value; } + return O; + }; + + var objectDefineProperty = { + f: f$2 + }; + + var createNonEnumerableProperty = descriptors ? function (object, key, value) { + return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var setGlobal = function (key, value) { + try { + createNonEnumerableProperty(global_1, key, value); + } catch (error) { + global_1[key] = value; + } return value; + }; + + var SHARED = '__core-js_shared__'; + var store = global_1[SHARED] || setGlobal(SHARED, {}); + + var sharedStore = store; + + var functionToString = Function.toString; + + // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper + if (typeof sharedStore.inspectSource != 'function') { + sharedStore.inspectSource = function (it) { + return functionToString.call(it); + }; + } + + var inspectSource = sharedStore.inspectSource; + + var WeakMap$1 = global_1.WeakMap; + + var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(inspectSource(WeakMap$1)); + + var isPure = false; + + var shared = createCommonjsModule(function (module) { + (module.exports = function (key, value) { + return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: '3.6.4', + mode: 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' + }); + }); + + var id = 0; + var postfix = Math.random(); + + var uid = function (key) { + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); + }; + + var keys = shared('keys'); + + var sharedKey = function (key) { + return keys[key] || (keys[key] = uid(key)); + }; + + var hiddenKeys = {}; + + var WeakMap$2 = global_1.WeakMap; + var set, get, has$1; + + var enforce = function (it) { + return has$1(it) ? get(it) : set(it, {}); + }; + + var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; + }; + + if (nativeWeakMap) { + var store$1 = new WeakMap$2(); + var wmget = store$1.get; + var wmhas = store$1.has; + var wmset = store$1.set; + set = function (it, metadata) { + wmset.call(store$1, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store$1, it) || {}; + }; + has$1 = function (it) { + return wmhas.call(store$1, it); + }; + } else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return has(it, STATE) ? it[STATE] : {}; + }; + has$1 = function (it) { + return has(it, STATE); + }; + } + + var internalState = { + set: set, + get: get, + has: has$1, + enforce: enforce, + getterFor: getterFor + }; + + var redefine = createCommonjsModule(function (module) { + var getInternalState = internalState.get; + var enforceInternalState = internalState.enforce; + var TEMPLATE = String(String).split('String'); + + (module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) { createNonEnumerableProperty(value, 'name', key); } + enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + if (O === global_1) { + if (simple) { O[key] = value; } + else { setGlobal(key, value); } + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) { O[key] = value; } + else { createNonEnumerableProperty(O, key, value); } + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); + }); + }); + + var path = global_1; + + var aFunction = function (variable) { + return typeof variable == 'function' ? variable : undefined; + }; + + var getBuiltIn = function (namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) + : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; + }; + + var ceil = Math.ceil; + var floor = Math.floor; + + // `ToInteger` abstract operation + // https://tc39.github.io/ecma262/#sec-tointeger + var toInteger = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); + }; + + var min = Math.min; + + // `ToLength` abstract operation + // https://tc39.github.io/ecma262/#sec-tolength + var toLength = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + }; + + var max = Math.max; + var min$1 = Math.min; + + // Helper for a popular repeating case of the spec: + // Let integer be ? ToInteger(index). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + var toAbsoluteIndex = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min$1(integer, length); + }; + + // `Array.prototype.{ indexOf, includes }` methods implementation + var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) { while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) { return true; } + // Array#indexOf ignores holes, Array#includes - not + } } else { for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) { return IS_INCLUDES || index || 0; } + } } return !IS_INCLUDES && -1; + }; + }; + + var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) + }; + + var indexOf = arrayIncludes.indexOf; + + + var objectKeysInternal = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) { !has(hiddenKeys, key) && has(O, key) && result.push(key); } + // Don't enum bug & hidden keys + while (names.length > i) { if (has(O, key = names[i++])) { + ~indexOf(result, key) || result.push(key); + } } + return result; + }; + + // IE8- don't enum bug keys + var enumBugKeys = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' + ]; + + var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); + + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames + var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return objectKeysInternal(O, hiddenKeys$1); + }; + + var objectGetOwnPropertyNames = { + f: f$3 + }; + + var f$4 = Object.getOwnPropertySymbols; + + var objectGetOwnPropertySymbols = { + f: f$4 + }; + + // all object keys, includes non-enumerable and symbols + var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = objectGetOwnPropertyNames.f(anObject(it)); + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; + }; + + var copyConstructorProperties = function (target, source) { + var keys = ownKeys(source); + var defineProperty = objectDefineProperty.f; + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) { defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } + } + }; + + var replacement = /#|\.prototype\./; + + var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; + }; + + var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); + }; + + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = 'N'; + var POLYFILL = isForced.POLYFILL = 'P'; + + var isForced_1 = isForced; + + var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; + + + + + + + /* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target + */ + var _export = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global_1; + } else if (STATIC) { + target = global_1[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global_1[TARGET] || {}).prototype; + } + if (target) { for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor$1(target, key); + targetProperty = descriptor && descriptor.value; + } else { targetProperty = target[key]; } + FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) { continue; } + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } } + }; + + var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + // eslint-disable-next-line no-undef + return !String(Symbol()); + }); + + var useSymbolAsUid = nativeSymbol + // eslint-disable-next-line no-undef + && !Symbol.sham + // eslint-disable-next-line no-undef + && typeof Symbol.iterator == 'symbol'; + + // `IsArray` abstract operation + // https://tc39.github.io/ecma262/#sec-isarray + var isArray = Array.isArray || function isArray(arg) { + return classofRaw(arg) == 'Array'; + }; + + // `ToObject` abstract operation + // https://tc39.github.io/ecma262/#sec-toobject + var toObject = function (argument) { + return Object(requireObjectCoercible(argument)); + }; + + // `Object.keys` method + // https://tc39.github.io/ecma262/#sec-object.keys + var objectKeys = Object.keys || function keys(O) { + return objectKeysInternal(O, enumBugKeys); + }; + + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties + var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) { objectDefineProperty.f(O, key = keys[index++], Properties[key]); } + return O; + }; + + var html = getBuiltIn('document', 'documentElement'); + + var GT = '>'; + var LT = '<'; + var PROTOTYPE = 'prototype'; + var SCRIPT = 'script'; + var IE_PROTO = sharedKey('IE_PROTO'); + + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + /* global ActiveXObject */ + activeXDocument = document.domain && new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); + var length = enumBugKeys.length; + while (length--) { delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; } + return NullProtoObject(); + }; + + hiddenKeys[IE_PROTO] = true; + + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create + var objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else { result = NullProtoObject(); } + return Properties === undefined ? result : objectDefineProperties(result, Properties); + }; + + var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f; + + var toString$2 = {}.toString; + + var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function (it) { + try { + return nativeGetOwnPropertyNames(it); + } catch (error) { + return windowNames.slice(); + } + }; + + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + var f$5 = function getOwnPropertyNames(it) { + return windowNames && toString$2.call(it) == '[object Window]' + ? getWindowNames(it) + : nativeGetOwnPropertyNames(toIndexedObject(it)); + }; + + var objectGetOwnPropertyNamesExternal = { + f: f$5 + }; + + var WellKnownSymbolsStore = shared('wks'); + var Symbol$1 = global_1.Symbol; + var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; + + var wellKnownSymbol = function (name) { + if (!has(WellKnownSymbolsStore, name)) { + if (nativeSymbol && has(Symbol$1, name)) { WellKnownSymbolsStore[name] = Symbol$1[name]; } + else { WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); } + } return WellKnownSymbolsStore[name]; + }; + + var f$6 = wellKnownSymbol; + + var wellKnownSymbolWrapped = { + f: f$6 + }; + + var defineProperty = objectDefineProperty.f; + + var defineWellKnownSymbol = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!has(Symbol, NAME)) { defineProperty(Symbol, NAME, { + value: wellKnownSymbolWrapped.f(NAME) + }); } + }; + + var defineProperty$1 = objectDefineProperty.f; + + + + var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + + var setToStringTag = function (it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty$1(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } + }; + + var aFunction$1 = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; + }; + + // optional / simple context binding + var functionBindContext = function (fn, that, length) { + aFunction$1(fn); + if (that === undefined) { return fn; } + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var SPECIES = wellKnownSymbol('species'); + + // `ArraySpeciesCreate` abstract operation + // https://tc39.github.io/ecma262/#sec-arrayspeciescreate + var arraySpeciesCreate = function (originalArray, length) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) { C = undefined; } + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) { C = undefined; } + } + } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); + }; + + var push = [].push; + + // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation + var createMethod$1 = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = indexedObject(O); + var boundFunction = functionBindContext(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) { if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) { target[index] = result; } // map + else if (result) { switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push.call(target, value); // filter + } } else if (IS_EVERY) { return false; } // every + } + } } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; + }; + + var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + forEach: createMethod$1(0), + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + map: createMethod$1(1), + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + filter: createMethod$1(2), + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + some: createMethod$1(3), + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + every: createMethod$1(4), + // `Array.prototype.find` method + // https://tc39.github.io/ecma262/#sec-array.prototype.find + find: createMethod$1(5), + // `Array.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$1(6) + }; + + var $forEach = arrayIteration.forEach; + + var HIDDEN = sharedKey('hidden'); + var SYMBOL = 'Symbol'; + var PROTOTYPE$1 = 'prototype'; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + var setInternalState = internalState.set; + var getInternalState = internalState.getterFor(SYMBOL); + var ObjectPrototype = Object[PROTOTYPE$1]; + var $Symbol = global_1.Symbol; + var $stringify = getBuiltIn('JSON', 'stringify'); + var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; + var nativeDefineProperty$1 = objectDefineProperty.f; + var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f; + var nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f; + var AllSymbols = shared('symbols'); + var ObjectPrototypeSymbols = shared('op-symbols'); + var StringToSymbolRegistry = shared('string-to-symbol-registry'); + var SymbolToStringRegistry = shared('symbol-to-string-registry'); + var WellKnownSymbolsStore$1 = shared('wks'); + var QObject = global_1.QObject; + // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 + var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; + + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 + var setSymbolDescriptor = descriptors && fails(function () { + return objectCreate(nativeDefineProperty$1({}, 'a', { + get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; } + })).a != 7; + }) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) { delete ObjectPrototype[P]; } + nativeDefineProperty$1(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor); + } + } : nativeDefineProperty$1; + + var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!descriptors) { symbol.description = description; } + return symbol; + }; + + var isSymbol = useSymbolAsUid ? function (it) { + return typeof it == 'symbol'; + } : function (it) { + return Object(it) instanceof $Symbol; + }; + + var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) { $defineProperty(ObjectPrototypeSymbols, P, Attributes); } + anObject(O); + var key = toPrimitive(P, true); + anObject(Attributes); + if (has(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!has(O, HIDDEN)) { nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {})); } + O[HIDDEN][key] = true; + } else { + if (has(O, HIDDEN) && O[HIDDEN][key]) { O[HIDDEN][key] = false; } + Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty$1(O, key, Attributes); + }; + + var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!descriptors || $propertyIsEnumerable.call(properties, key)) { $defineProperty(O, key, properties[key]); } + }); + return O; + }; + + var $create = function create(O, Properties) { + return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties); + }; + + var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPrimitive(V, true); + var enumerable = nativePropertyIsEnumerable$1.call(this, P); + if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) { return false; } + return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; + }; + + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPrimitive(P, true); + if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) { return; } + var descriptor = nativeGetOwnPropertyDescriptor$1(it, key); + if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; + }; + + var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames$1(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!has(AllSymbols, key) && !has(hiddenKeys, key)) { result.push(key); } + }); + return result; + }; + + var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { + result.push(AllSymbols[key]); + } + }); + return result; + }; + + // `Symbol` constructor + // https://tc39.github.io/ecma262/#sec-symbol-constructor + if (!nativeSymbol) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) { throw TypeError('Symbol is not a constructor'); } + var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); + var tag = uid(description); + var setter = function (value) { + if (this === ObjectPrototype) { setter.call(ObjectPrototypeSymbols, value); } + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) { this[HIDDEN][tag] = false; } + setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); + }; + if (descriptors && USE_SETTER) { setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); } + return wrap(tag, description); + }; + + redefine($Symbol[PROTOTYPE$1], 'toString', function toString() { + return getInternalState(this).tag; + }); + + redefine($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + objectPropertyIsEnumerable.f = $propertyIsEnumerable; + objectDefineProperty.f = $defineProperty; + objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor; + objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames; + objectGetOwnPropertySymbols.f = $getOwnPropertySymbols; + + wellKnownSymbolWrapped.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (descriptors) { + // https://github.com/tc39/proposal-Symbol-description + nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + { + redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } + } + + _export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, { + Symbol: $Symbol + }); + + $forEach(objectKeys(WellKnownSymbolsStore$1), function (name) { + defineWellKnownSymbol(name); + }); + + _export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, { + // `Symbol.for` method + // https://tc39.github.io/ecma262/#sec-symbol.for + 'for': function (key) { + var string = String(key); + if (has(StringToSymbolRegistry, string)) { return StringToSymbolRegistry[string]; } + var symbol = $Symbol(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + }, + // `Symbol.keyFor` method + // https://tc39.github.io/ecma262/#sec-symbol.keyfor + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) { throw TypeError(sym + ' is not a symbol'); } + if (has(SymbolToStringRegistry, sym)) { return SymbolToStringRegistry[sym]; } + }, + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } + }); + + _export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, { + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor + }); + + _export({ target: 'Object', stat: true, forced: !nativeSymbol }, { + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames, + // `Object.getOwnPropertySymbols` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols + getOwnPropertySymbols: $getOwnPropertySymbols + }); + + // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives + // https://bugs.chromium.org/p/v8/issues/detail?id=3443 + _export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return objectGetOwnPropertySymbols.f(toObject(it)); + } + }); + + // `JSON.stringify` method behavior with symbols + // https://tc39.github.io/ecma262/#sec-json.stringify + if ($stringify) { + var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () { + var symbol = $Symbol(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; + }); + + _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var arguments$1 = arguments; + + var args = [it]; + var index = 1; + var $replacer; + while (arguments.length > index) { args.push(arguments$1[index++]); } + $replacer = replacer; + if (!isObject(replacer) && it === undefined || isSymbol(it)) { return; } // IE8 returns string on undefined + if (!isArray(replacer)) { replacer = function (key, value) { + if (typeof $replacer == 'function') { value = $replacer.call(this, key, value); } + if (!isSymbol(value)) { return value; } + }; } + args[1] = replacer; + return $stringify.apply(null, args); + } + }); + } + + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive + if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) { + createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf); + } + // `Symbol.prototype[@@toStringTag]` property + // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag + setToStringTag($Symbol, SYMBOL); + + hiddenKeys[HIDDEN] = true; + + // `Symbol.asyncIterator` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.asynciterator + defineWellKnownSymbol('asyncIterator'); + + var defineProperty$2 = objectDefineProperty.f; + + + var NativeSymbol = global_1.Symbol; + + if (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || + // Safari 12 bug + NativeSymbol().description !== undefined + )) { + var EmptyStringDescriptionStore = {}; + // wrap Symbol constructor for correct work with undefined description + var SymbolWrapper = function Symbol() { + var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); + var result = this instanceof SymbolWrapper + ? new NativeSymbol(description) + // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' + : description === undefined ? NativeSymbol() : NativeSymbol(description); + if (description === '') { EmptyStringDescriptionStore[result] = true; } + return result; + }; + copyConstructorProperties(SymbolWrapper, NativeSymbol); + var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; + symbolPrototype.constructor = SymbolWrapper; + + var symbolToString = symbolPrototype.toString; + var native = String(NativeSymbol('test')) == 'Symbol(test)'; + var regexp = /^Symbol\((.*)\)[^)]+$/; + defineProperty$2(symbolPrototype, 'description', { + configurable: true, + get: function description() { + var symbol = isObject(this) ? this.valueOf() : this; + var string = symbolToString.call(symbol); + if (has(EmptyStringDescriptionStore, symbol)) { return ''; } + var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); + return desc === '' ? undefined : desc; + } + }); + + _export({ global: true, forced: true }, { + Symbol: SymbolWrapper + }); + } + + // `Symbol.hasInstance` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.hasinstance + defineWellKnownSymbol('hasInstance'); + + // `Symbol.isConcatSpreadable` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable + defineWellKnownSymbol('isConcatSpreadable'); + + // `Symbol.iterator` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.iterator + defineWellKnownSymbol('iterator'); + + // `Symbol.match` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.match + defineWellKnownSymbol('match'); + + // `Symbol.matchAll` well-known symbol + defineWellKnownSymbol('matchAll'); + + // `Symbol.replace` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.replace + defineWellKnownSymbol('replace'); + + // `Symbol.search` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.search + defineWellKnownSymbol('search'); + + // `Symbol.species` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.species + defineWellKnownSymbol('species'); + + // `Symbol.split` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.split + defineWellKnownSymbol('split'); + + // `Symbol.toPrimitive` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.toprimitive + defineWellKnownSymbol('toPrimitive'); + + // `Symbol.toStringTag` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.tostringtag + defineWellKnownSymbol('toStringTag'); + + // `Symbol.unscopables` well-known symbol + // https://tc39.github.io/ecma262/#sec-symbol.unscopables + defineWellKnownSymbol('unscopables'); + + var nativeAssign = Object.assign; + var defineProperty$3 = Object.defineProperty; + + // `Object.assign` method + // https://tc39.github.io/ecma262/#sec-object.assign + var objectAssign = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty$3({}, 'a', { + enumerable: true, + get: function () { + defineProperty$3(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) { return true; } + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; + }) ? function assign(target, source) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + var propertyIsEnumerable = objectPropertyIsEnumerable.f; + while (argumentsLength > index) { + var S = indexedObject(arguments$1[index++]); + var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!descriptors || propertyIsEnumerable.call(S, key)) { T[key] = S[key]; } + } + } return T; + } : nativeAssign; + + // `Object.assign` method + // https://tc39.github.io/ecma262/#sec-object.assign + _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { + assign: objectAssign + }); + + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create + _export({ target: 'Object', stat: true, sham: !descriptors }, { + create: objectCreate + }); + + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty + _export({ target: 'Object', stat: true, forced: !descriptors, sham: !descriptors }, { + defineProperty: objectDefineProperty.f + }); + + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties + _export({ target: 'Object', stat: true, forced: !descriptors, sham: !descriptors }, { + defineProperties: objectDefineProperties + }); + + var propertyIsEnumerable = objectPropertyIsEnumerable.f; + + // `Object.{ entries, values }` methods implementation + var createMethod$2 = function (TO_ENTRIES) { + return function (it) { + var O = toIndexedObject(it); + var keys = objectKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!descriptors || propertyIsEnumerable.call(O, key)) { + result.push(TO_ENTRIES ? [key, O[key]] : O[key]); + } + } + return result; + }; + }; + + var objectToArray = { + // `Object.entries` method + // https://tc39.github.io/ecma262/#sec-object.entries + entries: createMethod$2(true), + // `Object.values` method + // https://tc39.github.io/ecma262/#sec-object.values + values: createMethod$2(false) + }; + + var $entries = objectToArray.entries; + + // `Object.entries` method + // https://tc39.github.io/ecma262/#sec-object.entries + _export({ target: 'Object', stat: true }, { + entries: function entries(O) { + return $entries(O); + } + }); + + var freezing = !fails(function () { + return Object.isExtensible(Object.preventExtensions({})); + }); + + var internalMetadata = createCommonjsModule(function (module) { + var defineProperty = objectDefineProperty.f; + + + + var METADATA = uid('meta'); + var id = 0; + + var isExtensible = Object.isExtensible || function () { + return true; + }; + + var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + ++id, // object ID + weakData: {} // weak collections IDs + } }); + }; + + var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) { return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; } + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) { return 'F'; } + // not necessary to add metadata + if (!create) { return 'E'; } + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; + }; + + var getWeakData = function (it, create) { + if (!has(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) { return true; } + // not necessary to add metadata + if (!create) { return false; } + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; + }; + + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (freezing && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) { setMetadata(it); } + return it; + }; + + var meta = module.exports = { + REQUIRED: false, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze + }; + + hiddenKeys[METADATA] = true; + }); + var internalMetadata_1 = internalMetadata.REQUIRED; + var internalMetadata_2 = internalMetadata.fastKey; + var internalMetadata_3 = internalMetadata.getWeakData; + var internalMetadata_4 = internalMetadata.onFreeze; + + var onFreeze = internalMetadata.onFreeze; + + var nativeFreeze = Object.freeze; + var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); }); + + // `Object.freeze` method + // https://tc39.github.io/ecma262/#sec-object.freeze + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !freezing }, { + freeze: function freeze(it) { + return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; + } + }); + + var iterators = {}; + + var ITERATOR = wellKnownSymbol('iterator'); + var ArrayPrototype = Array.prototype; + + // check on default Array iterator + var isArrayIteratorMethod = function (it) { + return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it); + }; + + var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); + var test = {}; + + test[TO_STRING_TAG$1] = 'z'; + + var toStringTagSupport = String(test) === '[object z]'; + + var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); + // ES3 wrong here + var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } + }; + + // getting tag from ES6+ `Object.prototype.toString` + var classof = toStringTagSupport ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$2)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; + }; + + var ITERATOR$1 = wellKnownSymbol('iterator'); + + var getIteratorMethod = function (it) { + if (it != undefined) { return it[ITERATOR$1] + || it['@@iterator'] + || iterators[classof(it)]; } + }; + + // call something on iterator step with safe closing on error + var callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) { anObject(returnMethod.call(iterator)); } + throw error; + } + }; + + var iterate_1 = createCommonjsModule(function (module) { + var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; + }; + + var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { + var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1); + var iterator, iterFn, index, length, result, next, step; + + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (typeof iterFn != 'function') { throw TypeError('Target is not iterable'); } + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = toLength(iterable.length); length > index; index++) { + result = AS_ENTRIES + ? boundFunction(anObject(step = iterable[index])[0], step[1]) + : boundFunction(iterable[index]); + if (result && result instanceof Result) { return result; } + } return new Result(false); + } + iterator = iterFn.call(iterable); + } + + next = iterator.next; + while (!(step = next.call(iterator)).done) { + result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); + if (typeof result == 'object' && result && result instanceof Result) { return result; } + } return new Result(false); + }; + + iterate.stop = function (result) { + return new Result(true, result); + }; + }); + + var createProperty = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) { objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value)); } + else { object[propertyKey] = value; } + }; + + // `Object.fromEntries` method + // https://github.com/tc39/proposal-object-from-entries + _export({ target: 'Object', stat: true }, { + fromEntries: function fromEntries(iterable) { + var obj = {}; + iterate_1(iterable, function (k, v) { + createProperty(obj, k, v); + }, undefined, true); + return obj; + } + }); + + var nativeGetOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; + + + var FAILS_ON_PRIMITIVES$1 = fails(function () { nativeGetOwnPropertyDescriptor$2(1); }); + var FORCED = !descriptors || FAILS_ON_PRIMITIVES$1; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor + _export({ target: 'Object', stat: true, forced: FORCED, sham: !descriptors }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor$2(toIndexedObject(it), key); + } + }); + + // `Object.getOwnPropertyDescriptors` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors + _export({ target: 'Object', stat: true, sham: !descriptors }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) { createProperty(result, key, descriptor); } + } + return result; + } + }); + + var nativeGetOwnPropertyNames$2 = objectGetOwnPropertyNamesExternal.f; + + var FAILS_ON_PRIMITIVES$2 = fails(function () { return !Object.getOwnPropertyNames(1); }); + + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$2 }, { + getOwnPropertyNames: nativeGetOwnPropertyNames$2 + }); + + var correctPrototypeGetter = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + + var IE_PROTO$1 = sharedKey('IE_PROTO'); + var ObjectPrototype$1 = Object.prototype; + + // `Object.getPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.getprototypeof + var objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) { + O = toObject(O); + if (has(O, IE_PROTO$1)) { return O[IE_PROTO$1]; } + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectPrototype$1 : null; + }; + + var FAILS_ON_PRIMITIVES$3 = fails(function () { objectGetPrototypeOf(1); }); + + // `Object.getPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.getprototypeof + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$3, sham: !correctPrototypeGetter }, { + getPrototypeOf: function getPrototypeOf(it) { + return objectGetPrototypeOf(toObject(it)); + } + }); + + // `SameValue` abstract operation + // https://tc39.github.io/ecma262/#sec-samevalue + var sameValue = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; + }; + + // `Object.is` method + // https://tc39.github.io/ecma262/#sec-object.is + _export({ target: 'Object', stat: true }, { + is: sameValue + }); + + var nativeIsExtensible = Object.isExtensible; + var FAILS_ON_PRIMITIVES$4 = fails(function () { nativeIsExtensible(1); }); + + // `Object.isExtensible` method + // https://tc39.github.io/ecma262/#sec-object.isextensible + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$4 }, { + isExtensible: function isExtensible(it) { + return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; + } + }); + + var nativeIsFrozen = Object.isFrozen; + var FAILS_ON_PRIMITIVES$5 = fails(function () { nativeIsFrozen(1); }); + + // `Object.isFrozen` method + // https://tc39.github.io/ecma262/#sec-object.isfrozen + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$5 }, { + isFrozen: function isFrozen(it) { + return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; + } + }); + + var nativeIsSealed = Object.isSealed; + var FAILS_ON_PRIMITIVES$6 = fails(function () { nativeIsSealed(1); }); + + // `Object.isSealed` method + // https://tc39.github.io/ecma262/#sec-object.issealed + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$6 }, { + isSealed: function isSealed(it) { + return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; + } + }); + + var FAILS_ON_PRIMITIVES$7 = fails(function () { objectKeys(1); }); + + // `Object.keys` method + // https://tc39.github.io/ecma262/#sec-object.keys + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$7 }, { + keys: function keys(it) { + return objectKeys(toObject(it)); + } + }); + + var onFreeze$1 = internalMetadata.onFreeze; + + + + var nativePreventExtensions = Object.preventExtensions; + var FAILS_ON_PRIMITIVES$8 = fails(function () { nativePreventExtensions(1); }); + + // `Object.preventExtensions` method + // https://tc39.github.io/ecma262/#sec-object.preventextensions + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$8, sham: !freezing }, { + preventExtensions: function preventExtensions(it) { + return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze$1(it)) : it; + } + }); + + var onFreeze$2 = internalMetadata.onFreeze; + + + + var nativeSeal = Object.seal; + var FAILS_ON_PRIMITIVES$9 = fails(function () { nativeSeal(1); }); + + // `Object.seal` method + // https://tc39.github.io/ecma262/#sec-object.seal + _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$9, sham: !freezing }, { + seal: function seal(it) { + return nativeSeal && isObject(it) ? nativeSeal(onFreeze$2(it)) : it; + } + }); + + var aPossiblePrototype = function (it) { + if (!isObject(it) && it !== null) { + throw TypeError("Can't set " + String(it) + ' as a prototype'); + } return it; + }; + + // `Object.setPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.setprototypeof + // Works with __proto__ only. Old v8 can't work with null proto objects. + /* eslint-disable no-proto */ + var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) { setter.call(O, proto); } + else { O.__proto__ = proto; } + return O; + }; + }() : undefined); + + // `Object.setPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-object.setprototypeof + _export({ target: 'Object', stat: true }, { + setPrototypeOf: objectSetPrototypeOf + }); + + var $values = objectToArray.values; + + // `Object.values` method + // https://tc39.github.io/ecma262/#sec-object.values + _export({ target: 'Object', stat: true }, { + values: function values(O) { + return $values(O); + } + }); + + // `Object.prototype.toString` method implementation + // https://tc39.github.io/ecma262/#sec-object.prototype.tostring + var objectToString = toStringTagSupport ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; + }; + + // `Object.prototype.toString` method + // https://tc39.github.io/ecma262/#sec-object.prototype.tostring + if (!toStringTagSupport) { + redefine(Object.prototype, 'toString', objectToString, { unsafe: true }); + } + + // Forced replacement object prototype accessors methods + var objectPrototypeAccessorsForced = !fails(function () { + var key = Math.random(); + // In FF throws only define methods + // eslint-disable-next-line no-undef, no-useless-call + __defineSetter__.call(null, key, function () { /* empty */ }); + delete global_1[key]; + }); + + // `Object.prototype.__defineGetter__` method + // https://tc39.github.io/ecma262/#sec-object.prototype.__defineGetter__ + if (descriptors) { + _export({ target: 'Object', proto: true, forced: objectPrototypeAccessorsForced }, { + __defineGetter__: function __defineGetter__(P, getter) { + objectDefineProperty.f(toObject(this), P, { get: aFunction$1(getter), enumerable: true, configurable: true }); + } + }); + } + + // `Object.prototype.__defineSetter__` method + // https://tc39.github.io/ecma262/#sec-object.prototype.__defineSetter__ + if (descriptors) { + _export({ target: 'Object', proto: true, forced: objectPrototypeAccessorsForced }, { + __defineSetter__: function __defineSetter__(P, setter) { + objectDefineProperty.f(toObject(this), P, { set: aFunction$1(setter), enumerable: true, configurable: true }); + } + }); + } + + var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; + + // `Object.prototype.__lookupGetter__` method + // https://tc39.github.io/ecma262/#sec-object.prototype.__lookupGetter__ + if (descriptors) { + _export({ target: 'Object', proto: true, forced: objectPrototypeAccessorsForced }, { + __lookupGetter__: function __lookupGetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor$2(O, key)) { return desc.get; } + } while (O = objectGetPrototypeOf(O)); + } + }); + } + + var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f; + + // `Object.prototype.__lookupSetter__` method + // https://tc39.github.io/ecma262/#sec-object.prototype.__lookupSetter__ + if (descriptors) { + _export({ target: 'Object', proto: true, forced: objectPrototypeAccessorsForced }, { + __lookupSetter__: function __lookupSetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor$3(O, key)) { return desc.set; } + } while (O = objectGetPrototypeOf(O)); + } + }); + } + + var slice = [].slice; + var factories = {}; + + var construct = function (C, argsLength, args) { + if (!(argsLength in factories)) { + for (var list = [], i = 0; i < argsLength; i++) { list[i] = 'a[' + i + ']'; } + // eslint-disable-next-line no-new-func + factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')'); + } return factories[argsLength](C, args); + }; + + // `Function.prototype.bind` method implementation + // https://tc39.github.io/ecma262/#sec-function.prototype.bind + var functionBind = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction$1(this); + var partArgs = slice.call(arguments, 1); + var boundFunction = function bound(/* args... */) { + var args = partArgs.concat(slice.call(arguments)); + return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args); + }; + if (isObject(fn.prototype)) { boundFunction.prototype = fn.prototype; } + return boundFunction; + }; + + // `Function.prototype.bind` method + // https://tc39.github.io/ecma262/#sec-function.prototype.bind + _export({ target: 'Function', proto: true }, { + bind: functionBind + }); + + var defineProperty$4 = objectDefineProperty.f; + + var FunctionPrototype = Function.prototype; + var FunctionPrototypeToString = FunctionPrototype.toString; + var nameRE = /^\s*function ([^ (]*)/; + var NAME = 'name'; + + // Function instances `.name` property + // https://tc39.github.io/ecma262/#sec-function-instances-name + if (descriptors && !(NAME in FunctionPrototype)) { + defineProperty$4(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return FunctionPrototypeToString.call(this).match(nameRE)[1]; + } catch (error) { + return ''; + } + } + }); + } + + var HAS_INSTANCE = wellKnownSymbol('hasInstance'); + var FunctionPrototype$1 = Function.prototype; + + // `Function.prototype[@@hasInstance]` method + // https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance + if (!(HAS_INSTANCE in FunctionPrototype$1)) { + objectDefineProperty.f(FunctionPrototype$1, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) { return false; } + if (!isObject(this.prototype)) { return O instanceof this; } + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = objectGetPrototypeOf(O)) { if (this.prototype === O) { return true; } } + return false; + } }); + } + + // `globalThis` object + // https://github.com/tc39/proposal-global + _export({ global: true }, { + globalThis: global_1 + }); + + // `Array.from` method implementation + // https://tc39.github.io/ecma262/#sec-array.from + var arrayFrom = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var index = 0; + var length, result, step, iterator, next, value; + if (mapping) { mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); } + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + next = iterator.next; + result = new C(); + for (;!(step = next.call(iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); + } + } else { + length = toLength(O.length); + result = new C(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); + } + } + result.length = index; + return result; + }; + + var ITERATOR$2 = wellKnownSymbol('iterator'); + var SAFE_CLOSING = false; + + try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR$2] = function () { + return this; + }; + // eslint-disable-next-line no-throw-literal + Array.from(iteratorWithReturn, function () { throw 2; }); + } catch (error) { /* empty */ } + + var checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) { return false; } + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR$2] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; + }; + + var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + Array.from(iterable); + }); + + // `Array.from` method + // https://tc39.github.io/ecma262/#sec-array.from + _export({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: arrayFrom + }); + + // `Array.isArray` method + // https://tc39.github.io/ecma262/#sec-array.isarray + _export({ target: 'Array', stat: true }, { + isArray: isArray + }); + + var ISNT_GENERIC = fails(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); + }); + + // `Array.of` method + // https://tc39.github.io/ecma262/#sec-array.of + // WebKit Array.of isn't generic + _export({ target: 'Array', stat: true, forced: ISNT_GENERIC }, { + of: function of(/* ...args */) { + var arguments$1 = arguments; + + var index = 0; + var argumentsLength = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(argumentsLength); + while (argumentsLength > index) { createProperty(result, index, arguments$1[index++]); } + result.length = argumentsLength; + return result; + } + }); + + var engineUserAgent = getBuiltIn('navigator', 'userAgent') || ''; + + var process$1 = global_1.process; + var versions = process$1 && process$1.versions; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; + } else if (engineUserAgent) { + match = engineUserAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = engineUserAgent.match(/Chrome\/(\d+)/); + if (match) { version = match[1]; } + } + } + + var engineV8Version = version && +version; + + var SPECIES$1 = wellKnownSymbol('species'); + + var arrayMethodHasSpeciesSupport = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return engineV8Version >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES$1] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); + }; + + var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; + var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; + + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; + }); + + var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + + var isConcatSpreadable = function (O) { + if (!isObject(O)) { return false; } + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); + }; + + var FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + + // `Array.prototype.concat` method + // https://tc39.github.io/ecma262/#sec-array.prototype.concat + // with adding support of @@isConcatSpreadable and @@species + _export({ target: 'Array', proto: true, forced: FORCED$1 }, { + concat: function concat(arg) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments$1[i]; + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) { throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); } + for (k = 0; k < len; k++, n++) { if (k in E) { createProperty(A, n, E[k]); } } + } else { + if (n >= MAX_SAFE_INTEGER) { throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); } + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } + }); + + var min$2 = Math.min; + + // `Array.prototype.copyWithin` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin + var arrayCopyWithin = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min$2((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) { O[to] = O[from]; } + else { delete O[to]; } + to += inc; + from += inc; + } return O; + }; + + var UNSCOPABLES = wellKnownSymbol('unscopables'); + var ArrayPrototype$1 = Array.prototype; + + // Array.prototype[@@unscopables] + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + if (ArrayPrototype$1[UNSCOPABLES] == undefined) { + objectDefineProperty.f(ArrayPrototype$1, UNSCOPABLES, { + configurable: true, + value: objectCreate(null) + }); + } + + // add a key to Array.prototype[@@unscopables] + var addToUnscopables = function (key) { + ArrayPrototype$1[UNSCOPABLES][key] = true; + }; + + // `Array.prototype.copyWithin` method + // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin + _export({ target: 'Array', proto: true }, { + copyWithin: arrayCopyWithin + }); + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('copyWithin'); + + var arrayMethodIsStrict = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal + method.call(null, argument || function () { throw 1; }, 1); + }); + }; + + var defineProperty$5 = Object.defineProperty; + var cache = {}; + + var thrower = function (it) { throw it; }; + + var arrayMethodUsesToLength = function (METHOD_NAME, options) { + if (has(cache, METHOD_NAME)) { return cache[METHOD_NAME]; } + if (!options) { options = {}; } + var method = [][METHOD_NAME]; + var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; + var argument0 = has(options, 0) ? options[0] : thrower; + var argument1 = has(options, 1) ? options[1] : undefined; + + return cache[METHOD_NAME] = !!method && !fails(function () { + if (ACCESSORS && !descriptors) { return true; } + var O = { length: -1 }; + + if (ACCESSORS) { defineProperty$5(O, 1, { enumerable: true, get: thrower }); } + else { O[1] = 1; } + + method.call(O, argument0, argument1); + }); + }; + + var $every = arrayIteration.every; + + + + var STRICT_METHOD = arrayMethodIsStrict('every'); + var USES_TO_LENGTH = arrayMethodUsesToLength('every'); + + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, { + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // `Array.prototype.fill` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.fill + var arrayFill = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) { O[index++] = value; } + return O; + }; + + // `Array.prototype.fill` method + // https://tc39.github.io/ecma262/#sec-array.prototype.fill + _export({ target: 'Array', proto: true }, { + fill: arrayFill + }); + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('fill'); + + var $filter = arrayIteration.filter; + + + + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + // Edge 14- issue + var USES_TO_LENGTH$1 = arrayMethodUsesToLength('filter'); + + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$1 }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var $find = arrayIteration.find; + + + + var FIND = 'find'; + var SKIPS_HOLES = true; + + var USES_TO_LENGTH$2 = arrayMethodUsesToLength(FIND); + + // Shouldn't skip holes + if (FIND in []) { Array(1)[FIND](function () { SKIPS_HOLES = false; }); } + + // `Array.prototype.find` method + // https://tc39.github.io/ecma262/#sec-array.prototype.find + _export({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH$2 }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables(FIND); + + var $findIndex = arrayIteration.findIndex; + + + + var FIND_INDEX = 'findIndex'; + var SKIPS_HOLES$1 = true; + + var USES_TO_LENGTH$3 = arrayMethodUsesToLength(FIND_INDEX); + + // Shouldn't skip holes + if (FIND_INDEX in []) { Array(1)[FIND_INDEX](function () { SKIPS_HOLES$1 = false; }); } + + // `Array.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-array.prototype.findindex + _export({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 || !USES_TO_LENGTH$3 }, { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables(FIND_INDEX); + + // `FlattenIntoArray` abstract operation + // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray + var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? functionBindContext(mapper, thisArg, 3) : false; + var element; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + if (depth > 0 && isArray(element)) { + targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 0x1FFFFFFFFFFFFF) { throw TypeError('Exceed the acceptable array length'); } + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; + }; + + var flattenIntoArray_1 = flattenIntoArray; + + // `Array.prototype.flat` method + // https://github.com/tc39/proposal-flatMap + _export({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject(this); + var sourceLen = toLength(O.length); + var A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray_1(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg)); + return A; + } + }); + + // `Array.prototype.flatMap` method + // https://github.com/tc39/proposal-flatMap + _export({ target: 'Array', proto: true }, { + flatMap: function flatMap(callbackfn /* , thisArg */) { + var O = toObject(this); + var sourceLen = toLength(O.length); + var A; + aFunction$1(callbackfn); + A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray_1(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return A; + } + }); + + var $forEach$1 = arrayIteration.forEach; + + + + var STRICT_METHOD$1 = arrayMethodIsStrict('forEach'); + var USES_TO_LENGTH$4 = arrayMethodUsesToLength('forEach'); + + // `Array.prototype.forEach` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + var arrayForEach = (!STRICT_METHOD$1 || !USES_TO_LENGTH$4) ? function forEach(callbackfn /* , thisArg */) { + return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } : [].forEach; + + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + _export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, { + forEach: arrayForEach + }); + + var $includes = arrayIncludes.includes; + + + + var USES_TO_LENGTH$5 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + + // `Array.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-array.prototype.includes + _export({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$5 }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('includes'); + + var $indexOf = arrayIncludes.indexOf; + + + + var nativeIndexOf = [].indexOf; + + var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; + var STRICT_METHOD$2 = arrayMethodIsStrict('indexOf'); + var USES_TO_LENGTH$6 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + _export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD$2 || !USES_TO_LENGTH$6 }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var nativeJoin = [].join; + + var ES3_STRINGS = indexedObject != Object; + var STRICT_METHOD$3 = arrayMethodIsStrict('join', ','); + + // `Array.prototype.join` method + // https://tc39.github.io/ecma262/#sec-array.prototype.join + _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$3 }, { + join: function join(separator) { + return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); + } + }); + + var min$3 = Math.min; + var nativeLastIndexOf = [].lastIndexOf; + var NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; + var STRICT_METHOD$4 = arrayMethodIsStrict('lastIndexOf'); + // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method + var USES_TO_LENGTH$7 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + var FORCED$2 = NEGATIVE_ZERO$1 || !STRICT_METHOD$4 || !USES_TO_LENGTH$7; + + // `Array.prototype.lastIndexOf` method implementation + // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof + var arrayLastIndexOf = FORCED$2 ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO$1) { return nativeLastIndexOf.apply(this, arguments) || 0; } + var O = toIndexedObject(this); + var length = toLength(O.length); + var index = length - 1; + if (arguments.length > 1) { index = min$3(index, toInteger(arguments[1])); } + if (index < 0) { index = length + index; } + for (;index >= 0; index--) { if (index in O && O[index] === searchElement) { return index || 0; } } + return -1; + } : nativeLastIndexOf; + + // `Array.prototype.lastIndexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof + _export({ target: 'Array', proto: true, forced: arrayLastIndexOf !== [].lastIndexOf }, { + lastIndexOf: arrayLastIndexOf + }); + + var $map = arrayIteration.map; + + + + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('map'); + // FF49- issue + var USES_TO_LENGTH$8 = arrayMethodUsesToLength('map'); + + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$8 }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // `Array.prototype.{ reduce, reduceRight }` methods implementation + var createMethod$3 = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aFunction$1(callbackfn); + var O = toObject(that); + var self = indexedObject(O); + var length = toLength(O.length); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) { while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) { if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } } + return memo; + }; + }; + + var arrayReduce = { + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + left: createMethod$3(false), + // `Array.prototype.reduceRight` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright + right: createMethod$3(true) + }; + + var $reduce = arrayReduce.left; + + + + var STRICT_METHOD$5 = arrayMethodIsStrict('reduce'); + var USES_TO_LENGTH$9 = arrayMethodUsesToLength('reduce', { 1: 0 }); + + // `Array.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduce + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$5 || !USES_TO_LENGTH$9 }, { + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var $reduceRight = arrayReduce.right; + + + + var STRICT_METHOD$6 = arrayMethodIsStrict('reduceRight'); + // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method + var USES_TO_LENGTH$a = arrayMethodUsesToLength('reduce', { 1: 0 }); + + // `Array.prototype.reduceRight` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$6 || !USES_TO_LENGTH$a }, { + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var nativeReverse = [].reverse; + var test$1 = [1, 2]; + + // `Array.prototype.reverse` method + // https://tc39.github.io/ecma262/#sec-array.prototype.reverse + // fix for Safari 12.0 bug + // https://bugs.webkit.org/show_bug.cgi?id=188794 + _export({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.reverse()) }, { + reverse: function reverse() { + // eslint-disable-next-line no-self-assign + if (isArray(this)) { this.length = this.length; } + return nativeReverse.call(this); + } + }); + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport('slice'); + var USES_TO_LENGTH$b = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 }); + + var SPECIES$2 = wellKnownSymbol('species'); + var nativeSlice = [].slice; + var max$1 = Math.max; + + // `Array.prototype.slice` method + // https://tc39.github.io/ecma262/#sec-array.prototype.slice + // fallback for not array-like ES3 strings and DOM objects + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 || !USES_TO_LENGTH$b }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = toLength(O.length); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES$2]; + if (Constructor === null) { Constructor = undefined; } + } + if (Constructor === Array || Constructor === undefined) { + return nativeSlice.call(O, k, fin); + } + } + result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0)); + for (n = 0; k < fin; k++, n++) { if (k in O) { createProperty(result, n, O[k]); } } + result.length = n; + return result; + } + }); + + var $some = arrayIteration.some; + + + + var STRICT_METHOD$7 = arrayMethodIsStrict('some'); + var USES_TO_LENGTH$c = arrayMethodUsesToLength('some'); + + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + _export({ target: 'Array', proto: true, forced: !STRICT_METHOD$7 || !USES_TO_LENGTH$c }, { + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var test$2 = []; + var nativeSort = test$2.sort; + + // IE8- + var FAILS_ON_UNDEFINED = fails(function () { + test$2.sort(undefined); + }); + // V8 bug + var FAILS_ON_NULL = fails(function () { + test$2.sort(null); + }); + // Old WebKit + var STRICT_METHOD$8 = arrayMethodIsStrict('sort'); + + var FORCED$3 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD$8; + + // `Array.prototype.sort` method + // https://tc39.github.io/ecma262/#sec-array.prototype.sort + _export({ target: 'Array', proto: true, forced: FORCED$3 }, { + sort: function sort(comparefn) { + return comparefn === undefined + ? nativeSort.call(toObject(this)) + : nativeSort.call(toObject(this), aFunction$1(comparefn)); + } + }); + + var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport('splice'); + var USES_TO_LENGTH$d = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 }); + + var max$2 = Math.max; + var min$4 = Math.min; + var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF; + var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + + // `Array.prototype.splice` method + // https://tc39.github.io/ecma262/#sec-array.prototype.splice + // with adding support of @@species + _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 || !USES_TO_LENGTH$d }, { + splice: function splice(start, deleteCount /* , ...items */) { + var arguments$1 = arguments; + + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min$4(max$2(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) { createProperty(A, k, O[from]); } + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) { O[to] = O[from]; } + else { delete O[to]; } + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) { delete O[k - 1]; } + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) { O[to] = O[from]; } + else { delete O[to]; } + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments$1[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; + } + }); + + var SPECIES$3 = wellKnownSymbol('species'); + + var setSpecies = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = objectDefineProperty.f; + + if (descriptors && Constructor && !Constructor[SPECIES$3]) { + defineProperty(Constructor, SPECIES$3, { + configurable: true, + get: function () { return this; } + }); + } + }; + + // `Array[@@species]` getter + // https://tc39.github.io/ecma262/#sec-get-array-@@species + setSpecies('Array'); + + // this method was added to unscopables after implementation + // in popular engines, so it's moved to a separate module + + + addToUnscopables('flat'); + + // this method was added to unscopables after implementation + // in popular engines, so it's moved to a separate module + + + addToUnscopables('flatMap'); + + var ITERATOR$3 = wellKnownSymbol('iterator'); + var BUGGY_SAFARI_ITERATORS = false; + + var returnThis = function () { return this; }; + + // `%IteratorPrototype%` object + // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object + var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + + if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) { BUGGY_SAFARI_ITERATORS = true; } + else { + PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) { IteratorPrototype = PrototypeOfArrayIteratorPrototype; } + } + } + + if (IteratorPrototype == undefined) { IteratorPrototype = {}; } + + // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() + if ( !has(IteratorPrototype, ITERATOR$3)) { + createNonEnumerableProperty(IteratorPrototype, ITERATOR$3, returnThis); + } + + var iteratorsCore = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS + }; + + var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; + + + + + + var returnThis$1 = function () { return this; }; + + var createIteratorConstructor = function (IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false); + iterators[TO_STRING_TAG] = returnThis$1; + return IteratorConstructor; + }; + + var IteratorPrototype$2 = iteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR$4 = wellKnownSymbol('iterator'); + var KEYS = 'keys'; + var VALUES = 'values'; + var ENTRIES = 'entries'; + + var returnThis$2 = function () { return this; }; + + var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) { return defaultIterator; } + if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) { return IterablePrototype[KIND]; } + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR$4] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) { + if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) { + if (objectSetPrototypeOf) { + objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2); + } else if (typeof CurrentIteratorPrototype[ITERATOR$4] != 'function') { + createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$4, returnThis$2); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true); + } + } + + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return nativeIterator.call(this); }; + } + + // define iterator + if ( IterablePrototype[ITERATOR$4] !== defaultIterator) { + createNonEnumerableProperty(IterablePrototype, ITERATOR$4, defaultIterator); + } + iterators[NAME] = defaultIterator; + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) { for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } } else { _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods); } + } + + return methods; + }; + + var ARRAY_ITERATOR = 'Array Iterator'; + var setInternalState$1 = internalState.set; + var getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR); + + // `Array.prototype.entries` method + // https://tc39.github.io/ecma262/#sec-array.prototype.entries + // `Array.prototype.keys` method + // https://tc39.github.io/ecma262/#sec-array.prototype.keys + // `Array.prototype.values` method + // https://tc39.github.io/ecma262/#sec-array.prototype.values + // `Array.prototype[@@iterator]` method + // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator + // `CreateArrayIterator` internal method + // https://tc39.github.io/ecma262/#sec-createarrayiterator + var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState$1(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); + // `%ArrayIteratorPrototype%.next` method + // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next + }, function () { + var state = getInternalState$1(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') { return { value: index, done: false }; } + if (kind == 'values') { return { value: target[index], done: false }; } + return { value: [index, target[index]], done: false }; + }, 'values'); + + // argumentsList[@@iterator] is %ArrayProto_values% + // https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject + // https://tc39.github.io/ecma262/#sec-createmappedargumentsobject + iterators.Arguments = iterators.Array; + + // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('keys'); + addToUnscopables('values'); + addToUnscopables('entries'); + + var fromCharCode = String.fromCharCode; + var nativeFromCodePoint = String.fromCodePoint; + + // length should be 1, old FF problem + var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; + + // `String.fromCodePoint` method + // https://tc39.github.io/ecma262/#sec-string.fromcodepoint + _export({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, { + fromCodePoint: function fromCodePoint(x) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var elements = []; + var length = arguments.length; + var i = 0; + var code; + while (length > i) { + code = +arguments$1[i++]; + if (toAbsoluteIndex(code, 0x10FFFF) !== code) { throw RangeError(code + ' is not a valid code point'); } + elements.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00) + ); + } return elements.join(''); + } + }); + + // `String.raw` method + // https://tc39.github.io/ecma262/#sec-string.raw + _export({ target: 'String', stat: true }, { + raw: function raw(template) { + var arguments$1 = arguments; + + var rawTemplate = toIndexedObject(template.raw); + var literalSegments = toLength(rawTemplate.length); + var argumentsLength = arguments.length; + var elements = []; + var i = 0; + while (literalSegments > i) { + elements.push(String(rawTemplate[i++])); + if (i < argumentsLength) { elements.push(String(arguments$1[i])); } + } return elements.join(''); + } + }); + + // `String.prototype.{ codePointAt, at }` methods implementation + var createMethod$4 = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) { return CONVERT_TO_STRING ? '' : undefined; } + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; + }; + + var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$4(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$4(true) + }; + + var codeAt = stringMultibyte.codeAt; + + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + _export({ target: 'String', proto: true }, { + codePointAt: function codePointAt(pos) { + return codeAt(this, pos); + } + }); + + var MATCH = wellKnownSymbol('match'); + + // `IsRegExp` abstract operation + // https://tc39.github.io/ecma262/#sec-isregexp + var isRegexp = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp'); + }; + + var notARegexp = function (it) { + if (isRegexp(it)) { + throw TypeError("The method doesn't accept regular expressions"); + } return it; + }; + + var MATCH$1 = wellKnownSymbol('match'); + + var correctIsRegexpLogic = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (e) { + try { + regexp[MATCH$1] = false; + return '/./'[METHOD_NAME](regexp); + } catch (f) { /* empty */ } + } return false; + }; + + var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f; + + + + + + + var nativeEndsWith = ''.endsWith; + var min$5 = Math.min; + + var CORRECT_IS_REGEXP_LOGIC = correctIsRegexpLogic('endsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor$4(String.prototype, 'endsWith'); + return descriptor && !descriptor.writable; + }(); + + // `String.prototype.endsWith` method + // https://tc39.github.io/ecma262/#sec-string.prototype.endswith + _export({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = String(requireObjectCoercible(this)); + notARegexp(searchString); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : min$5(toLength(endPosition), len); + var search = String(searchString); + return nativeEndsWith + ? nativeEndsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } + }); + + // `String.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-string.prototype.includes + _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~String(requireObjectCoercible(this)) + .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // `RegExp.prototype.flags` getter implementation + // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags + var regexpFlags = function () { + var that = anObject(this); + var result = ''; + if (that.global) { result += 'g'; } + if (that.ignoreCase) { result += 'i'; } + if (that.multiline) { result += 'm'; } + if (that.dotAll) { result += 's'; } + if (that.unicode) { result += 'u'; } + if (that.sticky) { result += 'y'; } + return result; + }; + + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, + // so we use an intermediate function. + function RE(s, f) { + return RegExp(s, f); + } + + var UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; + }); + + var BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; + }); + + var regexpStickyHelpers = { + UNSUPPORTED_Y: UNSUPPORTED_Y, + BROKEN_CARET: BROKEN_CARET + }; + + var nativeExec = RegExp.prototype.exec; + // This always refers to the native implementation, because the + // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, + // which loads this file before patching the method. + var nativeReplace = String.prototype.replace; + + var patchedExec = nativeExec; + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1; + + if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y$1 && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) { lastIndex = re.lastIndex; } + + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else { re.lastIndex = 0; } + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + var arguments$1 = arguments; + + for (i = 1; i < arguments.length - 2; i++) { + if (arguments$1[i] === undefined) { match[i] = undefined; } + } + }); + } + + return match; + }; + } + + var regexpExec = patchedExec; + + _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, { + exec: regexpExec + }); + + // TODO: Remove from `core-js@4` since it's moved to entry points + + + + + + + + var SPECIES$4 = wellKnownSymbol('species'); + + var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; + }); + + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + return 'a'.replace(/./, '$0') === '$0'; + })(); + + var REPLACE = wellKnownSymbol('replace'); + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; + })(); + + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + // Weex JS has frozen built-in prototypes, so use try / catch wrapper + var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; + }); + + var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES$4] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { execCalled = true; return null; }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !( + REPLACE_SUPPORTS_NAMED_GROUPS && + REPLACE_KEEPS_$0 && + !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + )) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + }); + var stringMethod = methods[0]; + var regexMethod = methods[1]; + + redefine(String.prototype, KEY, stringMethod); + redefine(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return regexMethod.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return regexMethod.call(string, this); } + ); + } + + if (sham) { createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); } + }; + + var charAt = stringMultibyte.charAt; + + // `AdvanceStringIndex` abstract operation + // https://tc39.github.io/ecma262/#sec-advancestringindex + var advanceStringIndex = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); + }; + + // `RegExpExec` abstract operation + // https://tc39.github.io/ecma262/#sec-regexpexec + var regexpExecAbstract = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + + if (classofRaw(R) !== 'RegExp') { + throw TypeError('RegExp#exec called on incompatible receiver'); + } + + return regexpExec.call(R, S); + }; + + // @@match logic + fixRegexpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = regexp == undefined ? undefined : regexp[MATCH]; + return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative(nativeMatch, regexp, this); + if (res.done) { return res.value; } + + var rx = anObject(regexp); + var S = String(this); + + if (!rx.global) { return regexpExecAbstract(rx, S); } + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regexpExecAbstract(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') { rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } + n++; + } + return n === 0 ? null : A; + } + ]; + }); + + var SPECIES$5 = wellKnownSymbol('species'); + + // `SpeciesConstructor` abstract operation + // https://tc39.github.io/ecma262/#sec-speciesconstructor + var speciesConstructor = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES$5]) == undefined ? defaultConstructor : aFunction$1(S); + }; + + var MATCH_ALL = wellKnownSymbol('matchAll'); + var REGEXP_STRING = 'RegExp String'; + var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator'; + var setInternalState$2 = internalState.set; + var getInternalState$2 = internalState.getterFor(REGEXP_STRING_ITERATOR); + var RegExpPrototype = RegExp.prototype; + var regExpBuiltinExec = RegExpPrototype.exec; + var nativeMatchAll = ''.matchAll; + + var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () { + 'a'.matchAll(/./); + }); + + var regExpExec = function (R, S) { + var exec = R.exec; + var result; + if (typeof exec == 'function') { + result = exec.call(R, S); + if (typeof result != 'object') { throw TypeError('Incorrect exec result'); } + return result; + } return regExpBuiltinExec.call(R, S); + }; + + // eslint-disable-next-line max-len + var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) { + setInternalState$2(this, { + type: REGEXP_STRING_ITERATOR, + regexp: regexp, + string: string, + global: global, + unicode: fullUnicode, + done: false + }); + }, REGEXP_STRING, function next() { + var state = getInternalState$2(this); + if (state.done) { return { value: undefined, done: true }; } + var R = state.regexp; + var S = state.string; + var match = regExpExec(R, S); + if (match === null) { return { value: undefined, done: state.done = true }; } + if (state.global) { + if (String(match[0]) == '') { R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode); } + return { value: match, done: false }; + } + state.done = true; + return { value: match, done: false }; + }); + + var $matchAll = function (string) { + var R = anObject(this); + var S = String(string); + var C, flagsValue, flags, matcher, global, fullUnicode; + C = speciesConstructor(R, RegExp); + flagsValue = R.flags; + if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) { + flagsValue = regexpFlags.call(R); + } + flags = flagsValue === undefined ? '' : String(flagsValue); + matcher = new C(C === RegExp ? R.source : R, flags); + global = !!~flags.indexOf('g'); + fullUnicode = !!~flags.indexOf('u'); + matcher.lastIndex = toLength(R.lastIndex); + return new $RegExpStringIterator(matcher, S, global, fullUnicode); + }; + + // `String.prototype.matchAll` method + // https://github.com/tc39/proposal-string-matchall + _export({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, { + matchAll: function matchAll(regexp) { + var O = requireObjectCoercible(this); + var flags, S, matcher, rx; + if (regexp != null) { + if (isRegexp(regexp)) { + flags = String(requireObjectCoercible('flags' in RegExpPrototype + ? regexp.flags + : regexpFlags.call(regexp) + )); + if (!~flags.indexOf('g')) { throw TypeError('`.matchAll` does not allow non-global regexes'); } + } + if (WORKS_WITH_NON_GLOBAL_REGEX) { return nativeMatchAll.apply(O, arguments); } + matcher = regexp[MATCH_ALL]; + if (matcher === undefined && isPure && classofRaw(regexp) == 'RegExp') { matcher = $matchAll; } + if (matcher != null) { return aFunction$1(matcher).call(regexp, O); } + } else if (WORKS_WITH_NON_GLOBAL_REGEX) { return nativeMatchAll.apply(O, arguments); } + S = String(O); + rx = new RegExp(regexp, 'g'); + return rx[MATCH_ALL](S); + } + }); + + MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll); + + // `String.prototype.repeat` method implementation + // https://tc39.github.io/ecma262/#sec-string.prototype.repeat + var stringRepeat = ''.repeat || function repeat(count) { + var str = String(requireObjectCoercible(this)); + var result = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) { throw RangeError('Wrong number of repetitions'); } + for (;n > 0; (n >>>= 1) && (str += str)) { if (n & 1) { result += str; } } + return result; + }; + + // https://github.com/tc39/proposal-string-pad-start-end + + + + + var ceil$1 = Math.ceil; + + // `String.prototype.{ padStart, padEnd }` methods implementation + var createMethod$5 = function (IS_END) { + return function ($this, maxLength, fillString) { + var S = String(requireObjectCoercible($this)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + var fillLen, stringFiller; + if (intMaxLength <= stringLength || fillStr == '') { return S; } + fillLen = intMaxLength - stringLength; + stringFiller = stringRepeat.call(fillStr, ceil$1(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) { stringFiller = stringFiller.slice(0, fillLen); } + return IS_END ? S + stringFiller : stringFiller + S; + }; + }; + + var stringPad = { + // `String.prototype.padStart` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padstart + start: createMethod$5(false), + // `String.prototype.padEnd` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padend + end: createMethod$5(true) + }; + + // https://github.com/zloirock/core-js/issues/280 + + + // eslint-disable-next-line unicorn/no-unsafe-regex + var stringPadWebkitBug = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(engineUserAgent); + + var $padEnd = stringPad.end; + + + // `String.prototype.padEnd` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padend + _export({ target: 'String', proto: true, forced: stringPadWebkitBug }, { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var $padStart = stringPad.start; + + + // `String.prototype.padStart` method + // https://tc39.github.io/ecma262/#sec-string.prototype.padstart + _export({ target: 'String', proto: true, forced: stringPadWebkitBug }, { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // `String.prototype.repeat` method + // https://tc39.github.io/ecma262/#sec-string.prototype.repeat + _export({ target: 'String', proto: true }, { + repeat: stringRepeat + }); + + var max$3 = Math.max; + var min$6 = Math.min; + var floor$1 = Math.floor; + var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; + var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; + + var maybeToString = function (it) { + return it === undefined ? it : String(it); + }; + + // @@replace logic + fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; + return replacer !== undefined + ? replacer.call(searchValue, O, replaceValue) + : nativeReplace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + if ( + (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) || + (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) + ) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) { return res.value; } + } + + var rx = anObject(regexp); + var S = String(this); + + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) { replaceValue = String(replaceValue); } + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regexpExecAbstract(rx, S); + if (result === null) { break; } + + results.push(result); + if (!global) { break; } + + var matchStr = String(result[0]); + if (matchStr === '') { rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = String(result[0]); + var position = max$3(min$6(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) { captures.push(maybeToString(result[j])); } + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) { replacerArgs.push(namedCaptures); } + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return nativeReplace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) { return match; } + if (n > m) { + var f = floor$1(n / 10); + if (f === 0) { return match; } + if (f <= m) { return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); } + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } + }); + + // @@search logic + fixRegexpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.github.io/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible(this); + var searcher = regexp == undefined ? undefined : regexp[SEARCH]; + return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search + function (regexp) { + var res = maybeCallNative(nativeSearch, regexp, this); + if (res.done) { return res.value; } + + var rx = anObject(regexp); + var S = String(this); + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) { rx.lastIndex = 0; } + var result = regexpExecAbstract(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) { rx.lastIndex = previousLastIndex; } + return result === null ? -1 : result.index; + } + ]; + }); + + var arrayPush = [].push; + var min$7 = Math.min; + var MAX_UINT32 = 0xFFFFFFFF; + + // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError + var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); + + // @@split logic + fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] == 'c' || + 'test'.split(/(?:)/, -1).length != 4 || + 'ab'.split(/(?:ab)*/).length != 2 || + '.'.split(/(.?)(.?)/).length != 4 || + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) { return []; } + if (separator === undefined) { return [string]; } + // If `separator` is not a regex, use native split + if (!isRegexp(separator)) { + return nativeSplit.call(string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) { arrayPush.apply(output, match.slice(1)); } + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) { break; } + } + if (separatorCopy.lastIndex === match.index) { separatorCopy.lastIndex++; } // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !separatorCopy.test('')) { output.push(''); } + } else { output.push(string.slice(lastLastIndex)); } + return output.length > lim ? output.slice(0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); + }; + } else { internalSplit = nativeSplit; } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); + if (res.done) { return res.value; } + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) { return []; } + if (S.length === 0) { return regexpExecAbstract(splitter, S) === null ? [S] : []; } + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = min$7(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) { return A; } + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) { return A; } + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; + } + ]; + }, !SUPPORTS_Y); + + var getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor.f; + + + + + + + var nativeStartsWith = ''.startsWith; + var min$8 = Math.min; + + var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegexpLogic('startsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function () { + var descriptor = getOwnPropertyDescriptor$5(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; + }(); + + // `String.prototype.startsWith` method + // https://tc39.github.io/ecma262/#sec-string.prototype.startswith + _export({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1 }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = String(requireObjectCoercible(this)); + notARegexp(searchString); + var index = toLength(min$8(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return nativeStartsWith + ? nativeStartsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } + }); + + // a string of all valid unicode whitespaces + // eslint-disable-next-line max-len + var whitespaces = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + var whitespace = '[' + whitespaces + ']'; + var ltrim = RegExp('^' + whitespace + whitespace + '*'); + var rtrim = RegExp(whitespace + whitespace + '*$'); + + // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation + var createMethod$6 = function (TYPE) { + return function ($this) { + var string = String(requireObjectCoercible($this)); + if (TYPE & 1) { string = string.replace(ltrim, ''); } + if (TYPE & 2) { string = string.replace(rtrim, ''); } + return string; + }; + }; + + var stringTrim = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart + start: createMethod$6(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimend + end: createMethod$6(2), + // `String.prototype.trim` method + // https://tc39.github.io/ecma262/#sec-string.prototype.trim + trim: createMethod$6(3) + }; + + var non = '\u200B\u0085\u180E'; + + // check that a method works with the correct list + // of whitespaces and has a correct name + var stringTrimForced = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; + }); + }; + + var $trim = stringTrim.trim; + + + // `String.prototype.trim` method + // https://tc39.github.io/ecma262/#sec-string.prototype.trim + _export({ target: 'String', proto: true, forced: stringTrimForced('trim') }, { + trim: function trim() { + return $trim(this); + } + }); + + var $trimStart = stringTrim.start; + + + var FORCED$4 = stringTrimForced('trimStart'); + + var trimStart = FORCED$4 ? function trimStart() { + return $trimStart(this); + } : ''.trimStart; + + // `String.prototype.{ trimStart, trimLeft }` methods + // https://github.com/tc39/ecmascript-string-left-right-trim + _export({ target: 'String', proto: true, forced: FORCED$4 }, { + trimStart: trimStart, + trimLeft: trimStart + }); + + var $trimEnd = stringTrim.end; + + + var FORCED$5 = stringTrimForced('trimEnd'); + + var trimEnd = FORCED$5 ? function trimEnd() { + return $trimEnd(this); + } : ''.trimEnd; + + // `String.prototype.{ trimEnd, trimRight }` methods + // https://github.com/tc39/ecmascript-string-left-right-trim + _export({ target: 'String', proto: true, forced: FORCED$5 }, { + trimEnd: trimEnd, + trimRight: trimEnd + }); + + var charAt$1 = stringMultibyte.charAt; + + + + var STRING_ITERATOR = 'String Iterator'; + var setInternalState$3 = internalState.set; + var getInternalState$3 = internalState.getterFor(STRING_ITERATOR); + + // `String.prototype[@@iterator]` method + // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator + defineIterator(String, 'String', function (iterated) { + setInternalState$3(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); + // `%StringIteratorPrototype%.next` method + // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next + }, function next() { + var state = getInternalState$3(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) { return { value: undefined, done: true }; } + point = charAt$1(string, index); + state.index += point.length; + return { value: point, done: false }; + }); + + var quot = /"/g; + + // B.2.3.2.1 CreateHTML(string, tag, attribute, value) + // https://tc39.github.io/ecma262/#sec-createhtml + var createHtml = function (string, tag, attribute, value) { + var S = String(requireObjectCoercible(string)); + var p1 = '<' + tag; + if (attribute !== '') { p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; } + return p1 + '>' + S + ''; + }; + + // check the existence of a method, lowercase + // of a tag and escaping quotes in arguments + var stringHtmlForced = function (METHOD_NAME) { + return fails(function () { + var test = ''[METHOD_NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }); + }; + + // `String.prototype.anchor` method + // https://tc39.github.io/ecma262/#sec-string.prototype.anchor + _export({ target: 'String', proto: true, forced: stringHtmlForced('anchor') }, { + anchor: function anchor(name) { + return createHtml(this, 'a', 'name', name); + } + }); + + // `String.prototype.big` method + // https://tc39.github.io/ecma262/#sec-string.prototype.big + _export({ target: 'String', proto: true, forced: stringHtmlForced('big') }, { + big: function big() { + return createHtml(this, 'big', '', ''); + } + }); + + // `String.prototype.blink` method + // https://tc39.github.io/ecma262/#sec-string.prototype.blink + _export({ target: 'String', proto: true, forced: stringHtmlForced('blink') }, { + blink: function blink() { + return createHtml(this, 'blink', '', ''); + } + }); + + // `String.prototype.bold` method + // https://tc39.github.io/ecma262/#sec-string.prototype.bold + _export({ target: 'String', proto: true, forced: stringHtmlForced('bold') }, { + bold: function bold() { + return createHtml(this, 'b', '', ''); + } + }); + + // `String.prototype.fixed` method + // https://tc39.github.io/ecma262/#sec-string.prototype.fixed + _export({ target: 'String', proto: true, forced: stringHtmlForced('fixed') }, { + fixed: function fixed() { + return createHtml(this, 'tt', '', ''); + } + }); + + // `String.prototype.fontcolor` method + // https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor + _export({ target: 'String', proto: true, forced: stringHtmlForced('fontcolor') }, { + fontcolor: function fontcolor(color) { + return createHtml(this, 'font', 'color', color); + } + }); + + // `String.prototype.fontsize` method + // https://tc39.github.io/ecma262/#sec-string.prototype.fontsize + _export({ target: 'String', proto: true, forced: stringHtmlForced('fontsize') }, { + fontsize: function fontsize(size) { + return createHtml(this, 'font', 'size', size); + } + }); + + // `String.prototype.italics` method + // https://tc39.github.io/ecma262/#sec-string.prototype.italics + _export({ target: 'String', proto: true, forced: stringHtmlForced('italics') }, { + italics: function italics() { + return createHtml(this, 'i', '', ''); + } + }); + + // `String.prototype.link` method + // https://tc39.github.io/ecma262/#sec-string.prototype.link + _export({ target: 'String', proto: true, forced: stringHtmlForced('link') }, { + link: function link(url) { + return createHtml(this, 'a', 'href', url); + } + }); + + // `String.prototype.small` method + // https://tc39.github.io/ecma262/#sec-string.prototype.small + _export({ target: 'String', proto: true, forced: stringHtmlForced('small') }, { + small: function small() { + return createHtml(this, 'small', '', ''); + } + }); + + // `String.prototype.strike` method + // https://tc39.github.io/ecma262/#sec-string.prototype.strike + _export({ target: 'String', proto: true, forced: stringHtmlForced('strike') }, { + strike: function strike() { + return createHtml(this, 'strike', '', ''); + } + }); + + // `String.prototype.sub` method + // https://tc39.github.io/ecma262/#sec-string.prototype.sub + _export({ target: 'String', proto: true, forced: stringHtmlForced('sub') }, { + sub: function sub() { + return createHtml(this, 'sub', '', ''); + } + }); + + // `String.prototype.sup` method + // https://tc39.github.io/ecma262/#sec-string.prototype.sup + _export({ target: 'String', proto: true, forced: stringHtmlForced('sup') }, { + sup: function sup() { + return createHtml(this, 'sup', '', ''); + } + }); + + // makes subclassing work correct for wrapped built-ins + var inheritIfRequired = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + objectSetPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + typeof (NewTarget = dummy.constructor) == 'function' && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) { objectSetPrototypeOf($this, NewTargetPrototype); } + return $this; + }; + + var defineProperty$6 = objectDefineProperty.f; + var getOwnPropertyNames = objectGetOwnPropertyNames.f; + + + + + + var setInternalState$4 = internalState.set; + + + + var MATCH$2 = wellKnownSymbol('match'); + var NativeRegExp = global_1.RegExp; + var RegExpPrototype$1 = NativeRegExp.prototype; + var re1 = /a/g; + var re2 = /a/g; + + // "new" should create a new object, old webkit bug + var CORRECT_NEW = new NativeRegExp(re1) !== re1; + + var UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y; + + var FORCED$6 = descriptors && isForced_1('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y$2 || fails(function () { + re2[MATCH$2] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; + }))); + + // `RegExp` constructor + // https://tc39.github.io/ecma262/#sec-regexp-constructor + if (FORCED$6) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = this instanceof RegExpWrapper; + var patternIsRegExp = isRegexp(pattern); + var flagsAreUndefined = flags === undefined; + var sticky; + + if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) { + return pattern; + } + + if (CORRECT_NEW) { + if (patternIsRegExp && !flagsAreUndefined) { pattern = pattern.source; } + } else if (pattern instanceof RegExpWrapper) { + if (flagsAreUndefined) { flags = regexpFlags.call(pattern); } + pattern = pattern.source; + } + + if (UNSUPPORTED_Y$2) { + sticky = !!flags && flags.indexOf('y') > -1; + if (sticky) { flags = flags.replace(/y/g, ''); } + } + + var result = inheritIfRequired( + CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags), + thisIsRegExp ? this : RegExpPrototype$1, + RegExpWrapper + ); + + if (UNSUPPORTED_Y$2 && sticky) { setInternalState$4(result, { sticky: sticky }); } + + return result; + }; + var proxy = function (key) { + key in RegExpWrapper || defineProperty$6(RegExpWrapper, key, { + configurable: true, + get: function () { return NativeRegExp[key]; }, + set: function (it) { NativeRegExp[key] = it; } + }); + }; + var keys$1 = getOwnPropertyNames(NativeRegExp); + var index = 0; + while (keys$1.length > index) { proxy(keys$1[index++]); } + RegExpPrototype$1.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype$1; + redefine(global_1, 'RegExp', RegExpWrapper); + } + + // https://tc39.github.io/ecma262/#sec-get-regexp-@@species + setSpecies('RegExp'); + + var UNSUPPORTED_Y$3 = regexpStickyHelpers.UNSUPPORTED_Y; + + // `RegExp.prototype.flags` getter + // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags + if (descriptors && (/./g.flags != 'g' || UNSUPPORTED_Y$3)) { + objectDefineProperty.f(RegExp.prototype, 'flags', { + configurable: true, + get: regexpFlags + }); + } + + var UNSUPPORTED_Y$4 = regexpStickyHelpers.UNSUPPORTED_Y; + var defineProperty$7 = objectDefineProperty.f; + var getInternalState$4 = internalState.get; + var RegExpPrototype$2 = RegExp.prototype; + + // `RegExp.prototype.sticky` getter + if (descriptors && UNSUPPORTED_Y$4) { + defineProperty$7(RegExp.prototype, 'sticky', { + configurable: true, + get: function () { + if (this === RegExpPrototype$2) { return undefined; } + // We can't use InternalStateModule.getterFor because + // we don't add metadata for regexps created by a literal. + if (this instanceof RegExp) { + return !!getInternalState$4(this).sticky; + } + throw TypeError('Incompatible receiver, RegExp required'); + } + }); + } + + // TODO: Remove from `core-js@4` since it's moved to entry points + + + + + var DELEGATES_TO_EXEC = function () { + var execCalled = false; + var re = /[ac]/; + re.exec = function () { + execCalled = true; + return /./.exec.apply(this, arguments); + }; + return re.test('abc') === true && execCalled; + }(); + + var nativeTest = /./.test; + + _export({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, { + test: function (str) { + if (typeof this.exec !== 'function') { + return nativeTest.call(this, str); + } + var result = this.exec(str); + if (result !== null && !isObject(result)) { + throw new Error('RegExp exec method returned something other than an Object or null'); + } + return !!result; + } + }); + + var TO_STRING = 'toString'; + var RegExpPrototype$3 = RegExp.prototype; + var nativeToString = RegExpPrototype$3[TO_STRING]; + + var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); + // FF44- RegExp#toString has a wrong name + var INCORRECT_NAME = nativeToString.name != TO_STRING; + + // `RegExp.prototype.toString` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring + if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype$3) ? regexpFlags.call(R) : rf); + return '/' + p + '/' + f; + }, { unsafe: true }); + } + + var trim = stringTrim.trim; + + + var $parseInt = global_1.parseInt; + var hex = /^[+-]?0[Xx]/; + var FORCED$7 = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22; + + // `parseInt` method + // https://tc39.github.io/ecma262/#sec-parseint-string-radix + var numberParseInt = FORCED$7 ? function parseInt(string, radix) { + var S = trim(String(string)); + return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10)); + } : $parseInt; + + // `parseInt` method + // https://tc39.github.io/ecma262/#sec-parseint-string-radix + _export({ global: true, forced: parseInt != numberParseInt }, { + parseInt: numberParseInt + }); + + var trim$1 = stringTrim.trim; + + + var $parseFloat = global_1.parseFloat; + var FORCED$8 = 1 / $parseFloat(whitespaces + '-0') !== -Infinity; + + // `parseFloat` method + // https://tc39.github.io/ecma262/#sec-parsefloat-string + var numberParseFloat = FORCED$8 ? function parseFloat(string) { + var trimmedString = trim$1(String(string)); + var result = $parseFloat(trimmedString); + return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; + } : $parseFloat; + + // `parseFloat` method + // https://tc39.github.io/ecma262/#sec-parsefloat-string + _export({ global: true, forced: parseFloat != numberParseFloat }, { + parseFloat: numberParseFloat + }); + + var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var getOwnPropertyDescriptor$6 = objectGetOwnPropertyDescriptor.f; + var defineProperty$8 = objectDefineProperty.f; + var trim$2 = stringTrim.trim; + + var NUMBER = 'Number'; + var NativeNumber = global_1[NUMBER]; + var NumberPrototype = NativeNumber.prototype; + + // Opera ~12 has broken Object#toString + var BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER; + + // `ToNumber` abstract operation + // https://tc39.github.io/ecma262/#sec-tonumber + var toNumber = function (argument) { + var it = toPrimitive(argument, false); + var first, third, radix, maxCode, digits, length, index, code; + if (typeof it == 'string' && it.length > 2) { + it = trim$2(it); + first = it.charCodeAt(0); + if (first === 43 || first === 45) { + third = it.charCodeAt(2); + if (third === 88 || third === 120) { return NaN; } // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (it.charCodeAt(1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i + default: return +it; + } + digits = it.slice(2); + length = digits.length; + for (index = 0; index < length; index++) { + code = digits.charCodeAt(index); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) { return NaN; } + } return parseInt(digits, radix); + } + } return +it; + }; + + // `Number` constructor + // https://tc39.github.io/ecma262/#sec-number-constructor + if (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { + var NumberWrapper = function Number(value) { + var it = arguments.length < 1 ? 0 : value; + var dummy = this; + return dummy instanceof NumberWrapper + // check on 1..constructor(foo) case + && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER) + ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); + }; + for (var keys$2 = descriptors ? getOwnPropertyNames$1(NativeNumber) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES2015 (in case, if modules with ES2015 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys$2.length > j; j++) { + if (has(NativeNumber, key = keys$2[j]) && !has(NumberWrapper, key)) { + defineProperty$8(NumberWrapper, key, getOwnPropertyDescriptor$6(NativeNumber, key)); + } + } + NumberWrapper.prototype = NumberPrototype; + NumberPrototype.constructor = NumberWrapper; + redefine(global_1, NUMBER, NumberWrapper); + } + + // `Number.EPSILON` constant + // https://tc39.github.io/ecma262/#sec-number.epsilon + _export({ target: 'Number', stat: true }, { + EPSILON: Math.pow(2, -52) + }); + + var globalIsFinite = global_1.isFinite; + + // `Number.isFinite` method + // https://tc39.github.io/ecma262/#sec-number.isfinite + var numberIsFinite = Number.isFinite || function isFinite(it) { + return typeof it == 'number' && globalIsFinite(it); + }; + + // `Number.isFinite` method + // https://tc39.github.io/ecma262/#sec-number.isfinite + _export({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); + + var floor$2 = Math.floor; + + // `Number.isInteger` method implementation + // https://tc39.github.io/ecma262/#sec-number.isinteger + var isInteger = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor$2(it) === it; + }; + + // `Number.isInteger` method + // https://tc39.github.io/ecma262/#sec-number.isinteger + _export({ target: 'Number', stat: true }, { + isInteger: isInteger + }); + + // `Number.isNaN` method + // https://tc39.github.io/ecma262/#sec-number.isnan + _export({ target: 'Number', stat: true }, { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } + }); + + var abs = Math.abs; + + // `Number.isSafeInteger` method + // https://tc39.github.io/ecma262/#sec-number.issafeinteger + _export({ target: 'Number', stat: true }, { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; + } + }); + + // `Number.MAX_SAFE_INTEGER` constant + // https://tc39.github.io/ecma262/#sec-number.max_safe_integer + _export({ target: 'Number', stat: true }, { + MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF + }); + + // `Number.MIN_SAFE_INTEGER` constant + // https://tc39.github.io/ecma262/#sec-number.min_safe_integer + _export({ target: 'Number', stat: true }, { + MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF + }); + + // `Number.parseFloat` method + // https://tc39.github.io/ecma262/#sec-number.parseFloat + _export({ target: 'Number', stat: true, forced: Number.parseFloat != numberParseFloat }, { + parseFloat: numberParseFloat + }); + + // `Number.parseInt` method + // https://tc39.github.io/ecma262/#sec-number.parseint + _export({ target: 'Number', stat: true, forced: Number.parseInt != numberParseInt }, { + parseInt: numberParseInt + }); + + // `thisNumberValue` abstract operation + // https://tc39.github.io/ecma262/#sec-thisnumbervalue + var thisNumberValue = function (value) { + if (typeof value != 'number' && classofRaw(value) != 'Number') { + throw TypeError('Incorrect invocation'); + } + return +value; + }; + + var nativeToFixed = 1.0.toFixed; + var floor$3 = Math.floor; + + var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); + }; + + var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; + }; + + var FORCED$9 = nativeToFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' + ) || !fails(function () { + // V8 ~ Android 4.3- + nativeToFixed.call({}); + }); + + // `Number.prototype.toFixed` method + // https://tc39.github.io/ecma262/#sec-number.prototype.tofixed + _export({ target: 'Number', proto: true, forced: FORCED$9 }, { + // eslint-disable-next-line max-statements + toFixed: function toFixed(fractionDigits) { + var number = thisNumberValue(this); + var fractDigits = toInteger(fractionDigits); + var data = [0, 0, 0, 0, 0, 0]; + var sign = ''; + var result = '0'; + var e, z, j, k; + + var multiply = function (n, c) { + var index = -1; + var c2 = c; + while (++index < 6) { + c2 += n * data[index]; + data[index] = c2 % 1e7; + c2 = floor$3(c2 / 1e7); + } + }; + + var divide = function (n) { + var index = 6; + var c = 0; + while (--index >= 0) { + c += data[index]; + data[index] = floor$3(c / n); + c = (c % n) * 1e7; + } + }; + + var dataToString = function () { + var index = 6; + var s = ''; + while (--index >= 0) { + if (s !== '' || index === 0 || data[index] !== 0) { + var t = String(data[index]); + s = s === '' ? t : s + stringRepeat.call('0', 7 - t.length) + t; + } + } return s; + }; + + if (fractDigits < 0 || fractDigits > 20) { throw RangeError('Incorrect fraction digits'); } + // eslint-disable-next-line no-self-compare + if (number != number) { return 'NaN'; } + if (number <= -1e21 || number >= 1e21) { return String(number); } + if (number < 0) { + sign = '-'; + number = -number; + } + if (number > 1e-21) { + e = log(number * pow(2, 69, 1)) - 69; + z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = fractDigits; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + result = dataToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + result = dataToString() + stringRepeat.call('0', fractDigits); + } + } + if (fractDigits > 0) { + k = result.length; + result = sign + (k <= fractDigits + ? '0.' + stringRepeat.call('0', fractDigits - k) + result + : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); + } else { + result = sign + result; + } return result; + } + }); + + var nativeToPrecision = 1.0.toPrecision; + + var FORCED$a = fails(function () { + // IE7- + return nativeToPrecision.call(1, undefined) !== '1'; + }) || !fails(function () { + // V8 ~ Android 4.3- + nativeToPrecision.call({}); + }); + + // `Number.prototype.toPrecision` method + // https://tc39.github.io/ecma262/#sec-number.prototype.toprecision + _export({ target: 'Number', proto: true, forced: FORCED$a }, { + toPrecision: function toPrecision(precision) { + return precision === undefined + ? nativeToPrecision.call(thisNumberValue(this)) + : nativeToPrecision.call(thisNumberValue(this), precision); + } + }); + + var log$1 = Math.log; + + // `Math.log1p` method implementation + // https://tc39.github.io/ecma262/#sec-math.log1p + var mathLog1p = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log$1(1 + x); + }; + + var nativeAcosh = Math.acosh; + var log$2 = Math.log; + var sqrt = Math.sqrt; + var LN2 = Math.LN2; + + var FORCED$b = !nativeAcosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + || nativeAcosh(Infinity) != Infinity; + + // `Math.acosh` method + // https://tc39.github.io/ecma262/#sec-math.acosh + _export({ target: 'Math', stat: true, forced: FORCED$b }, { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? log$2(x) + LN2 + : mathLog1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } + }); + + var nativeAsinh = Math.asinh; + var log$3 = Math.log; + var sqrt$1 = Math.sqrt; + + function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log$3(x + sqrt$1(x * x + 1)); + } + + // `Math.asinh` method + // https://tc39.github.io/ecma262/#sec-math.asinh + // Tor Browser bug: Math.asinh(0) -> -0 + _export({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, { + asinh: asinh + }); + + var nativeAtanh = Math.atanh; + var log$4 = Math.log; + + // `Math.atanh` method + // https://tc39.github.io/ecma262/#sec-math.atanh + // Tor Browser bug: Math.atanh(-0) -> 0 + _export({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : log$4((1 + x) / (1 - x)) / 2; + } + }); + + // `Math.sign` method implementation + // https://tc39.github.io/ecma262/#sec-math.sign + var mathSign = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; + }; + + var abs$1 = Math.abs; + var pow$1 = Math.pow; + + // `Math.cbrt` method + // https://tc39.github.io/ecma262/#sec-math.cbrt + _export({ target: 'Math', stat: true }, { + cbrt: function cbrt(x) { + return mathSign(x = +x) * pow$1(abs$1(x), 1 / 3); + } + }); + + var floor$4 = Math.floor; + var log$5 = Math.log; + var LOG2E = Math.LOG2E; + + // `Math.clz32` method + // https://tc39.github.io/ecma262/#sec-math.clz32 + _export({ target: 'Math', stat: true }, { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - floor$4(log$5(x + 0.5) * LOG2E) : 32; + } + }); + + var nativeExpm1 = Math.expm1; + var exp = Math.exp; + + // `Math.expm1` method implementation + // https://tc39.github.io/ecma262/#sec-math.expm1 + var mathExpm1 = (!nativeExpm1 + // Old FF bug + || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 + // Tor Browser bug + || nativeExpm1(-2e-17) != -2e-17 + ) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; + } : nativeExpm1; + + var nativeCosh = Math.cosh; + var abs$2 = Math.abs; + var E = Math.E; + + // `Math.cosh` method + // https://tc39.github.io/ecma262/#sec-math.cosh + _export({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, { + cosh: function cosh(x) { + var t = mathExpm1(abs$2(x) - 1) + 1; + return (t + 1 / (t * E * E)) * (E / 2); + } + }); + + // `Math.expm1` method + // https://tc39.github.io/ecma262/#sec-math.expm1 + _export({ target: 'Math', stat: true, forced: mathExpm1 != Math.expm1 }, { expm1: mathExpm1 }); + + var abs$3 = Math.abs; + var pow$2 = Math.pow; + var EPSILON = pow$2(2, -52); + var EPSILON32 = pow$2(2, -23); + var MAX32 = pow$2(2, 127) * (2 - EPSILON32); + var MIN32 = pow$2(2, -126); + + var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; + }; + + // `Math.fround` method implementation + // https://tc39.github.io/ecma262/#sec-math.fround + var mathFround = Math.fround || function fround(x) { + var $abs = abs$3(x); + var $sign = mathSign(x); + var a, result; + if ($abs < MIN32) { return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; } + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) { return $sign * Infinity; } + return $sign * result; + }; + + // `Math.fround` method + // https://tc39.github.io/ecma262/#sec-math.fround + _export({ target: 'Math', stat: true }, { fround: mathFround }); + + var $hypot = Math.hypot; + var abs$4 = Math.abs; + var sqrt$2 = Math.sqrt; + + // Chrome 77 bug + // https://bugs.chromium.org/p/v8/issues/detail?id=9546 + var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; + + // `Math.hypot` method + // https://tc39.github.io/ecma262/#sec-math.hypot + _export({ target: 'Math', stat: true, forced: BUGGY }, { + hypot: function hypot(value1, value2) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs$4(arguments$1[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else { sum += arg; } + } + return larg === Infinity ? Infinity : larg * sqrt$2(sum); + } + }); + + var nativeImul = Math.imul; + + var FORCED$c = fails(function () { + return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; + }); + + // `Math.imul` method + // https://tc39.github.io/ecma262/#sec-math.imul + // some WebKit versions fails with big numbers, some has wrong arity + _export({ target: 'Math', stat: true, forced: FORCED$c }, { + imul: function imul(x, y) { + var UINT16 = 0xFFFF; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } + }); + + var log$6 = Math.log; + var LOG10E = Math.LOG10E; + + // `Math.log10` method + // https://tc39.github.io/ecma262/#sec-math.log10 + _export({ target: 'Math', stat: true }, { + log10: function log10(x) { + return log$6(x) * LOG10E; + } + }); + + // `Math.log1p` method + // https://tc39.github.io/ecma262/#sec-math.log1p + _export({ target: 'Math', stat: true }, { log1p: mathLog1p }); + + var log$7 = Math.log; + var LN2$1 = Math.LN2; + + // `Math.log2` method + // https://tc39.github.io/ecma262/#sec-math.log2 + _export({ target: 'Math', stat: true }, { + log2: function log2(x) { + return log$7(x) / LN2$1; + } + }); + + // `Math.sign` method + // https://tc39.github.io/ecma262/#sec-math.sign + _export({ target: 'Math', stat: true }, { + sign: mathSign + }); + + var abs$5 = Math.abs; + var exp$1 = Math.exp; + var E$1 = Math.E; + + var FORCED$d = fails(function () { + return Math.sinh(-2e-17) != -2e-17; + }); + + // `Math.sinh` method + // https://tc39.github.io/ecma262/#sec-math.sinh + // V8 near Chromium 38 has a problem with very small numbers + _export({ target: 'Math', stat: true, forced: FORCED$d }, { + sinh: function sinh(x) { + return abs$5(x = +x) < 1 ? (mathExpm1(x) - mathExpm1(-x)) / 2 : (exp$1(x - 1) - exp$1(-x - 1)) * (E$1 / 2); + } + }); + + var exp$2 = Math.exp; + + // `Math.tanh` method + // https://tc39.github.io/ecma262/#sec-math.tanh + _export({ target: 'Math', stat: true }, { + tanh: function tanh(x) { + var a = mathExpm1(x = +x); + var b = mathExpm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp$2(x) + exp$2(-x)); + } + }); + + // Math[@@toStringTag] property + // https://tc39.github.io/ecma262/#sec-math-@@tostringtag + setToStringTag(Math, 'Math', true); + + var ceil$2 = Math.ceil; + var floor$5 = Math.floor; + + // `Math.trunc` method + // https://tc39.github.io/ecma262/#sec-math.trunc + _export({ target: 'Math', stat: true }, { + trunc: function trunc(it) { + return (it > 0 ? floor$5 : ceil$2)(it); + } + }); + + // `Date.now` method + // https://tc39.github.io/ecma262/#sec-date.now + _export({ target: 'Date', stat: true }, { + now: function now() { + return new Date().getTime(); + } + }); + + var FORCED$e = fails(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; + }); + + // `Date.prototype.toJSON` method + // https://tc39.github.io/ecma262/#sec-date.prototype.tojson + _export({ target: 'Date', proto: true, forced: FORCED$e }, { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } + }); + + var padStart = stringPad.start; + + var abs$6 = Math.abs; + var DatePrototype = Date.prototype; + var getTime = DatePrototype.getTime; + var nativeDateToISOString = DatePrototype.toISOString; + + // `Date.prototype.toISOString` method implementation + // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring + // PhantomJS / old WebKit fails here: + var dateToIsoString = (fails(function () { + return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; + }) || !fails(function () { + nativeDateToISOString.call(new Date(NaN)); + })) ? function toISOString() { + if (!isFinite(getTime.call(this))) { throw RangeError('Invalid time value'); } + var date = this; + var year = date.getUTCFullYear(); + var milliseconds = date.getUTCMilliseconds(); + var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; + return sign + padStart(abs$6(year), sign ? 6 : 4, 0) + + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + + '-' + padStart(date.getUTCDate(), 2, 0) + + 'T' + padStart(date.getUTCHours(), 2, 0) + + ':' + padStart(date.getUTCMinutes(), 2, 0) + + ':' + padStart(date.getUTCSeconds(), 2, 0) + + '.' + padStart(milliseconds, 3, 0) + + 'Z'; + } : nativeDateToISOString; + + // `Date.prototype.toISOString` method + // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring + // PhantomJS / old WebKit has a broken implementations + _export({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== dateToIsoString }, { + toISOString: dateToIsoString + }); + + var DatePrototype$1 = Date.prototype; + var INVALID_DATE = 'Invalid Date'; + var TO_STRING$1 = 'toString'; + var nativeDateToString = DatePrototype$1[TO_STRING$1]; + var getTime$1 = DatePrototype$1.getTime; + + // `Date.prototype.toString` method + // https://tc39.github.io/ecma262/#sec-date.prototype.tostring + if (new Date(NaN) + '' != INVALID_DATE) { + redefine(DatePrototype$1, TO_STRING$1, function toString() { + var value = getTime$1.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? nativeDateToString.call(this) : INVALID_DATE; + }); + } + + var dateToPrimitive = function (hint) { + if (hint !== 'string' && hint !== 'number' && hint !== 'default') { + throw TypeError('Incorrect hint'); + } return toPrimitive(anObject(this), hint !== 'number'); + }; + + var TO_PRIMITIVE$1 = wellKnownSymbol('toPrimitive'); + var DatePrototype$2 = Date.prototype; + + // `Date.prototype[@@toPrimitive]` method + // https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive + if (!(TO_PRIMITIVE$1 in DatePrototype$2)) { + createNonEnumerableProperty(DatePrototype$2, TO_PRIMITIVE$1, dateToPrimitive); + } + + var $stringify$1 = getBuiltIn('JSON', 'stringify'); + var re = /[\uD800-\uDFFF]/g; + var low = /^[\uD800-\uDBFF]$/; + var hi = /^[\uDC00-\uDFFF]$/; + + var fix = function (match, offset, string) { + var prev = string.charAt(offset - 1); + var next = string.charAt(offset + 1); + if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) { + return '\\u' + match.charCodeAt(0).toString(16); + } return match; + }; + + var FORCED$f = fails(function () { + return $stringify$1('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify$1('\uDEAD') !== '"\\udead"'; + }); + + if ($stringify$1) { + // https://github.com/tc39/proposal-well-formed-stringify + _export({ target: 'JSON', stat: true, forced: FORCED$f }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var result = $stringify$1.apply(null, arguments); + return typeof result == 'string' ? result.replace(re, fix) : result; + } + }); + } + + // JSON[@@toStringTag] property + // https://tc39.github.io/ecma262/#sec-json-@@tostringtag + setToStringTag(global_1.JSON, 'JSON', true); + + var nativePromiseConstructor = global_1.Promise; + + var redefineAll = function (target, src, options) { + for (var key in src) { redefine(target, key, src[key], options); } + return target; + }; + + var anInstance = function (it, Constructor, name) { + if (!(it instanceof Constructor)) { + throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); + } return it; + }; + + var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent); + + var location = global_1.location; + var set$1 = global_1.setImmediate; + var clear = global_1.clearImmediate; + var process$2 = global_1.process; + var MessageChannel = global_1.MessageChannel; + var Dispatch = global_1.Dispatch; + var counter = 0; + var queue = {}; + var ONREADYSTATECHANGE = 'onreadystatechange'; + var defer, channel, port; + + var run = function (id) { + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } + }; + + var runner = function (id) { + return function () { + run(id); + }; + }; + + var listener = function (event) { + run(event.data); + }; + + var post = function (id) { + // old engines have not location.origin + global_1.postMessage(id + '', location.protocol + '//' + location.host); + }; + + // Node.js 0.9+ & IE10+ has setImmediate, otherwise: + if (!set$1 || !clear) { + set$1 = function setImmediate(fn) { + var arguments$1 = arguments; + + var args = []; + var i = 1; + while (arguments.length > i) { args.push(arguments$1[i++]); } + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (classofRaw(process$2) == 'process') { + defer = function (id) { + process$2.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !engineIsIos) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = functionBindContext(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post)) { + defer = post; + global_1.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in documentCreateElement('script')) { + defer = function (id) { + html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } + } + + var task = { + set: set$1, + clear: clear + }; + + var getOwnPropertyDescriptor$7 = objectGetOwnPropertyDescriptor.f; + + var macrotask = task.set; + + + var MutationObserver = global_1.MutationObserver || global_1.WebKitMutationObserver; + var process$3 = global_1.process; + var Promise$1 = global_1.Promise; + var IS_NODE = classofRaw(process$3) == 'process'; + // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` + var queueMicrotaskDescriptor = getOwnPropertyDescriptor$7(global_1, 'queueMicrotask'); + var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; + + var flush, head, last, notify, toggle, node, promise, then; + + // modern engines have queueMicrotask method + if (!queueMicrotask) { + flush = function () { + var parent, fn; + if (IS_NODE && (parent = process$3.domain)) { parent.exit(); } + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (error) { + if (head) { notify(); } + else { last = undefined; } + throw error; + } + } last = undefined; + if (parent) { parent.enter(); } + }; + + // Node.js + if (IS_NODE) { + notify = function () { + process$3.nextTick(flush); + }; + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + } else if (MutationObserver && !engineIsIos) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise$1 && Promise$1.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise$1.resolve(undefined); + then = promise.then; + notify = function () { + then.call(promise, flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global_1, flush); + }; + } + } + + var microtask = queueMicrotask || function (fn) { + var task = { fn: fn, next: undefined }; + if (last) { last.next = task; } + if (!head) { + head = task; + notify(); + } last = task; + }; + + var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) { throw TypeError('Bad Promise constructor'); } + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction$1(resolve); + this.reject = aFunction$1(reject); + }; + + // 25.4.1.5 NewPromiseCapability(C) + var f$7 = function (C) { + return new PromiseCapability(C); + }; + + var newPromiseCapability = { + f: f$7 + }; + + var promiseResolve = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) { return x; } + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; + }; + + var hostReportErrors = function (a, b) { + var console = global_1.console; + if (console && console.error) { + arguments.length === 1 ? console.error(a) : console.error(a, b); + } + }; + + var perform = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } + }; + + var task$1 = task.set; + + + + + + + + + + + var SPECIES$6 = wellKnownSymbol('species'); + var PROMISE = 'Promise'; + var getInternalState$5 = internalState.get; + var setInternalState$5 = internalState.set; + var getInternalPromiseState = internalState.getterFor(PROMISE); + var PromiseConstructor = nativePromiseConstructor; + var TypeError$1 = global_1.TypeError; + var document$2 = global_1.document; + var process$4 = global_1.process; + var $fetch = getBuiltIn('fetch'); + var newPromiseCapability$1 = newPromiseCapability.f; + var newGenericPromiseCapability = newPromiseCapability$1; + var IS_NODE$1 = classofRaw(process$4) == 'process'; + var DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent); + var UNHANDLED_REJECTION = 'unhandledrejection'; + var REJECTION_HANDLED = 'rejectionhandled'; + var PENDING = 0; + var FULFILLED = 1; + var REJECTED = 2; + var HANDLED = 1; + var UNHANDLED = 2; + var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + + var FORCED$g = isForced_1(PROMISE, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); + if (!GLOBAL_CORE_JS_PROMISE) { + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (engineV8Version === 66) { return true; } + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') { return true; } + } + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) { return false; } + // Detect correctness of subclassing with @@species support + var promise = PromiseConstructor.resolve(1); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES$6] = FakePromise; + return !(promise.then(function () { /* empty */ }) instanceof FakePromise); + }); + + var INCORRECT_ITERATION$1 = FORCED$g || !checkCorrectnessOfIteration(function (iterable) { + PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); + }); + + // helpers + var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; + }; + + var notify$1 = function (promise, state, isReject) { + if (state.notified) { return; } + state.notified = true; + var chain = state.reactions; + microtask(function () { + var value = state.value; + var ok = state.state == FULFILLED; + var index = 0; + // variable length - can't use forEach + while (chain.length > index) { + var reaction = chain[index++]; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) { onHandleUnhandled(promise, state); } + state.rejection = HANDLED; + } + if (handler === true) { result = value; } + else { + if (domain) { domain.enter(); } + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError$1('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else { resolve(result); } + } else { reject(value); } + } catch (error) { + if (domain && !exited) { domain.exit(); } + reject(error); + } + } + state.reactions = []; + state.notified = false; + if (isReject && !state.rejection) { onUnhandled(promise, state); } + }); + }; + + var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document$2.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global_1.dispatchEvent(event); + } else { event = { promise: promise, reason: reason }; } + if (handler = global_1['on' + name]) { handler(event); } + else if (name === UNHANDLED_REJECTION) { hostReportErrors('Unhandled promise rejection', reason); } + }; + + var onUnhandled = function (promise, state) { + task$1.call(global_1, function () { + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE$1) { + process$4.emit('unhandledRejection', value, promise); + } else { dispatchEvent(UNHANDLED_REJECTION, promise, value); } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) { throw result.value; } + } + }); + }; + + var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; + }; + + var onHandleUnhandled = function (promise, state) { + task$1.call(global_1, function () { + if (IS_NODE$1) { + process$4.emit('rejectionHandled', promise); + } else { dispatchEvent(REJECTION_HANDLED, promise, state.value); } + }); + }; + + var bind = function (fn, promise, state, unwrap) { + return function (value) { + fn(promise, state, value, unwrap); + }; + }; + + var internalReject = function (promise, state, value, unwrap) { + if (state.done) { return; } + state.done = true; + if (unwrap) { state = unwrap; } + state.value = value; + state.state = REJECTED; + notify$1(promise, state, true); + }; + + var internalResolve = function (promise, state, value, unwrap) { + if (state.done) { return; } + state.done = true; + if (unwrap) { state = unwrap; } + try { + if (promise === value) { throw TypeError$1("Promise can't be resolved itself"); } + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + then.call(value, + bind(internalResolve, promise, wrapper, state), + bind(internalReject, promise, wrapper, state) + ); + } catch (error) { + internalReject(promise, wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify$1(promise, state, false); + } + } catch (error) { + internalReject(promise, { done: false }, error, state); + } + }; + + // constructor polyfill + if (FORCED$g) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromiseConstructor, PROMISE); + aFunction$1(executor); + Internal.call(this); + var state = getInternalState$5(this); + try { + executor(bind(internalResolve, this, state), bind(internalReject, this, state)); + } catch (error) { + internalReject(this, state, error); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + setInternalState$5(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: [], + rejection: false, + state: PENDING, + value: undefined + }); + }; + Internal.prototype = redefineAll(PromiseConstructor.prototype, { + // `Promise.prototype.then` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.then + then: function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = IS_NODE$1 ? process$4.domain : undefined; + state.parent = true; + state.reactions.push(reaction); + if (state.state != PENDING) { notify$1(this, state, false); } + return reaction.promise; + }, + // `Promise.prototype.catch` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.catch + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalState$5(promise); + this.promise = promise; + this.resolve = bind(internalResolve, promise, state); + this.reject = bind(internalReject, promise, state); + }; + newPromiseCapability.f = newPromiseCapability$1 = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if ( typeof nativePromiseConstructor == 'function') { + nativeThen = nativePromiseConstructor.prototype.then; + + // wrap native Promise#then for native async functions + redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + + // wrap fetch result + if (typeof $fetch == 'function') { _export({ global: true, enumerable: true, forced: true }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input /* , init */) { + return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments)); + } + }); } + } + } + + _export({ global: true, wrap: true, forced: FORCED$g }, { + Promise: PromiseConstructor + }); + + setToStringTag(PromiseConstructor, PROMISE, false); + setSpecies(PROMISE); + + PromiseWrapper = getBuiltIn(PROMISE); + + // statics + _export({ target: PROMISE, stat: true, forced: FORCED$g }, { + // `Promise.reject` method + // https://tc39.github.io/ecma262/#sec-promise.reject + reject: function reject(r) { + var capability = newPromiseCapability$1(this); + capability.reject.call(undefined, r); + return capability.promise; + } + }); + + _export({ target: PROMISE, stat: true, forced: FORCED$g }, { + // `Promise.resolve` method + // https://tc39.github.io/ecma262/#sec-promise.resolve + resolve: function resolve(x) { + return promiseResolve( this, x); + } + }); + + _export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION$1 }, { + // `Promise.all` method + // https://tc39.github.io/ecma262/#sec-promise.all + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability$1(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction$1(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate_1(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + $promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) { return; } + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) { reject(result.value); } + return capability.promise; + }, + // `Promise.race` method + // https://tc39.github.io/ecma262/#sec-promise.race + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability$1(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction$1(C.resolve); + iterate_1(iterable, function (promise) { + $promiseResolve.call(C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) { reject(result.value); } + return capability.promise; + } + }); + + // `Promise.allSettled` method + // https://github.com/tc39/proposal-promise-allSettled + _export({ target: 'Promise', stat: true }, { + allSettled: function allSettled(iterable) { + var C = this; + var capability = newPromiseCapability.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction$1(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate_1(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) { return; } + alreadyCalled = true; + values[index] = { status: 'fulfilled', value: value }; + --remaining || resolve(values); + }, function (e) { + if (alreadyCalled) { return; } + alreadyCalled = true; + values[index] = { status: 'rejected', reason: e }; + --remaining || resolve(values); + }); + }); + --remaining || resolve(values); + }); + if (result.error) { reject(result.value); } + return capability.promise; + } + }); + + // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 + var NON_GENERIC = !!nativePromiseConstructor && fails(function () { + nativePromiseConstructor.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); + }); + + // `Promise.prototype.finally` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.finally + _export({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } + }); + + // patch native Promise.prototype for native async functions + if ( typeof nativePromiseConstructor == 'function' && !nativePromiseConstructor.prototype['finally']) { + redefine(nativePromiseConstructor.prototype, 'finally', getBuiltIn('Promise').prototype['finally']); + } + + var collection = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global_1[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var nativeMethod = NativePrototype[KEY]; + redefine(NativePrototype, KEY, + KEY == 'add' ? function add(value) { + nativeMethod.call(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); + } : function set(key, value) { + nativeMethod.call(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + // eslint-disable-next-line max-len + if (isForced_1(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })))) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + internalMetadata.REQUIRED = true; + } else if (isForced_1(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) { $instance[ADDER](index, index); } + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, Constructor, CONSTRUCTOR_NAME); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (iterable != undefined) { iterate_1(iterable, that[ADDER], that, IS_MAP); } + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) { fixMethod(ADDER); } + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) { delete NativePrototype.clear; } + } + + exported[CONSTRUCTOR_NAME] = Constructor; + _export({ global: true, forced: Constructor != NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) { common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); } + + return Constructor; + }; + + var defineProperty$9 = objectDefineProperty.f; + + + + + + + + + var fastKey = internalMetadata.fastKey; + + + var setInternalState$6 = internalState.set; + var internalStateGetterFor = internalState.getterFor; + + var collectionStrong = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, CONSTRUCTOR_NAME); + setInternalState$6(that, { + type: CONSTRUCTOR_NAME, + index: objectCreate(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!descriptors) { that.size = 0; } + if (iterable != undefined) { iterate_1(iterable, that[ADDER], that, IS_MAP); } + }); + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) { state.first = entry; } + if (previous) { previous.next = entry; } + if (descriptors) { state.size++; } + else { that.size++; } + // add to index + if (index !== 'F') { state.index[index] = entry; } + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') { return state.index[index]; } + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key == key) { return entry; } + } + }; + + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + var that = this; + var state = getInternalState(that); + var data = state.index; + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) { entry.previous = entry.previous.next = undefined; } + delete data[entry.index]; + entry = entry.next; + } + state.first = state.last = undefined; + if (descriptors) { state.size = 0; } + else { that.size = 0; } + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) { prev.next = next; } + if (next) { next.previous = prev; } + if (state.first == entry) { state.first = next; } + if (state.last == entry) { state.last = prev; } + if (descriptors) { state.size--; } + else { that.size--; } + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) { entry = entry.previous; } + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(this, key); + } + }); + + redefineAll(C.prototype, IS_MAP ? { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (descriptors) { defineProperty$9(C.prototype, 'size', { + get: function () { + return getInternalState(this).size; + } + }); } + return C; + }, + setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState$6(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) { entry = entry.previous; } + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = undefined; + return { value: undefined, done: true }; + } + // return step by kind + if (kind == 'keys') { return { value: entry.key, done: false }; } + if (kind == 'values') { return { value: entry.value, done: false }; } + return { value: [entry.key, entry.value], done: false }; + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(CONSTRUCTOR_NAME); + } + }; + + // `Map` constructor + // https://tc39.github.io/ecma262/#sec-map-objects + var es_map = collection('Map', function (init) { + return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + + // `Set` constructor + // https://tc39.github.io/ecma262/#sec-set-objects + var es_set = collection('Set', function (init) { + return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + + var getWeakData = internalMetadata.getWeakData; + + + + + + + + + var setInternalState$7 = internalState.set; + var internalStateGetterFor$1 = internalState.getterFor; + var find = arrayIteration.find; + var findIndex = arrayIteration.findIndex; + var id$1 = 0; + + // fallback for uncaught frozen keys + var uncaughtFrozenStore = function (store) { + return store.frozen || (store.frozen = new UncaughtFrozenStore()); + }; + + var UncaughtFrozenStore = function () { + this.entries = []; + }; + + var findUncaughtFrozen = function (store, key) { + return find(store.entries, function (it) { + return it[0] === key; + }); + }; + + UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) { return entry[1]; } + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) { entry[1] = value; } + else { this.entries.push([key, value]); } + }, + 'delete': function (key) { + var index = findIndex(this.entries, function (it) { + return it[0] === key; + }); + if (~index) { this.entries.splice(index, 1); } + return !!~index; + } + }; + + var collectionWeak = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, CONSTRUCTOR_NAME); + setInternalState$7(that, { + type: CONSTRUCTOR_NAME, + id: id$1++, + frozen: undefined + }); + if (iterable != undefined) { iterate_1(iterable, that[ADDER], that, IS_MAP); } + }); + + var getInternalState = internalStateGetterFor$1(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var data = getWeakData(anObject(key), true); + if (data === true) { uncaughtFrozenStore(state).set(key, value); } + else { data[state.id] = value; } + return that; + }; + + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + var state = getInternalState(this); + if (!isObject(key)) { return false; } + var data = getWeakData(key); + if (data === true) { return uncaughtFrozenStore(state)['delete'](key); } + return data && has(data, state.id) && delete data[state.id]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has$1(key) { + var state = getInternalState(this); + if (!isObject(key)) { return false; } + var data = getWeakData(key); + if (data === true) { return uncaughtFrozenStore(state).has(key); } + return data && has(data, state.id); + } + }); + + redefineAll(C.prototype, IS_MAP ? { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + var state = getInternalState(this); + if (isObject(key)) { + var data = getWeakData(key); + if (data === true) { return uncaughtFrozenStore(state).get(key); } + return data ? data[state.id] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return define(this, key, value); + } + } : { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value) { + return define(this, value, true); + } + }); + + return C; + } + }; + + var es_weakMap = createCommonjsModule(function (module) { + + + + + + + var enforceIternalState = internalState.enforce; + + + var IS_IE11 = !global_1.ActiveXObject && 'ActiveXObject' in global_1; + var isExtensible = Object.isExtensible; + var InternalWeakMap; + + var wrapper = function (init) { + return function WeakMap() { + return init(this, arguments.length ? arguments[0] : undefined); + }; + }; + + // `WeakMap` constructor + // https://tc39.github.io/ecma262/#sec-weakmap-constructor + var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); + + // IE11 WeakMap frozen keys fix + // We can't use feature detection because it crash some old IE builds + // https://github.com/zloirock/core-js/issues/485 + if (nativeWeakMap && IS_IE11) { + InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); + internalMetadata.REQUIRED = true; + var WeakMapPrototype = $WeakMap.prototype; + var nativeDelete = WeakMapPrototype['delete']; + var nativeHas = WeakMapPrototype.has; + var nativeGet = WeakMapPrototype.get; + var nativeSet = WeakMapPrototype.set; + redefineAll(WeakMapPrototype, { + 'delete': function (key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) { state.frozen = new InternalWeakMap(); } + return nativeDelete.call(this, key) || state.frozen['delete'](key); + } return nativeDelete.call(this, key); + }, + has: function has(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) { state.frozen = new InternalWeakMap(); } + return nativeHas.call(this, key) || state.frozen.has(key); + } return nativeHas.call(this, key); + }, + get: function get(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) { state.frozen = new InternalWeakMap(); } + return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); + } return nativeGet.call(this, key); + }, + set: function set(key, value) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) { state.frozen = new InternalWeakMap(); } + nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); + } else { nativeSet.call(this, key, value); } + return this; + } + }); + } + }); + + // `WeakSet` constructor + // https://tc39.github.io/ecma262/#sec-weakset-constructor + collection('WeakSet', function (init) { + return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionWeak); + + var arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined'; + + // `ToIndex` abstract operation + // https://tc39.github.io/ecma262/#sec-toindex + var toIndex = function (it) { + if (it === undefined) { return 0; } + var number = toInteger(it); + var length = toLength(number); + if (number !== length) { throw RangeError('Wrong length or index'); } + return length; + }; + + // IEEE754 conversions based on https://github.com/feross/ieee754 + // eslint-disable-next-line no-shadow-restricted-names + var Infinity$1 = 1 / 0; + var abs$7 = Math.abs; + var pow$3 = Math.pow; + var floor$6 = Math.floor; + var log$8 = Math.log; + var LN2$2 = Math.LN2; + + var pack = function (number, mantissaLength, bytes) { + var buffer = new Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow$3(2, -24) - pow$3(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs$7(number); + // eslint-disable-next-line no-self-compare + if (number != number || number === Infinity$1) { + // eslint-disable-next-line no-self-compare + mantissa = number != number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor$6(log$8(number) / LN2$2); + if (number * (c = pow$3(2, -exponent)) < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow$3(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow$3(2, mantissaLength); + exponent = exponent + eBias; + } else { + mantissa = number * pow$3(2, eBias - 1) * pow$3(2, mantissaLength); + exponent = 0; + } + } + for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8){ } + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8){ } + buffer[--index] |= sign * 128; + return buffer; + }; + + var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8){ } + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8){ } + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity$1 : Infinity$1; + } else { + mantissa = mantissa + pow$3(2, mantissaLength); + exponent = exponent - eBias; + } return (sign ? -1 : 1) * mantissa * pow$3(2, exponent - mantissaLength); + }; + + var ieee754 = { + pack: pack, + unpack: unpack + }; + + var getOwnPropertyNames$2 = objectGetOwnPropertyNames.f; + var defineProperty$a = objectDefineProperty.f; + + + + + var getInternalState$6 = internalState.get; + var setInternalState$8 = internalState.set; + var ARRAY_BUFFER = 'ArrayBuffer'; + var DATA_VIEW = 'DataView'; + var PROTOTYPE$2 = 'prototype'; + var WRONG_LENGTH = 'Wrong length'; + var WRONG_INDEX = 'Wrong index'; + var NativeArrayBuffer = global_1[ARRAY_BUFFER]; + var $ArrayBuffer = NativeArrayBuffer; + var $DataView = global_1[DATA_VIEW]; + var $DataViewPrototype = $DataView && $DataView[PROTOTYPE$2]; + var ObjectPrototype$2 = Object.prototype; + var RangeError$1 = global_1.RangeError; + + var packIEEE754 = ieee754.pack; + var unpackIEEE754 = ieee754.unpack; + + var packInt8 = function (number) { + return [number & 0xFF]; + }; + + var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; + }; + + var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; + }; + + var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; + }; + + var packFloat32 = function (number) { + return packIEEE754(number, 23, 4); + }; + + var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); + }; + + var addGetter = function (Constructor, key) { + defineProperty$a(Constructor[PROTOTYPE$2], key, { get: function () { return getInternalState$6(this)[key]; } }); + }; + + var get$1 = function (view, count, index, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState$6(view); + if (intIndex + count > store.byteLength) { throw RangeError$1(WRONG_INDEX); } + var bytes = getInternalState$6(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = bytes.slice(start, start + count); + return isLittleEndian ? pack : pack.reverse(); + }; + + var set$2 = function (view, count, index, conversion, value, isLittleEndian) { + var intIndex = toIndex(index); + var store = getInternalState$6(view); + if (intIndex + count > store.byteLength) { throw RangeError$1(WRONG_INDEX); } + var bytes = getInternalState$6(store.buffer).bytes; + var start = intIndex + store.byteOffset; + var pack = conversion(+value); + for (var i = 0; i < count; i++) { bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; } + }; + + if (!arrayBufferNative) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + setInternalState$8(this, { + bytes: arrayFill.call(new Array(byteLength), 0), + byteLength: byteLength + }); + if (!descriptors) { this.byteLength = byteLength; } + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = getInternalState$6(buffer).byteLength; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) { throw RangeError$1('Wrong offset'); } + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) { throw RangeError$1(WRONG_LENGTH); } + setInternalState$8(this, { + buffer: buffer, + byteLength: byteLength, + byteOffset: offset + }); + if (!descriptors) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + if (descriptors) { + addGetter($ArrayBuffer, 'byteLength'); + addGetter($DataView, 'buffer'); + addGetter($DataView, 'byteLength'); + addGetter($DataView, 'byteOffset'); + } + + redefineAll($DataView[PROTOTYPE$2], { + getInt8: function getInt8(byteOffset) { + return get$1(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get$1(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get$1(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set$2(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set$2(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set$2(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set$2(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); + } + }); + } else { + if (!fails(function () { + NativeArrayBuffer(1); + }) || !fails(function () { + new NativeArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new NativeArrayBuffer(); // eslint-disable-line no-new + new NativeArrayBuffer(1.5); // eslint-disable-line no-new + new NativeArrayBuffer(NaN); // eslint-disable-line no-new + return NativeArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new NativeArrayBuffer(toIndex(length)); + }; + var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE$2] = NativeArrayBuffer[PROTOTYPE$2]; + for (var keys$3 = getOwnPropertyNames$2(NativeArrayBuffer), j$1 = 0, key$1; keys$3.length > j$1;) { + if (!((key$1 = keys$3[j$1++]) in $ArrayBuffer)) { + createNonEnumerableProperty($ArrayBuffer, key$1, NativeArrayBuffer[key$1]); + } + } + ArrayBufferPrototype.constructor = $ArrayBuffer; + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (objectSetPrototypeOf && objectGetPrototypeOf($DataViewPrototype) !== ObjectPrototype$2) { + objectSetPrototypeOf($DataViewPrototype, ObjectPrototype$2); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var nativeSetInt8 = $DataViewPrototype.setInt8; + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) { redefineAll($DataViewPrototype, { + setInt8: function setInt8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + nativeSetInt8.call(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); } + } + + setToStringTag($ArrayBuffer, ARRAY_BUFFER); + setToStringTag($DataView, DATA_VIEW); + + var arrayBuffer = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView + }; + + var ARRAY_BUFFER$1 = 'ArrayBuffer'; + var ArrayBuffer$1 = arrayBuffer[ARRAY_BUFFER$1]; + var NativeArrayBuffer$1 = global_1[ARRAY_BUFFER$1]; + + // `ArrayBuffer` constructor + // https://tc39.github.io/ecma262/#sec-arraybuffer-constructor + _export({ global: true, forced: NativeArrayBuffer$1 !== ArrayBuffer$1 }, { + ArrayBuffer: ArrayBuffer$1 + }); + + setSpecies(ARRAY_BUFFER$1); + + var defineProperty$b = objectDefineProperty.f; + + + + + + var Int8Array$1 = global_1.Int8Array; + var Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype; + var Uint8ClampedArray = global_1.Uint8ClampedArray; + var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; + var TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1); + var TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype); + var ObjectPrototype$3 = Object.prototype; + var isPrototypeOf = ObjectPrototype$3.isPrototypeOf; + + var TO_STRING_TAG$3 = wellKnownSymbol('toStringTag'); + var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); + // Fixing native typed arrays in Opera Presto crashes the browser, see #595 + var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferNative && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera'; + var TYPED_ARRAY_TAG_REQIRED = false; + var NAME$1; + + var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 + }; + + var isView = function isView(it) { + var klass = classof(it); + return klass === 'DataView' || has(TypedArrayConstructorsList, klass); + }; + + var isTypedArray = function (it) { + return isObject(it) && has(TypedArrayConstructorsList, classof(it)); + }; + + var aTypedArray = function (it) { + if (isTypedArray(it)) { return it; } + throw TypeError('Target is not a typed array'); + }; + + var aTypedArrayConstructor = function (C) { + if (objectSetPrototypeOf) { + if (isPrototypeOf.call(TypedArray, C)) { return C; } + } else { for (var ARRAY in TypedArrayConstructorsList) { if (has(TypedArrayConstructorsList, NAME$1)) { + var TypedArrayConstructor = global_1[ARRAY]; + if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) { + return C; + } + } } } throw TypeError('Target is not a typed array constructor'); + }; + + var exportTypedArrayMethod = function (KEY, property, forced) { + if (!descriptors) { return; } + if (forced) { for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global_1[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) { + delete TypedArrayConstructor.prototype[KEY]; + } + } } + if (!TypedArrayPrototype[KEY] || forced) { + redefine(TypedArrayPrototype, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property); + } + }; + + var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!descriptors) { return; } + if (objectSetPrototypeOf) { + if (forced) { for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global_1[ARRAY]; + if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) { + delete TypedArrayConstructor[KEY]; + } + } } + if (!TypedArray[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array$1[KEY] || property); + } catch (error) { /* empty */ } + } else { return; } + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global_1[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + redefine(TypedArrayConstructor, KEY, property); + } + } + }; + + for (NAME$1 in TypedArrayConstructorsList) { + if (!global_1[NAME$1]) { NATIVE_ARRAY_BUFFER_VIEWS = false; } + } + + // WebKit bug - typed arrays constructors prototype is Object.prototype + if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) { + // eslint-disable-next-line no-shadow + TypedArray = function TypedArray() { + throw TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) { for (NAME$1 in TypedArrayConstructorsList) { + if (global_1[NAME$1]) { objectSetPrototypeOf(global_1[NAME$1], TypedArray); } + } } + } + + if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$3) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) { for (NAME$1 in TypedArrayConstructorsList) { + if (global_1[NAME$1]) { objectSetPrototypeOf(global_1[NAME$1].prototype, TypedArrayPrototype); } + } } + } + + // WebKit bug - one more object in Uint8ClampedArray prototype chain + if (NATIVE_ARRAY_BUFFER_VIEWS && objectGetPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + objectSetPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); + } + + if (descriptors && !has(TypedArrayPrototype, TO_STRING_TAG$3)) { + TYPED_ARRAY_TAG_REQIRED = true; + defineProperty$b(TypedArrayPrototype, TO_STRING_TAG$3, { get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } }); + for (NAME$1 in TypedArrayConstructorsList) { if (global_1[NAME$1]) { + createNonEnumerableProperty(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1); + } } + } + + var arrayBufferViewCore = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype + }; + + var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + + // `ArrayBuffer.isView` method + // https://tc39.github.io/ecma262/#sec-arraybuffer.isview + _export({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS$1 }, { + isView: arrayBufferViewCore.isView + }); + + var ArrayBuffer$2 = arrayBuffer.ArrayBuffer; + var DataView$1 = arrayBuffer.DataView; + var nativeArrayBufferSlice = ArrayBuffer$2.prototype.slice; + + var INCORRECT_SLICE = fails(function () { + return !new ArrayBuffer$2(2).slice(1, undefined).byteLength; + }); + + // `ArrayBuffer.prototype.slice` method + // https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice + _export({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, { + slice: function slice(start, end) { + if (nativeArrayBufferSlice !== undefined && end === undefined) { + return nativeArrayBufferSlice.call(anObject(this), start); // FF fix + } + var length = anObject(this).byteLength; + var first = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = new (speciesConstructor(this, ArrayBuffer$2))(toLength(fin - first)); + var viewSource = new DataView$1(this); + var viewTarget = new DataView$1(result); + var index = 0; + while (first < fin) { + viewTarget.setUint8(index++, viewSource.getUint8(first++)); + } return result; + } + }); + + // `DataView` constructor + // https://tc39.github.io/ecma262/#sec-dataview-constructor + _export({ global: true, forced: !arrayBufferNative }, { + DataView: arrayBuffer.DataView + }); + + /* eslint-disable no-new */ + + + + var NATIVE_ARRAY_BUFFER_VIEWS$2 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + + var ArrayBuffer$3 = global_1.ArrayBuffer; + var Int8Array$2 = global_1.Int8Array; + + var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$2 || !fails(function () { + Int8Array$2(1); + }) || !fails(function () { + new Int8Array$2(-1); + }) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array$2(); + new Int8Array$2(null); + new Int8Array$2(1.5); + new Int8Array$2(iterable); + }, true) || fails(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array$2(new ArrayBuffer$3(2), 1, undefined).length !== 1; + }); + + var toPositiveInteger = function (it) { + var result = toInteger(it); + if (result < 0) { throw RangeError("The argument can't be less than 0"); } + return result; + }; + + var toOffset = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) { throw RangeError('Wrong offset'); } + return offset; + }; + + var aTypedArrayConstructor$1 = arrayBufferViewCore.aTypedArrayConstructor; + + var typedArrayFrom = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var i, length, result, step, iterator, next; + if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) { + iterator = iteratorMethod.call(O); + next = iterator.next; + O = []; + while (!(step = next.call(iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = functionBindContext(mapfn, arguments[2], 2); + } + length = toLength(O.length); + result = new (aTypedArrayConstructor$1(this))(length); + for (i = 0; length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var typedArrayConstructor = createCommonjsModule(function (module) { + + + + + + + + + + + + + + + + + + + var getOwnPropertyNames = objectGetOwnPropertyNames.f; + + var forEach = arrayIteration.forEach; + + + + + + + var getInternalState = internalState.get; + var setInternalState = internalState.set; + var nativeDefineProperty = objectDefineProperty.f; + var nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + var round = Math.round; + var RangeError = global_1.RangeError; + var ArrayBuffer = arrayBuffer.ArrayBuffer; + var DataView = arrayBuffer.DataView; + var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + var TYPED_ARRAY_TAG = arrayBufferViewCore.TYPED_ARRAY_TAG; + var TypedArray = arrayBufferViewCore.TypedArray; + var TypedArrayPrototype = arrayBufferViewCore.TypedArrayPrototype; + var aTypedArrayConstructor = arrayBufferViewCore.aTypedArrayConstructor; + var isTypedArray = arrayBufferViewCore.isTypedArray; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var WRONG_LENGTH = 'Wrong length'; + + var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor(C))(length); + while (length > index) { result[index] = list[index++]; } + return result; + }; + + var addGetter = function (it, key) { + nativeDefineProperty(it, key, { get: function () { + return getInternalState(this)[key]; + } }); + }; + + var isArrayBuffer = function (it) { + var klass; + return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer'; + }; + + var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + + var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + return isTypedArrayIndex(target, key = toPrimitive(key, true)) + ? createPropertyDescriptor(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); + }; + + var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + if (isTypedArrayIndex(target, key = toPrimitive(key, true)) + && isObject(descriptor) + && has(descriptor, 'value') + && !has(descriptor, 'get') + && !has(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!has(descriptor, 'writable') || descriptor.writable) + && (!has(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); + }; + + if (descriptors) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + objectGetOwnPropertyDescriptor.f = wrappedGetOwnPropertyDescriptor; + objectDefineProperty.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype, 'buffer'); + addGetter(TypedArrayPrototype, 'byteOffset'); + addGetter(TypedArrayPrototype, 'byteLength'); + addGetter(TypedArrayPrototype, 'length'); + } + + _export({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + module.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+$/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global_1[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState(that); + if (CLAMPED) { value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; } + data.view[SETTER](index * BYTES + data.byteOffset, value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) { throw RangeError(WRONG_LENGTH); } + byteLength = $len - byteOffset; + if (byteLength < 0) { throw RangeError(WRONG_LENGTH); } + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) { throw RangeError(WRONG_LENGTH); } + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return fromList(TypedArrayConstructor, data); + } else { + return typedArrayFrom.call(TypedArrayConstructor, data); + } + setInternalState(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView(buffer) + }); + while (index < length) { addElement(that, index++); } + }); + + if (objectSetPrototypeOf) { objectSetPrototypeOf(TypedArrayConstructor, TypedArray); } + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = objectCreate(TypedArrayPrototype); + } else if (typedArrayConstructorsRequireWrappers) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME); + return inheritIfRequired(function () { + if (!isObject(data)) { return new NativeTypedArrayConstructor(toIndex(data)); } + if (isArrayBuffer(data)) { return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); } + if (isTypedArray(data)) { return fromList(TypedArrayConstructor, data); } + return typedArrayFrom.call(TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (objectSetPrototypeOf) { objectSetPrototypeOf(TypedArrayConstructor, TypedArray); } + forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + _export({ + global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS + }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; + } else { module.exports = function () { /* empty */ }; } + }); + + // `Int8Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Int8', function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Uint8Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Uint8ClampedArray` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Uint8', function (init) { + return function Uint8ClampedArray(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }, true); + + // `Int16Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Int16', function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Uint16Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Uint16', function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Int32Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Int32', function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Uint32Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Uint32', function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Float32Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Float32', function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + // `Float64Array` constructor + // https://tc39.github.io/ecma262/#sec-typedarray-objects + typedArrayConstructor('Float64', function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var exportTypedArrayStaticMethod$1 = arrayBufferViewCore.exportTypedArrayStaticMethod; + + + // `%TypedArray%.from` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.from + exportTypedArrayStaticMethod$1('from', typedArrayFrom, typedArrayConstructorsRequireWrappers); + + var aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor; + var exportTypedArrayStaticMethod$2 = arrayBufferViewCore.exportTypedArrayStaticMethod; + + // `%TypedArray%.of` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.of + exportTypedArrayStaticMethod$2('of', function of(/* ...items */) { + var arguments$1 = arguments; + + var index = 0; + var length = arguments.length; + var result = new (aTypedArrayConstructor$2(this))(length); + while (length > index) { result[index] = arguments$1[index++]; } + return result; + }, typedArrayConstructorsRequireWrappers); + + var aTypedArray$1 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.copyWithin` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin + exportTypedArrayMethod$1('copyWithin', function copyWithin(target, start /* , end */) { + return arrayCopyWithin.call(aTypedArray$1(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }); + + var $every$1 = arrayIteration.every; + + var aTypedArray$2 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$2 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.every` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every + exportTypedArrayMethod$2('every', function every(callbackfn /* , thisArg */) { + return $every$1(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var aTypedArray$3 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.fill` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill + // eslint-disable-next-line no-unused-vars + exportTypedArrayMethod$3('fill', function fill(value /* , start, end */) { + return arrayFill.apply(aTypedArray$3(this), arguments); + }); + + var $filter$1 = arrayIteration.filter; + + + var aTypedArray$4 = arrayBufferViewCore.aTypedArray; + var aTypedArrayConstructor$3 = arrayBufferViewCore.aTypedArrayConstructor; + var exportTypedArrayMethod$4 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter + exportTypedArrayMethod$4('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter$1(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var C = speciesConstructor(this, this.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor$3(C))(length); + while (length > index) { result[index] = list[index++]; } + return result; + }); + + var $find$1 = arrayIteration.find; + + var aTypedArray$5 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$5 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.find` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find + exportTypedArrayMethod$5('find', function find(predicate /* , thisArg */) { + return $find$1(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var $findIndex$1 = arrayIteration.findIndex; + + var aTypedArray$6 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex + exportTypedArrayMethod$6('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex$1(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var $forEach$2 = arrayIteration.forEach; + + var aTypedArray$7 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$7 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach + exportTypedArrayMethod$7('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach$2(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var $includes$1 = arrayIncludes.includes; + + var aTypedArray$8 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$8 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes + exportTypedArrayMethod$8('includes', function includes(searchElement /* , fromIndex */) { + return $includes$1(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }); + + var $indexOf$1 = arrayIncludes.indexOf; + + var aTypedArray$9 = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$9 = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof + exportTypedArrayMethod$9('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ITERATOR$5 = wellKnownSymbol('iterator'); + var Uint8Array$1 = global_1.Uint8Array; + var arrayValues = es_array_iterator.values; + var arrayKeys = es_array_iterator.keys; + var arrayEntries = es_array_iterator.entries; + var aTypedArray$a = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$a = arrayBufferViewCore.exportTypedArrayMethod; + var nativeTypedArrayIterator = Uint8Array$1 && Uint8Array$1.prototype[ITERATOR$5]; + + var CORRECT_ITER_NAME = !!nativeTypedArrayIterator + && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined); + + var typedArrayValues = function values() { + return arrayValues.call(aTypedArray$a(this)); + }; + + // `%TypedArray%.prototype.entries` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries + exportTypedArrayMethod$a('entries', function entries() { + return arrayEntries.call(aTypedArray$a(this)); + }); + // `%TypedArray%.prototype.keys` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys + exportTypedArrayMethod$a('keys', function keys() { + return arrayKeys.call(aTypedArray$a(this)); + }); + // `%TypedArray%.prototype.values` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values + exportTypedArrayMethod$a('values', typedArrayValues, !CORRECT_ITER_NAME); + // `%TypedArray%.prototype[@@iterator]` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator + exportTypedArrayMethod$a(ITERATOR$5, typedArrayValues, !CORRECT_ITER_NAME); + + var aTypedArray$b = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$b = arrayBufferViewCore.exportTypedArrayMethod; + var $join = [].join; + + // `%TypedArray%.prototype.join` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join + // eslint-disable-next-line no-unused-vars + exportTypedArrayMethod$b('join', function join(separator) { + return $join.apply(aTypedArray$b(this), arguments); + }); + + var aTypedArray$c = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$c = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.lastIndexOf` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof + // eslint-disable-next-line no-unused-vars + exportTypedArrayMethod$c('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + return arrayLastIndexOf.apply(aTypedArray$c(this), arguments); + }); + + var $map$1 = arrayIteration.map; + + + var aTypedArray$d = arrayBufferViewCore.aTypedArray; + var aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor; + var exportTypedArrayMethod$d = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.map` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map + exportTypedArrayMethod$d('map', function map(mapfn /* , thisArg */) { + return $map$1(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (aTypedArrayConstructor$4(speciesConstructor(O, O.constructor)))(length); + }); + }); + + var $reduce$1 = arrayReduce.left; + + var aTypedArray$e = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$e = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.reduce` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce + exportTypedArrayMethod$e('reduce', function reduce(callbackfn /* , initialValue */) { + return $reduce$1(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + }); + + var $reduceRight$1 = arrayReduce.right; + + var aTypedArray$f = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$f = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.reduceRicht` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright + exportTypedArrayMethod$f('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight$1(aTypedArray$f(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + }); + + var aTypedArray$g = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$g = arrayBufferViewCore.exportTypedArrayMethod; + var floor$7 = Math.floor; + + // `%TypedArray%.prototype.reverse` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse + exportTypedArrayMethod$g('reverse', function reverse() { + var that = this; + var length = aTypedArray$g(that).length; + var middle = floor$7(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }); + + var aTypedArray$h = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$h = arrayBufferViewCore.exportTypedArrayMethod; + + var FORCED$h = fails(function () { + // eslint-disable-next-line no-undef + new Int8Array(1).set({}); + }); + + // `%TypedArray%.prototype.set` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set + exportTypedArrayMethod$h('set', function set(arrayLike /* , offset */) { + aTypedArray$h(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) { throw RangeError('Wrong length'); } + while (index < len) { this[offset + index] = src[index++]; } + }, FORCED$h); + + var aTypedArray$i = arrayBufferViewCore.aTypedArray; + var aTypedArrayConstructor$5 = arrayBufferViewCore.aTypedArrayConstructor; + var exportTypedArrayMethod$i = arrayBufferViewCore.exportTypedArrayMethod; + var $slice = [].slice; + + var FORCED$i = fails(function () { + // eslint-disable-next-line no-undef + new Int8Array(1).slice(); + }); + + // `%TypedArray%.prototype.slice` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice + exportTypedArrayMethod$i('slice', function slice(start, end) { + var list = $slice.call(aTypedArray$i(this), start, end); + var C = speciesConstructor(this, this.constructor); + var index = 0; + var length = list.length; + var result = new (aTypedArrayConstructor$5(C))(length); + while (length > index) { result[index] = list[index++]; } + return result; + }, FORCED$i); + + var $some$1 = arrayIteration.some; + + var aTypedArray$j = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$j = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.some` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some + exportTypedArrayMethod$j('some', function some(callbackfn /* , thisArg */) { + return $some$1(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var aTypedArray$k = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$k = arrayBufferViewCore.exportTypedArrayMethod; + var $sort = [].sort; + + // `%TypedArray%.prototype.sort` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort + exportTypedArrayMethod$k('sort', function sort(comparefn) { + return $sort.call(aTypedArray$k(this), comparefn); + }); + + var aTypedArray$l = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$l = arrayBufferViewCore.exportTypedArrayMethod; + + // `%TypedArray%.prototype.subarray` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray + exportTypedArrayMethod$l('subarray', function subarray(begin, end) { + var O = aTypedArray$l(this); + var length = O.length; + var beginIndex = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O.constructor))( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) + ); + }); + + var Int8Array$3 = global_1.Int8Array; + var aTypedArray$m = arrayBufferViewCore.aTypedArray; + var exportTypedArrayMethod$m = arrayBufferViewCore.exportTypedArrayMethod; + var $toLocaleString = [].toLocaleString; + var $slice$1 = [].slice; + + // iOS Safari 6.x fails here + var TO_LOCALE_STRING_BUG = !!Int8Array$3 && fails(function () { + $toLocaleString.call(new Int8Array$3(1)); + }); + + var FORCED$j = fails(function () { + return [1, 2].toLocaleString() != new Int8Array$3([1, 2]).toLocaleString(); + }) || !fails(function () { + Int8Array$3.prototype.toLocaleString.call([1, 2]); + }); + + // `%TypedArray%.prototype.toLocaleString` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring + exportTypedArrayMethod$m('toLocaleString', function toLocaleString() { + return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments); + }, FORCED$j); + + var exportTypedArrayMethod$n = arrayBufferViewCore.exportTypedArrayMethod; + + + + var Uint8Array$2 = global_1.Uint8Array; + var Uint8ArrayPrototype = Uint8Array$2 && Uint8Array$2.prototype || {}; + var arrayToString = [].toString; + var arrayJoin = [].join; + + if (fails(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return arrayJoin.call(this); + }; + } + + var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; + + // `%TypedArray%.prototype.toString` method + // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring + exportTypedArrayMethod$n('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + var nativeApply = getBuiltIn('Reflect', 'apply'); + var functionApply = Function.apply; + + // MS Edge argumentsList argument is optional + var OPTIONAL_ARGUMENTS_LIST = !fails(function () { + nativeApply(function () { /* empty */ }); + }); + + // `Reflect.apply` method + // https://tc39.github.io/ecma262/#sec-reflect.apply + _export({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, { + apply: function apply(target, thisArgument, argumentsList) { + aFunction$1(target); + anObject(argumentsList); + return nativeApply + ? nativeApply(target, thisArgument, argumentsList) + : functionApply.call(target, thisArgument, argumentsList); + } + }); + + var nativeConstruct = getBuiltIn('Reflect', 'construct'); + + // `Reflect.construct` method + // https://tc39.github.io/ecma262/#sec-reflect.construct + // MS Edge supports only 2 arguments and argumentsList argument is optional + // FF Nightly sets third argument as `new.target`, but does not create `this` from it + var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); + }); + var ARGS_BUG = !fails(function () { + nativeConstruct(function () { /* empty */ }); + }); + var FORCED$k = NEW_TARGET_BUG || ARGS_BUG; + + _export({ target: 'Reflect', stat: true, forced: FORCED$k, sham: FORCED$k }, { + construct: function construct(Target, args /* , newTarget */) { + aFunction$1(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction$1(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) { return nativeConstruct(Target, args, newTarget); } + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (functionBind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = objectCreate(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } + }); + + // MS Edge has broken Reflect.defineProperty - throwing instead of returning false + var ERROR_INSTEAD_OF_FALSE = fails(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(objectDefineProperty.f({}, 1, { value: 1 }), 1, { value: 2 }); + }); + + // `Reflect.defineProperty` method + // https://tc39.github.io/ecma262/#sec-reflect.defineproperty + _export({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !descriptors }, { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + var key = toPrimitive(propertyKey, true); + anObject(attributes); + try { + objectDefineProperty.f(target, key, attributes); + return true; + } catch (error) { + return false; + } + } + }); + + var getOwnPropertyDescriptor$8 = objectGetOwnPropertyDescriptor.f; + + // `Reflect.deleteProperty` method + // https://tc39.github.io/ecma262/#sec-reflect.deleteproperty + _export({ target: 'Reflect', stat: true }, { + deleteProperty: function deleteProperty(target, propertyKey) { + var descriptor = getOwnPropertyDescriptor$8(anObject(target), propertyKey); + return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; + } + }); + + // `Reflect.get` method + // https://tc39.github.io/ecma262/#sec-reflect.get + function get$2(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var descriptor, prototype; + if (anObject(target) === receiver) { return target[propertyKey]; } + if (descriptor = objectGetOwnPropertyDescriptor.f(target, propertyKey)) { return has(descriptor, 'value') + ? descriptor.value + : descriptor.get === undefined + ? undefined + : descriptor.get.call(receiver); } + if (isObject(prototype = objectGetPrototypeOf(target))) { return get$2(prototype, propertyKey, receiver); } + } + + _export({ target: 'Reflect', stat: true }, { + get: get$2 + }); + + // `Reflect.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor + _export({ target: 'Reflect', stat: true, sham: !descriptors }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return objectGetOwnPropertyDescriptor.f(anObject(target), propertyKey); + } + }); + + // `Reflect.getPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-reflect.getprototypeof + _export({ target: 'Reflect', stat: true, sham: !correctPrototypeGetter }, { + getPrototypeOf: function getPrototypeOf(target) { + return objectGetPrototypeOf(anObject(target)); + } + }); + + // `Reflect.has` method + // https://tc39.github.io/ecma262/#sec-reflect.has + _export({ target: 'Reflect', stat: true }, { + has: function has(target, propertyKey) { + return propertyKey in target; + } + }); + + var objectIsExtensible = Object.isExtensible; + + // `Reflect.isExtensible` method + // https://tc39.github.io/ecma262/#sec-reflect.isextensible + _export({ target: 'Reflect', stat: true }, { + isExtensible: function isExtensible(target) { + anObject(target); + return objectIsExtensible ? objectIsExtensible(target) : true; + } + }); + + // `Reflect.ownKeys` method + // https://tc39.github.io/ecma262/#sec-reflect.ownkeys + _export({ target: 'Reflect', stat: true }, { + ownKeys: ownKeys + }); + + // `Reflect.preventExtensions` method + // https://tc39.github.io/ecma262/#sec-reflect.preventextensions + _export({ target: 'Reflect', stat: true, sham: !freezing }, { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); + if (objectPreventExtensions) { objectPreventExtensions(target); } + return true; + } catch (error) { + return false; + } + } + }); + + // `Reflect.set` method + // https://tc39.github.io/ecma262/#sec-reflect.set + function set$3(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDescriptor = objectGetOwnPropertyDescriptor.f(anObject(target), propertyKey); + var existingDescriptor, prototype; + if (!ownDescriptor) { + if (isObject(prototype = objectGetPrototypeOf(target))) { + return set$3(prototype, propertyKey, V, receiver); + } + ownDescriptor = createPropertyDescriptor(0); + } + if (has(ownDescriptor, 'value')) { + if (ownDescriptor.writable === false || !isObject(receiver)) { return false; } + if (existingDescriptor = objectGetOwnPropertyDescriptor.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) { return false; } + existingDescriptor.value = V; + objectDefineProperty.f(receiver, propertyKey, existingDescriptor); + } else { objectDefineProperty.f(receiver, propertyKey, createPropertyDescriptor(0, V)); } + return true; + } + return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); + } + + // MS Edge 17-18 Reflect.set allows setting the property to object + // with non-writable property on the prototype + var MS_EDGE_BUG = fails(function () { + var object = objectDefineProperty.f({}, 'a', { configurable: true }); + // eslint-disable-next-line no-undef + return Reflect.set(objectGetPrototypeOf(object), 'a', 1, object) !== false; + }); + + _export({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, { + set: set$3 + }); + + // `Reflect.setPrototypeOf` method + // https://tc39.github.io/ecma262/#sec-reflect.setprototypeof + if (objectSetPrototypeOf) { _export({ target: 'Reflect', stat: true }, { + setPrototypeOf: function setPrototypeOf(target, proto) { + anObject(target); + aPossiblePrototype(proto); + try { + objectSetPrototypeOf(target, proto); + return true; + } catch (error) { + return false; + } + } + }); } + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + var metadata = shared('metadata'); + var store$2 = metadata.store || (metadata.store = new es_weakMap()); + + var getOrCreateMetadataMap = function (target, targetKey, create) { + var targetMetadata = store$2.get(target); + if (!targetMetadata) { + if (!create) { return; } + store$2.set(target, targetMetadata = new es_map()); + } + var keyMetadata = targetMetadata.get(targetKey); + if (!keyMetadata) { + if (!create) { return; } + targetMetadata.set(targetKey, keyMetadata = new es_map()); + } return keyMetadata; + }; + + var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? false : metadataMap.has(MetadataKey); + }; + + var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); + }; + + var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { + getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); + }; + + var ordinaryOwnMetadataKeys = function (target, targetKey) { + var metadataMap = getOrCreateMetadataMap(target, targetKey, false); + var keys = []; + if (metadataMap) { metadataMap.forEach(function (_, key) { keys.push(key); }); } + return keys; + }; + + var toMetadataKey = function (it) { + return it === undefined || typeof it == 'symbol' ? it : String(it); + }; + + var reflectMetadata = { + store: store$2, + getMap: getOrCreateMetadataMap, + has: ordinaryHasOwnMetadata, + get: ordinaryGetOwnMetadata, + set: ordinaryDefineOwnMetadata, + keys: ordinaryOwnMetadataKeys, + toKey: toMetadataKey + }; + + var toMetadataKey$1 = reflectMetadata.toKey; + var ordinaryDefineOwnMetadata$1 = reflectMetadata.set; + + // `Reflect.defineMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { + var targetKey = arguments.length < 4 ? undefined : toMetadataKey$1(arguments[3]); + ordinaryDefineOwnMetadata$1(metadataKey, metadataValue, anObject(target), targetKey); + } + }); + + var toMetadataKey$2 = reflectMetadata.toKey; + var getOrCreateMetadataMap$1 = reflectMetadata.getMap; + var store$3 = reflectMetadata.store; + + // `Reflect.deleteMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey$2(arguments[2]); + var metadataMap = getOrCreateMetadataMap$1(anObject(target), targetKey, false); + if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) { return false; } + if (metadataMap.size) { return true; } + var targetMetadata = store$3.get(target); + targetMetadata['delete'](targetKey); + return !!targetMetadata.size || store$3['delete'](target); + } + }); + + var ordinaryHasOwnMetadata$1 = reflectMetadata.has; + var ordinaryGetOwnMetadata$1 = reflectMetadata.get; + var toMetadataKey$3 = reflectMetadata.toKey; + + var ordinaryGetMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata$1(MetadataKey, O, P); + if (hasOwn) { return ordinaryGetOwnMetadata$1(MetadataKey, O, P); } + var parent = objectGetPrototypeOf(O); + return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; + }; + + // `Reflect.getMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey$3(arguments[2]); + return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); + } + }); + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + + var ordinaryOwnMetadataKeys$1 = reflectMetadata.keys; + var toMetadataKey$4 = reflectMetadata.toKey; + + var from = function (iter) { + var result = []; + iterate_1(iter, result.push, result); + return result; + }; + + var ordinaryMetadataKeys = function (O, P) { + var oKeys = ordinaryOwnMetadataKeys$1(O, P); + var parent = objectGetPrototypeOf(O); + if (parent === null) { return oKeys; } + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new es_set(oKeys.concat(pKeys))) : pKeys : oKeys; + }; + + // `Reflect.getMetadataKeys` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey$4(arguments[1]); + return ordinaryMetadataKeys(anObject(target), targetKey); + } + }); + + var ordinaryGetOwnMetadata$2 = reflectMetadata.get; + var toMetadataKey$5 = reflectMetadata.toKey; + + // `Reflect.getOwnMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey$5(arguments[2]); + return ordinaryGetOwnMetadata$2(metadataKey, anObject(target), targetKey); + } + }); + + var ordinaryOwnMetadataKeys$2 = reflectMetadata.keys; + var toMetadataKey$6 = reflectMetadata.toKey; + + // `Reflect.getOwnMetadataKeys` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey$6(arguments[1]); + return ordinaryOwnMetadataKeys$2(anObject(target), targetKey); + } + }); + + var ordinaryHasOwnMetadata$2 = reflectMetadata.has; + var toMetadataKey$7 = reflectMetadata.toKey; + + var ordinaryHasMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata$2(MetadataKey, O, P); + if (hasOwn) { return true; } + var parent = objectGetPrototypeOf(O); + return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; + }; + + // `Reflect.hasMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey$7(arguments[2]); + return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); + } + }); + + var ordinaryHasOwnMetadata$3 = reflectMetadata.has; + var toMetadataKey$8 = reflectMetadata.toKey; + + // `Reflect.hasOwnMetadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey$8(arguments[2]); + return ordinaryHasOwnMetadata$3(metadataKey, anObject(target), targetKey); + } + }); + + var toMetadataKey$9 = reflectMetadata.toKey; + var ordinaryDefineOwnMetadata$2 = reflectMetadata.set; + + // `Reflect.metadata` method + // https://github.com/rbuckton/reflect-metadata + _export({ target: 'Reflect', stat: true }, { + metadata: function metadata(metadataKey, metadataValue) { + return function decorator(target, key) { + ordinaryDefineOwnMetadata$2(metadataKey, metadataValue, anObject(target), toMetadataKey$9(key)); + }; + } + }); + + // `Math.iaddh` method + // https://gist.github.com/BrendanEich/4294d5c212a6d2254703 + // TODO: Remove from `core-js@4` + _export({ target: 'Math', stat: true }, { + iaddh: function iaddh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0; + } + }); + + // `Math.isubh` method + // https://gist.github.com/BrendanEich/4294d5c212a6d2254703 + // TODO: Remove from `core-js@4` + _export({ target: 'Math', stat: true }, { + isubh: function isubh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0; + } + }); + + // `Math.imulh` method + // https://gist.github.com/BrendanEich/4294d5c212a6d2254703 + // TODO: Remove from `core-js@4` + _export({ target: 'Math', stat: true }, { + imulh: function imulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >> 16; + var v1 = $v >> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16); + } + }); + + // `Math.umulh` method + // https://gist.github.com/BrendanEich/4294d5c212a6d2254703 + // TODO: Remove from `core-js@4` + _export({ target: 'Math', stat: true }, { + umulh: function umulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >>> 16; + var v1 = $v >>> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16); + } + }); + + var charAt$2 = stringMultibyte.charAt; + + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + _export({ target: 'String', proto: true }, { + at: function at(pos) { + return charAt$2(this, pos); + } + }); + + var ITERATOR$6 = wellKnownSymbol('iterator'); + + var nativeUrl = !fails(function () { + var url = new URL('b?a=1&b=2&c=3', 'http://a'); + var searchParams = url.searchParams; + var result = ''; + url.pathname = 'c%20d'; + searchParams.forEach(function (value, key) { + searchParams['delete']('b'); + result += key + value; + }); + return (isPure && !url.toJSON) + || !searchParams.sort + || url.href !== 'http://a/c%20d?a=1&c=3' + || searchParams.get('c') !== '3' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !searchParams[ITERATOR$6] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('http://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; + }); + + // based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js + var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + var base = 36; + var tMin = 1; + var tMax = 26; + var skew = 38; + var damp = 700; + var initialBias = 72; + var initialN = 128; // 0x80 + var delimiter = '-'; // '\x2D' + var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars + var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; + var baseMinusTMin = base - tMin; + var floor$8 = Math.floor; + var stringFromCharCode = String.fromCharCode; + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ + var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + }; + + /** + * Converts a digit/integer into a basic code point. + */ + var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); + }; + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ + var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor$8(delta / damp) : delta >> 1; + delta += floor$8(delta / numPoints); + for (; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor$8(delta / baseMinusTMin); + } + return floor$8(k + (baseMinusTMin + 1) * delta / (delta + skew)); + }; + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ + // eslint-disable-next-line max-statements + var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor$8((maxInt - delta) / handledCPCountPlusOne)) { + throw RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw RangeError(OVERFLOW_ERROR); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base; /* no condition */; k += base) { + var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { break; } + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT))); + q = floor$8(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + } + return output.join(''); + }; + + var stringPunycodeToAscii = function (input) { + var encoded = []; + var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label); + } + return encoded.join('.'); + }; + + var getIterator = function (it) { + var iteratorMethod = getIteratorMethod(it); + if (typeof iteratorMethod != 'function') { + throw TypeError(String(it) + ' is not iterable'); + } return anObject(iteratorMethod.call(it)); + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + + + + + + + + + + + + + + + + + var $fetch$1 = getBuiltIn('fetch'); + var Headers = getBuiltIn('Headers'); + var ITERATOR$7 = wellKnownSymbol('iterator'); + var URL_SEARCH_PARAMS = 'URLSearchParams'; + var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; + var setInternalState$9 = internalState.set; + var getInternalParamsState = internalState.getterFor(URL_SEARCH_PARAMS); + var getInternalIteratorState = internalState.getterFor(URL_SEARCH_PARAMS_ITERATOR); + + var plus = /\+/g; + var sequences = Array(4); + + var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); + }; + + var percentDecode = function (sequence) { + try { + return decodeURIComponent(sequence); + } catch (error) { + return sequence; + } + }; + + var deserialize = function (it) { + var result = it.replace(plus, ' '); + var bytes = 4; + try { + return decodeURIComponent(result); + } catch (error) { + while (bytes) { + result = result.replace(percentSequence(bytes--), percentDecode); + } + return result; + } + }; + + var find$1 = /[!'()~]|%20/g; + + var replace = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' + }; + + var replacer = function (match) { + return replace[match]; + }; + + var serialize = function (it) { + return encodeURIComponent(it).replace(find$1, replacer); + }; + + var parseSearchParams = function (result, query) { + if (query) { + var attributes = query.split('&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = attribute.split('='); + result.push({ + key: deserialize(entry.shift()), + value: deserialize(entry.join('=')) + }); + } + } + } + }; + + var updateSearchParams = function (query) { + this.entries.length = 0; + parseSearchParams(this.entries, query); + }; + + var validateArgumentsLength = function (passed, required) { + if (passed < required) { throw TypeError('Not enough arguments'); } + }; + + var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState$9(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + iterator: getIterator(getInternalParamsState(params).entries), + kind: kind + }); + }, 'Iterator', function next() { + var state = getInternalIteratorState(this); + var kind = state.kind; + var step = state.iterator.next(); + var entry = step.value; + if (!step.done) { + step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; + } return step; + }); + + // `URLSearchParams` constructor + // https://url.spec.whatwg.org/#interface-urlsearchparams + var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS); + var init = arguments.length > 0 ? arguments[0] : undefined; + var that = this; + var entries = []; + var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; + + setInternalState$9(that, { + type: URL_SEARCH_PARAMS, + entries: entries, + updateURL: function () { /* empty */ }, + updateSearchParams: updateSearchParams + }); + + if (init !== undefined) { + if (isObject(init)) { + iteratorMethod = getIteratorMethod(init); + if (typeof iteratorMethod === 'function') { + iterator = iteratorMethod.call(init); + next = iterator.next; + while (!(step = next.call(iterator)).done) { + entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; + if ( + (first = entryNext.call(entryIterator)).done || + (second = entryNext.call(entryIterator)).done || + !entryNext.call(entryIterator).done + ) { throw TypeError('Expected sequence with length 2'); } + entries.push({ key: first.value + '', value: second.value + '' }); + } + } else { for (key in init) { if (has(init, key)) { entries.push({ key: key, value: init[key] + '' }); } } } + } else { + parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + ''); + } + } + }; + + var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + + redefineAll(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.appent` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + validateArgumentsLength(arguments.length, 2); + var state = getInternalParamsState(this); + state.entries.push({ key: name + '', value: value + '' }); + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) { entries.splice(index, 1); } + else { index++; } + } + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) { return entries[index].value; } + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) { result.push(entries[index].value); } + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) { return true; } + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var found = false; + var key = name + ''; + var val = value + ''; + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) { entries.splice(index--, 1); } + else { + found = true; + entry.value = val; + } + } + } + if (!found) { entries.push({ key: key, value: val }); } + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + var entries = state.entries; + // Array#sort is not stable in some engines + var slice = entries.slice(); + var entry, entriesIndex, sliceIndex; + entries.length = 0; + for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) { + entry = slice[sliceIndex]; + for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) { + if (entries[entriesIndex].key > entry.key) { + entries.splice(entriesIndex, 0, entry); + break; + } + } + if (entriesIndex === sliceIndex) { entries.push(entry); } + } + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } + }, { enumerable: true }); + + // `URLSearchParams.prototype[@@iterator]` method + redefine(URLSearchParamsPrototype, ITERATOR$7, URLSearchParamsPrototype.entries); + + // `URLSearchParams.prototype.toString` method + // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior + redefine(URLSearchParamsPrototype, 'toString', function toString() { + var entries = getInternalParamsState(this).entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + result.push(serialize(entry.key) + '=' + serialize(entry.value)); + } return result.join('&'); + }, { enumerable: true }); + + setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + + _export({ global: true, forced: !nativeUrl }, { + URLSearchParams: URLSearchParamsConstructor + }); + + // Wrap `fetch` for correct work with polyfilled `URLSearchParams` + // https://github.com/zloirock/core-js/issues/674 + if (!nativeUrl && typeof $fetch$1 == 'function' && typeof Headers == 'function') { + _export({ global: true, enumerable: true, forced: true }, { + fetch: function fetch(input /* , init */) { + var args = [input]; + var init, body, headers; + if (arguments.length > 1) { + init = arguments[1]; + if (isObject(init)) { + body = init.body; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headers.has('content-type')) { + headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + init = objectCreate(init, { + body: createPropertyDescriptor(0, String(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } + args.push(init); + } return $fetch$1.apply(this, args); + } + }); + } + + var web_urlSearchParams = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + + + + + + + var codeAt$1 = stringMultibyte.codeAt; + + + + + + var NativeURL = global_1.URL; + var URLSearchParams$1 = web_urlSearchParams.URLSearchParams; + var getInternalSearchParamsState = web_urlSearchParams.getState; + var setInternalState$a = internalState.set; + var getInternalURLState = internalState.getterFor('URL'); + var floor$9 = Math.floor; + var pow$4 = Math.pow; + + var INVALID_AUTHORITY = 'Invalid authority'; + var INVALID_SCHEME = 'Invalid scheme'; + var INVALID_HOST = 'Invalid host'; + var INVALID_PORT = 'Invalid port'; + + var ALPHA = /[A-Za-z]/; + var ALPHANUMERIC = /[\d+\-.A-Za-z]/; + var DIGIT = /\d/; + var HEX_START = /^(0x|0X)/; + var OCT = /^[0-7]+$/; + var DEC = /^\d+$/; + var HEX = /^[\dA-Fa-f]+$/; + // eslint-disable-next-line no-control-regex + var FORBIDDEN_HOST_CODE_POINT = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/; + // eslint-disable-next-line no-control-regex + var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/; + // eslint-disable-next-line no-control-regex + var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g; + // eslint-disable-next-line no-control-regex + var TAB_AND_NEW_LINE = /[\u0009\u000A\u000D]/g; + var EOF; + + var parseHost = function (url, input) { + var result, codePoints, index; + if (input.charAt(0) == '[') { + if (input.charAt(input.length - 1) != ']') { return INVALID_HOST; } + result = parseIPv6(input.slice(1, -1)); + if (!result) { return INVALID_HOST; } + url.host = result; + // opaque host + } else if (!isSpecial(url)) { + if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) { return INVALID_HOST; } + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + url.host = result; + } else { + input = stringPunycodeToAscii(input); + if (FORBIDDEN_HOST_CODE_POINT.test(input)) { return INVALID_HOST; } + result = parseIPv4(input); + if (result === null) { return INVALID_HOST; } + url.host = result; + } + }; + + var parseIPv4 = function (input) { + var parts = input.split('.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.pop(); + } + partsLength = parts.length; + if (partsLength > 4) { return input; } + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part == '') { return input; } + radix = 10; + if (part.length > 1 && part.charAt(0) == '0') { + radix = HEX_START.test(part) ? 16 : 8; + part = part.slice(radix == 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) { return input; } + number = parseInt(part, radix); + } + numbers.push(number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow$4(256, 5 - partsLength)) { return null; } + } else if (number > 255) { return null; } + } + ipv4 = numbers.pop(); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow$4(256, 3 - index); + } + return ipv4; + }; + + // eslint-disable-next-line max-statements + var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var char = function () { + return input.charAt(pointer); + }; + + if (char() == ':') { + if (input.charAt(1) != ':') { return; } + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (char()) { + if (pieceIndex == 8) { return; } + if (char() == ':') { + if (compress !== null) { return; } + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && HEX.test(char())) { + value = value * 16 + parseInt(char(), 16); + pointer++; + length++; + } + if (char() == '.') { + if (length == 0) { return; } + pointer -= length; + if (pieceIndex > 6) { return; } + numbersSeen = 0; + while (char()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (char() == '.' && numbersSeen < 4) { pointer++; } + else { return; } + } + if (!DIGIT.test(char())) { return; } + while (DIGIT.test(char())) { + number = parseInt(char(), 10); + if (ipv4Piece === null) { ipv4Piece = number; } + else if (ipv4Piece == 0) { return; } + else { ipv4Piece = ipv4Piece * 10 + number; } + if (ipv4Piece > 255) { return; } + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen == 2 || numbersSeen == 4) { pieceIndex++; } + } + if (numbersSeen != 4) { return; } + break; + } else if (char() == ':') { + pointer++; + if (!char()) { return; } + } else if (char()) { return; } + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex != 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex != 8) { return; } + return address; + }; + + var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) { currStart = index; } + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; + }; + + var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + result.unshift(host % 256); + host = floor$9(host / 256); + } return result.join('.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) { continue; } + if (ignore0) { ignore0 = false; } + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += host[index].toString(16); + if (index < 7) { result += ':'; } + } + } + return '[' + result + ']'; + } return host; + }; + + var C0ControlPercentEncodeSet = {}; + var fragmentPercentEncodeSet = objectAssign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 + }); + var pathPercentEncodeSet = objectAssign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 + }); + var userinfoPercentEncodeSet = objectAssign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 + }); + + var percentEncode = function (char, set) { + var code = codeAt$1(char, 0); + return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char); + }; + + var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + + var isSpecial = function (url) { + return has(specialSchemes, url.scheme); + }; + + var includesCredentials = function (url) { + return url.username != '' || url.password != ''; + }; + + var cannotHaveUsernamePasswordPort = function (url) { + return !url.host || url.cannotBeABaseURL || url.scheme == 'file'; + }; + + var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length == 2 && ALPHA.test(string.charAt(0)) + && ((second = string.charAt(1)) == ':' || (!normalized && second == '|')); + }; + + var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && ( + string.length == 2 || + ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#') + ); + }; + + var shortenURLsPath = function (url) { + var path = url.path; + var pathSize = path.length; + if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { + path.pop(); + } + }; + + var isSingleDot = function (segment) { + return segment === '.' || segment.toLowerCase() === '%2e'; + }; + + var isDoubleDot = function (segment) { + segment = segment.toLowerCase(); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; + }; + + // States: + var SCHEME_START = {}; + var SCHEME = {}; + var NO_SCHEME = {}; + var SPECIAL_RELATIVE_OR_AUTHORITY = {}; + var PATH_OR_AUTHORITY = {}; + var RELATIVE = {}; + var RELATIVE_SLASH = {}; + var SPECIAL_AUTHORITY_SLASHES = {}; + var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; + var AUTHORITY = {}; + var HOST = {}; + var HOSTNAME = {}; + var PORT = {}; + var FILE = {}; + var FILE_SLASH = {}; + var FILE_HOST = {}; + var PATH_START = {}; + var PATH = {}; + var CANNOT_BE_A_BASE_URL_PATH = {}; + var QUERY = {}; + var FRAGMENT = {}; + + // eslint-disable-next-line max-statements + var parseURL = function (url, input, stateOverride, base) { + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, char, bufferCodePoints, failure; + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, ''); + } + + input = input.replace(TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + char = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (char && ALPHA.test(char)) { + buffer += char.toLowerCase(); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else { return INVALID_SCHEME; } + break; + + case SCHEME: + if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) { + buffer += char.toLowerCase(); + } else if (char == ':') { + if (stateOverride && ( + (isSpecial(url) != has(specialSchemes, buffer)) || + (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) { return; } + url.scheme = buffer; + if (stateOverride) { + if (isSpecial(url) && specialSchemes[url.scheme] == url.port) { url.port = null; } + return; + } + buffer = ''; + if (url.scheme == 'file') { + state = FILE; + } else if (isSpecial(url) && base && base.scheme == url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (isSpecial(url)) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] == '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + url.path.push(''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else { return INVALID_SCHEME; } + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && char != '#')) { return INVALID_SCHEME; } + if (base.cannotBeABaseURL && char == '#') { + url.scheme = base.scheme; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme == 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (char == '/' && codePoints[pointer + 1] == '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (char == '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (char == EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '/' || (char == '\\' && isSpecial(url))) { + state = RELATIVE_SLASH; + } else if (char == '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.path.pop(); + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (isSpecial(url) && (char == '/' || char == '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (char == '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (char != '/' || buffer.charAt(pointer + 1) != '/') { continue; } + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (char != '/' && char != '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (char == '@') { + if (seenAt) { buffer = '%40' + buffer; } + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint == ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) { url.password += encodedCodePoints; } + else { url.username += encodedCodePoints; } + } + buffer = ''; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (seenAt && buffer == '') { return INVALID_AUTHORITY; } + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else { buffer += char; } + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme == 'file') { + state = FILE_HOST; + continue; + } else if (char == ':' && !seenBracket) { + if (buffer == '') { return INVALID_HOST; } + failure = parseHost(url, buffer); + if (failure) { return failure; } + buffer = ''; + state = PORT; + if (stateOverride == HOSTNAME) { return; } + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (isSpecial(url) && buffer == '') { return INVALID_HOST; } + if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) { return; } + failure = parseHost(url, buffer); + if (failure) { return failure; } + buffer = ''; + state = PATH_START; + if (stateOverride) { return; } + continue; + } else { + if (char == '[') { seenBracket = true; } + else if (char == ']') { seenBracket = false; } + buffer += char; + } break; + + case PORT: + if (DIGIT.test(char)) { + buffer += char; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) || + stateOverride + ) { + if (buffer != '') { + var port = parseInt(buffer, 10); + if (port > 0xFFFF) { return INVALID_PORT; } + url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) { return; } + state = PATH_START; + continue; + } else { return INVALID_PORT; } + break; + + case FILE: + url.scheme = 'file'; + if (char == '/' || char == '\\') { state = FILE_SLASH; } + else if (base && base.scheme == 'file') { + if (char == EOF) { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '?') { + url.host = base.host; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + url.host = base.host; + url.path = base.path.slice(); + shortenURLsPath(url); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (char == '/' || char == '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + if (isWindowsDriveLetter(base.path[0], true)) { url.path.push(base.path[0]); } + else { url.host = base.host; } + } + state = PATH; + continue; + + case FILE_HOST: + if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer == '') { + url.host = ''; + if (stateOverride) { return; } + state = PATH_START; + } else { + failure = parseHost(url, buffer); + if (failure) { return failure; } + if (url.host == 'localhost') { url.host = ''; } + if (stateOverride) { return; } + buffer = ''; + state = PATH_START; + } continue; + } else { buffer += char; } + break; + + case PATH_START: + if (isSpecial(url)) { + state = PATH; + if (char != '/' && char != '\\') { continue; } + } else if (!stateOverride && char == '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + state = PATH; + if (char != '/') { continue; } + } break; + + case PATH: + if ( + char == EOF || char == '/' || + (char == '\\' && isSpecial(url)) || + (!stateOverride && (char == '?' || char == '#')) + ) { + if (isDoubleDot(buffer)) { + shortenURLsPath(url); + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else if (isSingleDot(buffer)) { + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else { + if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) { url.host = ''; } + buffer = buffer.charAt(0) + ':'; // normalize windows drive letter + } + url.path.push(buffer); + } + buffer = ''; + if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) { + while (url.path.length > 1 && url.path[0] === '') { + url.path.shift(); + } + } + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(char, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + url.path[0] += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + if (char == "'" && isSpecial(url)) { url.query += '%27'; } + else if (char == '#') { url.query += '%23'; } + else { url.query += percentEncode(char, C0ControlPercentEncodeSet); } + } break; + + case FRAGMENT: + if (char != EOF) { url.fragment += percentEncode(char, fragmentPercentEncodeSet); } + break; + } + + pointer++; + } + }; + + // `URL` constructor + // https://url.spec.whatwg.org/#url-class + var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLConstructor, 'URL'); + var base = arguments.length > 1 ? arguments[1] : undefined; + var urlString = String(url); + var state = setInternalState$a(that, { type: 'URL' }); + var baseState, failure; + if (base !== undefined) { + if (base instanceof URLConstructor) { baseState = getInternalURLState(base); } + else { + failure = parseURL(baseState = {}, String(base)); + if (failure) { throw TypeError(failure); } + } + } + failure = parseURL(state, urlString, null, baseState); + if (failure) { throw TypeError(failure); } + var searchParams = state.searchParams = new URLSearchParams$1(); + var searchParamsState = getInternalSearchParamsState(searchParams); + searchParamsState.updateSearchParams(state.query); + searchParamsState.updateURL = function () { + state.query = String(searchParams) || null; + }; + if (!descriptors) { + that.href = serializeURL.call(that); + that.origin = getOrigin.call(that); + that.protocol = getProtocol.call(that); + that.username = getUsername.call(that); + that.password = getPassword.call(that); + that.host = getHost.call(that); + that.hostname = getHostname.call(that); + that.port = getPort.call(that); + that.pathname = getPathname.call(that); + that.search = getSearch.call(that); + that.searchParams = getSearchParams.call(that); + that.hash = getHash.call(that); + } + }; + + var URLPrototype = URLConstructor.prototype; + + var serializeURL = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (includesCredentials(url)) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) { output += ':' + port; } + } else if (scheme == 'file') { output += '//'; } + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; + if (query !== null) { output += '?' + query; } + if (fragment !== null) { output += '#' + fragment; } + return output; + }; + + var getOrigin = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var port = url.port; + if (scheme == 'blob') { try { + return new URL(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } } + if (scheme == 'file' || !isSpecial(url)) { return 'null'; } + return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : ''); + }; + + var getProtocol = function () { + return getInternalURLState(this).scheme + ':'; + }; + + var getUsername = function () { + return getInternalURLState(this).username; + }; + + var getPassword = function () { + return getInternalURLState(this).password; + }; + + var getHost = function () { + var url = getInternalURLState(this); + var host = url.host; + var port = url.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; + }; + + var getHostname = function () { + var host = getInternalURLState(this).host; + return host === null ? '' : serializeHost(host); + }; + + var getPort = function () { + var port = getInternalURLState(this).port; + return port === null ? '' : String(port); + }; + + var getPathname = function () { + var url = getInternalURLState(this); + var path = url.path; + return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; + }; + + var getSearch = function () { + var query = getInternalURLState(this).query; + return query ? '?' + query : ''; + }; + + var getSearchParams = function () { + return getInternalURLState(this).searchParams; + }; + + var getHash = function () { + var fragment = getInternalURLState(this).fragment; + return fragment ? '#' + fragment : ''; + }; + + var accessorDescriptor = function (getter, setter) { + return { get: getter, set: setter, configurable: true, enumerable: true }; + }; + + if (descriptors) { + objectDefineProperties(URLPrototype, { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + href: accessorDescriptor(serializeURL, function (href) { + var url = getInternalURLState(this); + var urlString = String(href); + var failure = parseURL(url, urlString); + if (failure) { throw TypeError(failure); } + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + origin: accessorDescriptor(getOrigin), + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + protocol: accessorDescriptor(getProtocol, function (protocol) { + var url = getInternalURLState(this); + parseURL(url, String(protocol) + ':', SCHEME_START); + }), + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + username: accessorDescriptor(getUsername, function (username) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(username)); + if (cannotHaveUsernamePasswordPort(url)) { return; } + url.username = ''; + for (var i = 0; i < codePoints.length; i++) { + url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + password: accessorDescriptor(getPassword, function (password) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(password)); + if (cannotHaveUsernamePasswordPort(url)) { return; } + url.password = ''; + for (var i = 0; i < codePoints.length; i++) { + url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + host: accessorDescriptor(getHost, function (host) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) { return; } + parseURL(url, String(host), HOST); + }), + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + hostname: accessorDescriptor(getHostname, function (hostname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) { return; } + parseURL(url, String(hostname), HOSTNAME); + }), + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + port: accessorDescriptor(getPort, function (port) { + var url = getInternalURLState(this); + if (cannotHaveUsernamePasswordPort(url)) { return; } + port = String(port); + if (port == '') { url.port = null; } + else { parseURL(url, port, PORT); } + }), + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + pathname: accessorDescriptor(getPathname, function (pathname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) { return; } + url.path = []; + parseURL(url, pathname + '', PATH_START); + }), + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + search: accessorDescriptor(getSearch, function (search) { + var url = getInternalURLState(this); + search = String(search); + if (search == '') { + url.query = null; + } else { + if ('?' == search.charAt(0)) { search = search.slice(1); } + url.query = ''; + parseURL(url, search, QUERY); + } + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + searchParams: accessorDescriptor(getSearchParams), + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + hash: accessorDescriptor(getHash, function (hash) { + var url = getInternalURLState(this); + hash = String(hash); + if (hash == '') { + url.fragment = null; + return; + } + if ('#' == hash.charAt(0)) { hash = hash.slice(1); } + url.fragment = ''; + parseURL(url, hash, FRAGMENT); + }) + }); + } + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + redefine(URLPrototype, 'toJSON', function toJSON() { + return serializeURL.call(this); + }, { enumerable: true }); + + // `URL.prototype.toString` method + // https://url.spec.whatwg.org/#URL-stringification-behavior + redefine(URLPrototype, 'toString', function toString() { + return serializeURL.call(this); + }, { enumerable: true }); + + if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeCreateObjectURL) { redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) { + return nativeCreateObjectURL.apply(NativeURL, arguments); + }); } + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeRevokeObjectURL) { redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) { + return nativeRevokeObjectURL.apply(NativeURL, arguments); + }); } + } + + setToStringTag(URLConstructor, 'URL'); + + _export({ global: true, forced: !nativeUrl, sham: !descriptors }, { + URL: URLConstructor + }); + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + _export({ target: 'URL', proto: true, enumerable: true }, { + toJSON: function toJSON() { + return URL.prototype.toString.call(this); + } + }); + + var defineProperty$c = objectDefineProperty.f; + + // `Array.prototype.lastIndex` getter + // https://github.com/keithamus/proposal-array-last + if (descriptors && !('lastIndex' in [])) { + defineProperty$c(Array.prototype, 'lastIndex', { + configurable: true, + get: function lastIndex() { + var O = toObject(this); + var len = toLength(O.length); + return len == 0 ? 0 : len - 1; + } + }); + + addToUnscopables('lastIndex'); + } + + var defineProperty$d = objectDefineProperty.f; + + // `Array.prototype.lastIndex` accessor + // https://github.com/keithamus/proposal-array-last + if (descriptors && !('lastItem' in [])) { + defineProperty$d(Array.prototype, 'lastItem', { + configurable: true, + get: function lastItem() { + var O = toObject(this); + var len = toLength(O.length); + return len == 0 ? undefined : O[len - 1]; + }, + set: function lastItem(value) { + var O = toObject(this); + var len = toLength(O.length); + return O[len == 0 ? 0 : len - 1] = value; + } + }); + + addToUnscopables('lastItem'); + } + + // `Map.groupBy` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', stat: true }, { + groupBy: function groupBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction$1(keyDerivative); + var has = aFunction$1(newMap.has); + var get = aFunction$1(newMap.get); + var set = aFunction$1(newMap.set); + iterate_1(iterable, function (element) { + var derivedKey = keyDerivative(element); + if (!has.call(newMap, derivedKey)) { set.call(newMap, derivedKey, [element]); } + else { get.call(newMap, derivedKey).push(element); } + }); + return newMap; + } + }); + + // `Map.keyBy` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', stat: true }, { + keyBy: function keyBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction$1(keyDerivative); + var setter = aFunction$1(newMap.set); + iterate_1(iterable, function (element) { + setter.call(newMap, keyDerivative(element), element); + }); + return newMap; + } + }); + + // https://github.com/tc39/collection-methods + var collectionDeleteAll = function (/* ...elements */) { + var arguments$1 = arguments; + + var collection = anObject(this); + var remover = aFunction$1(collection['delete']); + var allDeleted = true; + var wasDeleted; + for (var k = 0, len = arguments.length; k < len; k++) { + wasDeleted = remover.call(collection, arguments$1[k]); + allDeleted = allDeleted && wasDeleted; + } + return !!allDeleted; + }; + + // `Map.prototype.deleteAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } + }); + + var getMapIterator = function (it) { + // eslint-disable-next-line no-undef + return Map.prototype.entries.call(it); + }; + + // `Map.prototype.every` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + every: function every(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate_1(iterator, function (key, value) { + if (!boundFunction(value, key, map)) { return iterate_1.stop(); } + }, undefined, true, true).stopped; + } + }); + + // `Map.prototype.filter` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + filter: function filter(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction$1(newMap.set); + iterate_1(iterator, function (key, value) { + if (boundFunction(value, key, map)) { setter.call(newMap, key, value); } + }, undefined, true, true); + return newMap; + } + }); + + // `Map.prototype.find` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + find: function find(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate_1(iterator, function (key, value) { + if (boundFunction(value, key, map)) { return iterate_1.stop(value); } + }, undefined, true, true).result; + } + }); + + // `Map.prototype.findKey` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + findKey: function findKey(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate_1(iterator, function (key, value) { + if (boundFunction(value, key, map)) { return iterate_1.stop(key); } + }, undefined, true, true).result; + } + }); + + // `SameValueZero` abstract operation + // https://tc39.github.io/ecma262/#sec-samevaluezero + var sameValueZero = function (x, y) { + // eslint-disable-next-line no-self-compare + return x === y || x != x && y != y; + }; + + // `Map.prototype.includes` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + includes: function includes(searchElement) { + return iterate_1(getMapIterator(anObject(this)), function (key, value) { + if (sameValueZero(value, searchElement)) { return iterate_1.stop(); } + }, undefined, true, true).stopped; + } + }); + + // `Map.prototype.includes` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + keyOf: function keyOf(searchElement) { + return iterate_1(getMapIterator(anObject(this)), function (key, value) { + if (value === searchElement) { return iterate_1.stop(key); } + }, undefined, true, true).result; + } + }); + + // `Map.prototype.mapKeys` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + mapKeys: function mapKeys(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction$1(newMap.set); + iterate_1(iterator, function (key, value) { + setter.call(newMap, boundFunction(value, key, map), value); + }, undefined, true, true); + return newMap; + } + }); + + // `Map.prototype.mapValues` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + mapValues: function mapValues(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction$1(newMap.set); + iterate_1(iterator, function (key, value) { + setter.call(newMap, key, boundFunction(value, key, map)); + }, undefined, true, true); + return newMap; + } + }); + + // `Map.prototype.merge` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + // eslint-disable-next-line no-unused-vars + merge: function merge(iterable /* ...iterbles */) { + var arguments$1 = arguments; + + var map = anObject(this); + var setter = aFunction$1(map.set); + var i = 0; + while (i < arguments.length) { + iterate_1(arguments$1[i++], setter, map, true); + } + return map; + } + }); + + // `Map.prototype.reduce` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction$1(callbackfn); + iterate_1(iterator, function (key, value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = callbackfn(accumulator, value, key, map); + } + }, undefined, true, true); + if (noInitial) { throw TypeError('Reduce of empty map with no initial value'); } + return accumulator; + } + }); + + // `Set.prototype.some` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + some: function some(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate_1(iterator, function (key, value) { + if (boundFunction(value, key, map)) { return iterate_1.stop(); } + }, undefined, true, true).stopped; + } + }); + + // `Set.prototype.update` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + update: function update(key, callback /* , thunk */) { + var map = anObject(this); + var length = arguments.length; + aFunction$1(callback); + var isPresentInMap = map.has(key); + if (!isPresentInMap && length < 3) { + throw TypeError('Updating absent value'); + } + var value = isPresentInMap ? map.get(key) : aFunction$1(length > 2 ? arguments[2] : undefined)(key, map); + map.set(key, callback(value, key, map)); + return map; + } + }); + + // https://github.com/tc39/collection-methods + var collectionAddAll = function (/* ...elements */) { + var arguments$1 = arguments; + + var set = anObject(this); + var adder = aFunction$1(set.add); + for (var k = 0, len = arguments.length; k < len; k++) { + adder.call(set, arguments$1[k]); + } + return set; + }; + + // `Set.prototype.addAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } + }); + + // `Set.prototype.deleteAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } + }); + + var getSetIterator = function (it) { + // eslint-disable-next-line no-undef + return Set.prototype.values.call(it); + }; + + // `Set.prototype.every` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + every: function every(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate_1(iterator, function (value) { + if (!boundFunction(value, value, set)) { return iterate_1.stop(); } + }, undefined, false, true).stopped; + } + }); + + // `Set.prototype.filter` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + filter: function filter(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction$1(newSet.add); + iterate_1(iterator, function (value) { + if (boundFunction(value, value, set)) { adder.call(newSet, value); } + }, undefined, false, true); + return newSet; + } + }); + + // `Set.prototype.find` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + find: function find(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate_1(iterator, function (value) { + if (boundFunction(value, value, set)) { return iterate_1.stop(value); } + }, undefined, false, true).result; + } + }); + + // `Set.prototype.join` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + join: function join(separator) { + var set = anObject(this); + var iterator = getSetIterator(set); + var sep = separator === undefined ? ',' : String(separator); + var result = []; + iterate_1(iterator, result.push, result, false, true); + return result.join(sep); + } + }); + + // `Set.prototype.map` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + map: function map(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction$1(newSet.add); + iterate_1(iterator, function (value) { + adder.call(newSet, boundFunction(value, value, set)); + }, undefined, false, true); + return newSet; + } + }); + + // `Set.prototype.reduce` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction$1(callbackfn); + iterate_1(iterator, function (value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = callbackfn(accumulator, value, value, set); + } + }, undefined, false, true); + if (noInitial) { throw TypeError('Reduce of empty set with no initial value'); } + return accumulator; + } + }); + + // `Set.prototype.some` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + some: function some(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = functionBindContext(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate_1(iterator, function (value) { + if (boundFunction(value, value, set)) { return iterate_1.stop(); } + }, undefined, false, true).stopped; + } + }); + + // `WeakMap.prototype.deleteAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'WeakMap', proto: true, real: true, forced: isPure }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } + }); + + // `WeakSet.prototype.addAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'WeakSet', proto: true, real: true, forced: isPure }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } + }); + + // `WeakSet.prototype.deleteAll` method + // https://github.com/tc39/proposal-collection-methods + _export({ target: 'WeakSet', proto: true, real: true, forced: isPure }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } + }); + + // https://tc39.github.io/proposal-setmap-offrom/ + + + + + var collectionFrom = function from(source /* , mapFn, thisArg */) { + var length = arguments.length; + var mapFn = length > 1 ? arguments[1] : undefined; + var mapping, A, n, boundFunction; + aFunction$1(this); + mapping = mapFn !== undefined; + if (mapping) { aFunction$1(mapFn); } + if (source == undefined) { return new this(); } + A = []; + if (mapping) { + n = 0; + boundFunction = functionBindContext(mapFn, length > 2 ? arguments[2] : undefined, 2); + iterate_1(source, function (nextItem) { + A.push(boundFunction(nextItem, n++)); + }); + } else { + iterate_1(source, A.push, A); + } + return new this(A); + }; + + // `Map.from` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-map.from + _export({ target: 'Map', stat: true }, { + from: collectionFrom + }); + + // https://tc39.github.io/proposal-setmap-offrom/ + var collectionOf = function of() { + var arguments$1 = arguments; + + var length = arguments.length; + var A = new Array(length); + while (length--) { A[length] = arguments$1[length]; } + return new this(A); + }; + + // `Map.of` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-map.of + _export({ target: 'Map', stat: true }, { + of: collectionOf + }); + + // `Set.from` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-set.from + _export({ target: 'Set', stat: true }, { + from: collectionFrom + }); + + // `Set.of` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-set.of + _export({ target: 'Set', stat: true }, { + of: collectionOf + }); + + // `WeakMap.from` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from + _export({ target: 'WeakMap', stat: true }, { + from: collectionFrom + }); + + // `WeakMap.of` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of + _export({ target: 'WeakMap', stat: true }, { + of: collectionOf + }); + + // `WeakSet.from` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from + _export({ target: 'WeakSet', stat: true }, { + from: collectionFrom + }); + + // `WeakSet.of` method + // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of + _export({ target: 'WeakSet', stat: true }, { + of: collectionOf + }); + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + + + + + var Node = function () { + // keys + this.object = null; + this.symbol = null; + // child nodes + this.primitives = null; + this.objectsByIndex = objectCreate(null); + }; + + Node.prototype.get = function (key, initializer) { + return this[key] || (this[key] = initializer()); + }; + + Node.prototype.next = function (i, it, IS_OBJECT) { + var store = IS_OBJECT + ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new es_weakMap()) + : this.primitives || (this.primitives = new es_map()); + var entry = store.get(it); + if (!entry) { store.set(it, entry = new Node()); } + return entry; + }; + + var root = new Node(); + + var compositeKey = function () { + var arguments$1 = arguments; + + var active = root; + var length = arguments.length; + var i, it; + // for prevent leaking, start from objects + for (i = 0; i < length; i++) { + if (isObject(it = arguments$1[i])) { active = active.next(i, it, true); } + } + if (this === Object && active === root) { throw TypeError('Composite keys must contain a non-primitive component'); } + for (i = 0; i < length; i++) { + if (!isObject(it = arguments$1[i])) { active = active.next(i, it, false); } + } return active; + }; + + var initializer = function () { + var freeze = getBuiltIn('Object', 'freeze'); + return freeze ? freeze(objectCreate(null)) : objectCreate(null); + }; + + // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey + _export({ global: true }, { + compositeKey: function compositeKey$1() { + return compositeKey.apply(Object, arguments).get('object', initializer); + } + }); + + // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey + _export({ global: true }, { + compositeSymbol: function compositeSymbol() { + if (arguments.length === 1 && typeof arguments[0] === 'string') { return getBuiltIn('Symbol')['for'](arguments[0]); } + return compositeKey.apply(null, arguments).get('symbol', getBuiltIn('Symbol')); + } + }); + + var min$9 = Math.min; + var max$4 = Math.max; + + // `Math.clamp` method + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + clamp: function clamp(x, lower, upper) { + return min$9(upper, max$4(lower, x)); + } + }); + + // `Math.DEG_PER_RAD` constant + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + DEG_PER_RAD: Math.PI / 180 + }); + + var RAD_PER_DEG = 180 / Math.PI; + + // `Math.degrees` method + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + degrees: function degrees(radians) { + return radians * RAD_PER_DEG; + } + }); + + // `Math.scale` method implementation + // https://rwaldron.github.io/proposal-math-extensions/ + var mathScale = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) { + if ( + arguments.length === 0 + /* eslint-disable no-self-compare */ + || x != x + || inLow != inLow + || inHigh != inHigh + || outLow != outLow + || outHigh != outHigh + /* eslint-enable no-self-compare */ + ) { return NaN; } + if (x === Infinity || x === -Infinity) { return x; } + return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; + }; + + // `Math.fscale` method + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + fscale: function fscale(x, inLow, inHigh, outLow, outHigh) { + return mathFround(mathScale(x, inLow, inHigh, outLow, outHigh)); + } + }); + + // `Math.RAD_PER_DEG` constant + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + RAD_PER_DEG: 180 / Math.PI + }); + + var DEG_PER_RAD = Math.PI / 180; + + // `Math.radians` method + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + radians: function radians(degrees) { + return degrees * DEG_PER_RAD; + } + }); + + // `Math.scale` method + // https://rwaldron.github.io/proposal-math-extensions/ + _export({ target: 'Math', stat: true }, { + scale: mathScale + }); + + // `Math.signbit` method + // https://github.com/tc39/proposal-Math.signbit + _export({ target: 'Math', stat: true }, { + signbit: function signbit(x) { + return (x = +x) == x && x == 0 ? 1 / x == -Infinity : x < 0; + } + }); + + var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation'; + var INVALID_RADIX = 'Invalid radix'; + var valid = /^[\da-z]+$/; + + // `Number.fromString` method + // https://github.com/tc39/proposal-number-fromstring + _export({ target: 'Number', stat: true }, { + fromString: function fromString(string, radix) { + var sign = 1; + var R, mathNum; + if (typeof string != 'string') { throw TypeError(INVALID_NUMBER_REPRESENTATION); } + if (!string.length) { throw SyntaxError(INVALID_NUMBER_REPRESENTATION); } + if (string.charAt(0) == '-') { + sign = -1; + string = string.slice(1); + if (!string.length) { throw SyntaxError(INVALID_NUMBER_REPRESENTATION); } + } + R = radix === undefined ? 10 : toInteger(radix); + if (R < 2 || R > 36) { throw RangeError(INVALID_RADIX); } + if (!valid.test(string) || (mathNum = numberParseInt(string, R)).toString(R) !== string) { + throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + } + return sign * mathNum; + } + }); + + var OBJECT_ITERATOR = 'Object Iterator'; + var setInternalState$b = internalState.set; + var getInternalState$7 = internalState.getterFor(OBJECT_ITERATOR); + + var objectIterator = createIteratorConstructor(function ObjectIterator(source, mode) { + var object = toObject(source); + setInternalState$b(this, { + type: OBJECT_ITERATOR, + mode: mode, + object: object, + keys: objectKeys(object), + index: 0 + }); + }, 'Object', function next() { + var state = getInternalState$7(this); + var keys = state.keys; + while (true) { + if (keys === null || state.index >= keys.length) { + state.object = state.keys = null; + return { value: undefined, done: true }; + } + var key = keys[state.index++]; + var object = state.object; + if (!has(object, key)) { continue; } + switch (state.mode) { + case 'keys': return { value: key, done: false }; + case 'values': return { value: object[key], done: false }; + } /* entries */ return { value: [key, object[key]], done: false }; + } + }); + + // `Object.iterateEntries` method + // https://github.com/tc39/proposal-object-iteration + _export({ target: 'Object', stat: true }, { + iterateEntries: function iterateEntries(object) { + return new objectIterator(object, 'entries'); + } + }); + + // `Object.iterateKeys` method + // https://github.com/tc39/proposal-object-iteration + _export({ target: 'Object', stat: true }, { + iterateKeys: function iterateKeys(object) { + return new objectIterator(object, 'keys'); + } + }); + + // `Object.iterateValues` method + // https://github.com/tc39/proposal-object-iteration + _export({ target: 'Object', stat: true }, { + iterateValues: function iterateValues(object) { + return new objectIterator(object, 'values'); + } + }); + + // https://github.com/tc39/proposal-observable + + + + + + + + var defineProperty$e = objectDefineProperty.f; + + + + + + + + + var OBSERVABLE = wellKnownSymbol('observable'); + var getInternalState$8 = internalState.get; + var setInternalState$c = internalState.set; + + var getMethod = function (fn) { + return fn == null ? undefined : aFunction$1(fn); + }; + + var cleanupSubscription = function (subscriptionState) { + var cleanup = subscriptionState.cleanup; + if (cleanup) { + subscriptionState.cleanup = undefined; + try { + cleanup(); + } catch (error) { + hostReportErrors(error); + } + } + }; + + var subscriptionClosed = function (subscriptionState) { + return subscriptionState.observer === undefined; + }; + + var close = function (subscription, subscriptionState) { + if (!descriptors) { + subscription.closed = true; + var subscriptionObserver = subscriptionState.subscriptionObserver; + if (subscriptionObserver) { subscriptionObserver.closed = true; } + } subscriptionState.observer = undefined; + }; + + var Subscription = function (observer, subscriber) { + var subscriptionState = setInternalState$c(this, { + cleanup: undefined, + observer: anObject(observer), + subscriptionObserver: undefined + }); + var start; + if (!descriptors) { this.closed = false; } + try { + if (start = getMethod(observer.start)) { start.call(observer, this); } + } catch (error) { + hostReportErrors(error); + } + if (subscriptionClosed(subscriptionState)) { return; } + var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(this); + try { + var cleanup = subscriber(subscriptionObserver); + var subscription = cleanup; + if (cleanup != null) { subscriptionState.cleanup = typeof cleanup.unsubscribe === 'function' + ? function () { subscription.unsubscribe(); } + : aFunction$1(cleanup); } + } catch (error) { + subscriptionObserver.error(error); + return; + } if (subscriptionClosed(subscriptionState)) { cleanupSubscription(subscriptionState); } + }; + + Subscription.prototype = redefineAll({}, { + unsubscribe: function unsubscribe() { + var subscriptionState = getInternalState$8(this); + if (!subscriptionClosed(subscriptionState)) { + close(this, subscriptionState); + cleanupSubscription(subscriptionState); + } + } + }); + + if (descriptors) { defineProperty$e(Subscription.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState$8(this)); + } + }); } + + var SubscriptionObserver = function (subscription) { + setInternalState$c(this, { subscription: subscription }); + if (!descriptors) { this.closed = false; } + }; + + SubscriptionObserver.prototype = redefineAll({}, { + next: function next(value) { + var subscriptionState = getInternalState$8(getInternalState$8(this).subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + try { + var nextMethod = getMethod(observer.next); + if (nextMethod) { nextMethod.call(observer, value); } + } catch (error) { + hostReportErrors(error); + } + } + }, + error: function error(value) { + var subscription = getInternalState$8(this).subscription; + var subscriptionState = getInternalState$8(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var errorMethod = getMethod(observer.error); + if (errorMethod) { errorMethod.call(observer, value); } + else { hostReportErrors(value); } + } catch (err) { + hostReportErrors(err); + } cleanupSubscription(subscriptionState); + } + }, + complete: function complete() { + var subscription = getInternalState$8(this).subscription; + var subscriptionState = getInternalState$8(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var completeMethod = getMethod(observer.complete); + if (completeMethod) { completeMethod.call(observer); } + } catch (error) { + hostReportErrors(error); + } cleanupSubscription(subscriptionState); + } + } + }); + + if (descriptors) { defineProperty$e(SubscriptionObserver.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState$8(getInternalState$8(this).subscription)); + } + }); } + + var $Observable = function Observable(subscriber) { + anInstance(this, $Observable, 'Observable'); + setInternalState$c(this, { subscriber: aFunction$1(subscriber) }); + }; + + redefineAll($Observable.prototype, { + subscribe: function subscribe(observer) { + var length = arguments.length; + return new Subscription(typeof observer === 'function' ? { + next: observer, + error: length > 1 ? arguments[1] : undefined, + complete: length > 2 ? arguments[2] : undefined + } : isObject(observer) ? observer : {}, getInternalState$8(this).subscriber); + } + }); + + redefineAll($Observable, { + from: function from(x) { + var C = typeof this === 'function' ? this : $Observable; + var observableMethod = getMethod(anObject(x)[OBSERVABLE]); + if (observableMethod) { + var observable = anObject(observableMethod.call(x)); + return observable.constructor === C ? observable : new C(function (observer) { + return observable.subscribe(observer); + }); + } + var iterator = getIterator(x); + return new C(function (observer) { + iterate_1(iterator, function (it) { + observer.next(it); + if (observer.closed) { return iterate_1.stop(); } + }, undefined, false, true); + observer.complete(); + }); + }, + of: function of() { + var arguments$1 = arguments; + + var C = typeof this === 'function' ? this : $Observable; + var length = arguments.length; + var items = new Array(length); + var index = 0; + while (index < length) { items[index] = arguments$1[index++]; } + return new C(function (observer) { + for (var i = 0; i < length; i++) { + observer.next(items[i]); + if (observer.closed) { return; } + } observer.complete(); + }); + } + }); + + createNonEnumerableProperty($Observable.prototype, OBSERVABLE, function () { return this; }); + + _export({ global: true }, { + Observable: $Observable + }); + + setSpecies('Observable'); + + // `Symbol.observable` well-known symbol + // https://github.com/tc39/proposal-observable + defineWellKnownSymbol('observable'); + + // `Symbol.patternMatch` well-known symbol + // https://github.com/tc39/proposal-pattern-matching + defineWellKnownSymbol('patternMatch'); + + // `Promise.try` method + // https://github.com/tc39/proposal-promise-try + _export({ target: 'Promise', stat: true }, { + 'try': function (callbackfn) { + var promiseCapability = newPromiseCapability.f(this); + var result = perform(callbackfn); + (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value); + return promiseCapability.promise; + } + }); + + var SEEDED_RANDOM = 'Seeded Random'; + var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator'; + var setInternalState$d = internalState.set; + var getInternalState$9 = internalState.getterFor(SEEDED_RANDOM_GENERATOR); + var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.'; + + var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) { + setInternalState$d(this, { + type: SEEDED_RANDOM_GENERATOR, + seed: seed % 2147483647 + }); + }, SEEDED_RANDOM, function next() { + var state = getInternalState$9(this); + var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647; + return { value: (seed & 1073741823) / 1073741823, done: false }; + }); + + // `Math.seededPRNG` method + // https://github.com/tc39/proposal-seeded-random + // based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html + _export({ target: 'Math', stat: true, forced: true }, { + seededPRNG: function seededPRNG(it) { + var seed = anObject(it).seed; + if (!numberIsFinite(seed)) { throw TypeError(SEED_TYPE_ERROR); } + return new $SeededRandomGenerator(seed); + } + }); + + var codeAt$2 = stringMultibyte.codeAt; + var charAt$3 = stringMultibyte.charAt; + var STRING_ITERATOR$1 = 'String Iterator'; + var setInternalState$e = internalState.set; + var getInternalState$a = internalState.getterFor(STRING_ITERATOR$1); + + // TODO: unify with String#@@iterator + var $StringIterator = createIteratorConstructor(function StringIterator(string) { + setInternalState$e(this, { + type: STRING_ITERATOR$1, + string: string, + index: 0 + }); + }, 'String', function next() { + var state = getInternalState$a(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) { return { value: undefined, done: true }; } + point = charAt$3(string, index); + state.index += point.length; + return { value: { codePoint: codeAt$2(point, 0), position: index }, done: false }; + }); + + // `String.prototype.codePoints` method + // https://github.com/tc39/proposal-string-prototype-codepoints + _export({ target: 'String', proto: true }, { + codePoints: function codePoints() { + return new $StringIterator(String(requireObjectCoercible(this))); + } + }); + + var isFrozen = Object.isFrozen; + + var isFrozenStringArray = function (array, allowUndefined) { + if (!isFrozen || !isArray(array) || !isFrozen(array)) { return false; } + var index = 0; + var length = array.length; + var element; + while (index < length) { + element = array[index++]; + if (!(typeof element === 'string' || (allowUndefined && typeof element === 'undefined'))) { + return false; + } + } return length !== 0; + }; + + // `Array.isTemplateObject` method + // https://github.com/tc39/proposal-array-is-template-object + _export({ target: 'Array', stat: true }, { + isTemplateObject: function isTemplateObject(value) { + if (!isFrozenStringArray(value, true)) { return false; } + var raw = value.raw; + if (raw.length !== value.length || !isFrozenStringArray(raw, false)) { return false; } + return true; + } + }); + + var USE_FUNCTION_CONSTRUCTOR = 'USE_FUNCTION_CONSTRUCTOR'; + var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator'); + var AsyncIterator = global_1.AsyncIterator; + var PassedAsyncIteratorPrototype = sharedStore.AsyncIteratorPrototype; + var AsyncIteratorPrototype, prototype; + + { + if (PassedAsyncIteratorPrototype) { + AsyncIteratorPrototype = PassedAsyncIteratorPrototype; + } else if (typeof AsyncIterator == 'function') { + AsyncIteratorPrototype = AsyncIterator.prototype; + } else if (sharedStore[USE_FUNCTION_CONSTRUCTOR] || global_1[USE_FUNCTION_CONSTRUCTOR]) { + try { + // eslint-disable-next-line no-new-func + prototype = objectGetPrototypeOf(objectGetPrototypeOf(objectGetPrototypeOf(Function('return async function*(){}()')()))); + if (objectGetPrototypeOf(prototype) === Object.prototype) { AsyncIteratorPrototype = prototype; } + } catch (error) { /* empty */ } + } + } + + if (!AsyncIteratorPrototype) { AsyncIteratorPrototype = {}; } + + if (!has(AsyncIteratorPrototype, ASYNC_ITERATOR)) { + createNonEnumerableProperty(AsyncIteratorPrototype, ASYNC_ITERATOR, function () { + return this; + }); + } + + var asyncIteratorPrototype = AsyncIteratorPrototype; + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + + + var TO_STRING_TAG$4 = wellKnownSymbol('toStringTag'); + + var AsyncIteratorConstructor = function AsyncIterator() { + anInstance(this, AsyncIteratorConstructor); + }; + + AsyncIteratorConstructor.prototype = asyncIteratorPrototype; + + if (!has(asyncIteratorPrototype, TO_STRING_TAG$4)) { + createNonEnumerableProperty(asyncIteratorPrototype, TO_STRING_TAG$4, 'AsyncIterator'); + } + + if (!has(asyncIteratorPrototype, 'constructor') || asyncIteratorPrototype.constructor === Object) { + createNonEnumerableProperty(asyncIteratorPrototype, 'constructor', AsyncIteratorConstructor); + } + + _export({ global: true, forced: isPure }, { + AsyncIterator: AsyncIteratorConstructor + }); + + var Promise$2 = getBuiltIn('Promise'); + + var setInternalState$f = internalState.set; + var getInternalState$b = internalState.get; + + var TO_STRING_TAG$5 = wellKnownSymbol('toStringTag'); + + var $return = function (value) { + var iterator = getInternalState$b(this).iterator; + var $$return = iterator['return']; + return $$return === undefined + ? Promise$2.resolve({ done: true, value: value }) + : anObject($$return.call(iterator, value)); + }; + + var $throw = function (value) { + var iterator = getInternalState$b(this).iterator; + var $$throw = iterator['throw']; + return $$throw === undefined + ? Promise$2.reject(value) + : $$throw.call(iterator, value); + }; + + var asyncIteratorCreateProxy = function (nextHandler, IS_ITERATOR) { + var AsyncIteratorProxy = function AsyncIterator(state) { + state.next = aFunction$1(state.iterator.next); + state.done = false; + setInternalState$f(this, state); + }; + + AsyncIteratorProxy.prototype = redefineAll(objectCreate(path.AsyncIterator.prototype), { + next: function next(arg) { + var state = getInternalState$b(this); + if (state.done) { return Promise$2.resolve({ done: true, value: undefined }); } + try { + return Promise$2.resolve(anObject(nextHandler.call(state, arg, Promise$2))); + } catch (error) { + return Promise$2.reject(error); + } + }, + 'return': $return, + 'throw': $throw + }); + + if (!IS_ITERATOR) { + createNonEnumerableProperty(AsyncIteratorProxy.prototype, TO_STRING_TAG$5, 'Generator'); + } + + return AsyncIteratorProxy; + }; + + // https://github.com/tc39/proposal-iterator-helpers + + + + + var AsyncIteratorProxy = asyncIteratorCreateProxy(function (arg, Promise) { + var state = this; + var iterator = state.iterator; + + return Promise.resolve(anObject(state.next.call(iterator, arg))).then(function (step) { + if (anObject(step).done) { + state.done = true; + return { done: true, value: undefined }; + } + return { done: false, value: [state.index++, step.value] }; + }); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + asIndexedPairs: function asIndexedPairs() { + return new AsyncIteratorProxy({ + iterator: anObject(this), + index: 0 + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var AsyncIteratorProxy$1 = asyncIteratorCreateProxy(function (arg, Promise) { + var state = this; + + return new Promise(function (resolve, reject) { + var loop = function () { + try { + Promise.resolve( + anObject(state.next.call(state.iterator, state.remaining ? undefined : arg)) + ).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else if (state.remaining) { + state.remaining--; + loop(); + } else { resolve({ done: false, value: step.value }); } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + drop: function drop(limit) { + return new AsyncIteratorProxy$1({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + var Promise$3 = getBuiltIn('Promise'); + var push$1 = [].push; + + var createMethod$7 = function (TYPE) { + var IS_TO_ARRAY = TYPE == 0; + var IS_FOR_EACH = TYPE == 1; + var IS_EVERY = TYPE == 2; + var IS_SOME = TYPE == 3; + return function (iterator, fn) { + anObject(iterator); + var next = aFunction$1(iterator.next); + var array = IS_TO_ARRAY ? [] : undefined; + if (!IS_TO_ARRAY) { aFunction$1(fn); } + + return new Promise$3(function (resolve, reject) { + var loop = function () { + try { + Promise$3.resolve(anObject(next.call(iterator))).then(function (step) { + try { + if (anObject(step).done) { + resolve(IS_TO_ARRAY ? array : IS_SOME ? false : IS_EVERY || undefined); + } else { + var value = step.value; + if (IS_TO_ARRAY) { + push$1.call(array, value); + loop(); + } else { + Promise$3.resolve(fn(value)).then(function (result) { + if (IS_FOR_EACH) { + loop(); + } else if (IS_EVERY) { + result ? loop() : resolve(false); + } else { + result ? resolve(IS_SOME || value) : loop(); + } + }, reject); + } + } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); + }; + }; + + var asyncIteratorIteration = { + toArray: createMethod$7(0), + forEach: createMethod$7(1), + every: createMethod$7(2), + some: createMethod$7(3), + find: createMethod$7(4) + }; + + // https://github.com/tc39/proposal-iterator-helpers + + var $every$2 = asyncIteratorIteration.every; + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + every: function every(fn) { + return $every$2(this, fn); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var AsyncIteratorProxy$2 = asyncIteratorCreateProxy(function (arg, Promise) { + var state = this; + var filterer = state.filterer; + + return new Promise(function (resolve, reject) { + var loop = function () { + try { + Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else { + var value = step.value; + Promise.resolve(filterer(value)).then(function (selected) { + selected ? resolve({ done: false, value: value }) : loop(); + }, reject); + } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + filter: function filter(filterer) { + return new AsyncIteratorProxy$2({ + iterator: anObject(this), + filterer: aFunction$1(filterer) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + var $find$2 = asyncIteratorIteration.find; + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + find: function find(fn) { + return $find$2(this, fn); + } + }); + + var ASYNC_ITERATOR$1 = wellKnownSymbol('asyncIterator'); + + var getAsyncIteratorMethod = function (it) { + var method = it[ASYNC_ITERATOR$1]; + return method === undefined ? getIteratorMethod(it) : method; + }; + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + var AsyncIteratorProxy$3 = asyncIteratorCreateProxy(function (arg, Promise) { + var state = this; + var mapper = state.mapper; + var innerIterator, iteratorMethod; + + return new Promise(function (resolve, reject) { + var outerLoop = function () { + try { + Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else { + Promise.resolve(mapper(step.value)).then(function (mapped) { + try { + iteratorMethod = getAsyncIteratorMethod(mapped); + if (iteratorMethod !== undefined) { + state.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped)); + state.innerNext = aFunction$1(innerIterator.next); + return innerLoop(); + } reject(TypeError('.flatMap callback should return an iterable object')); + } catch (error2) { reject(error2); } + }, reject); + } + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + }; + + var innerLoop = function () { + if (innerIterator = state.innerIterator) { + try { + Promise.resolve(anObject(state.innerNext.call(innerIterator))).then(function (result) { + try { + if (anObject(result).done) { + state.innerIterator = state.innerNext = null; + outerLoop(); + } else { resolve({ done: false, value: result.value }); } + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + } else { outerLoop(); } + }; + + innerLoop(); + }); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + flatMap: function flatMap(mapper) { + return new AsyncIteratorProxy$3({ + iterator: anObject(this), + mapper: aFunction$1(mapper), + innerIterator: null, + innerNext: null + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + var $forEach$3 = asyncIteratorIteration.forEach; + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + forEach: function forEach(fn) { + return $forEach$3(this, fn); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + + + var AsyncIterator$1 = path.AsyncIterator; + + var AsyncIteratorProxy$4 = asyncIteratorCreateProxy(function (arg) { + return anObject(this.next.call(this.iterator, arg)); + }, true); + + _export({ target: 'AsyncIterator', stat: true }, { + from: function from(O) { + var object = toObject(O); + var usingIterator = getAsyncIteratorMethod(object); + var iterator; + if (usingIterator != null) { + iterator = aFunction$1(usingIterator).call(object); + if (iterator instanceof AsyncIterator$1) { return iterator; } + } else { + iterator = object; + } return new AsyncIteratorProxy$4({ + iterator: iterator + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var AsyncIteratorProxy$5 = asyncIteratorCreateProxy(function (arg, Promise) { + var state = this; + var mapper = state.mapper; + + return Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + if (anObject(step).done) { + state.done = true; + return { done: true, value: undefined }; + } + return Promise.resolve(mapper(step.value)).then(function (value) { + return { done: false, value: value }; + }); + }); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + map: function map(mapper) { + return new AsyncIteratorProxy$5({ + iterator: anObject(this), + mapper: aFunction$1(mapper) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var Promise$4 = getBuiltIn('Promise'); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + reduce: function reduce(reducer /* , initialValue */) { + var iterator = anObject(this); + var next = aFunction$1(iterator.next); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction$1(reducer); + + return new Promise$4(function (resolve, reject) { + var loop = function () { + try { + Promise$4.resolve(anObject(next.call(iterator))).then(function (step) { + try { + if (anObject(step).done) { + noInitial ? reject(TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator); + } else { + var value = step.value; + if (noInitial) { + noInitial = false; + accumulator = value; + loop(); + } else { + Promise$4.resolve(reducer(accumulator, value)).then(function (result) { + accumulator = result; + loop(); + }, reject); + } + } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + var $some$2 = asyncIteratorIteration.some; + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + some: function some(fn) { + return $some$2(this, fn); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var AsyncIteratorProxy$6 = asyncIteratorCreateProxy(function (arg) { + if (!this.remaining--) { + this.done = true; + return { done: true, value: undefined }; + } return this.next.call(this.iterator, arg); + }); + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + take: function take(limit) { + return new AsyncIteratorProxy$6({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + var $toArray = asyncIteratorIteration.toArray; + + _export({ target: 'AsyncIterator', proto: true, real: true }, { + toArray: function toArray() { + return $toArray(this); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + + var IteratorPrototype$3 = iteratorsCore.IteratorPrototype; + + + var ITERATOR$8 = wellKnownSymbol('iterator'); + var TO_STRING_TAG$6 = wellKnownSymbol('toStringTag'); + + var NativeIterator = global_1.Iterator; + + // FF56- have non-standard global helper `Iterator` + var FORCED$l = typeof NativeIterator != 'function' + || NativeIterator.prototype !== IteratorPrototype$3 + // FF44- non-standard `Iterator` passes previous tests + || !fails(function () { NativeIterator({}); }); + + var IteratorConstructor = function Iterator() { + anInstance(this, IteratorConstructor); + }; + + if (!has(IteratorPrototype$3, TO_STRING_TAG$6)) { + createNonEnumerableProperty(IteratorPrototype$3, TO_STRING_TAG$6, 'Iterator'); + } + + if (FORCED$l || !has(IteratorPrototype$3, 'constructor') || IteratorPrototype$3.constructor === Object) { + createNonEnumerableProperty(IteratorPrototype$3, 'constructor', IteratorConstructor); + } + + IteratorConstructor.prototype = IteratorPrototype$3; + + _export({ global: true, forced: FORCED$l }, { + Iterator: IteratorConstructor + }); + + var setInternalState$g = internalState.set; + var getInternalState$c = internalState.get; + + var TO_STRING_TAG$7 = wellKnownSymbol('toStringTag'); + + var $return$1 = function (value) { + var iterator = getInternalState$c(this).iterator; + var $$return = iterator['return']; + return $$return === undefined ? { done: true, value: value } : anObject($$return.call(iterator, value)); + }; + + var $throw$1 = function (value) { + var iterator = getInternalState$c(this).iterator; + var $$throw = iterator['throw']; + if ($$throw === undefined) { throw value; } + return $$throw.call(iterator, value); + }; + + var iteratorCreateProxy = function (nextHandler, IS_ITERATOR) { + var IteratorProxy = function Iterator(state) { + state.next = aFunction$1(state.iterator.next); + state.done = false; + setInternalState$g(this, state); + }; + + IteratorProxy.prototype = redefineAll(objectCreate(path.Iterator.prototype), { + next: function next() { + var state = getInternalState$c(this); + var result = state.done ? undefined : nextHandler.apply(state, arguments); + return { done: state.done, value: result }; + }, + 'return': $return$1, + 'throw': $throw$1 + }); + + if (!IS_ITERATOR) { + createNonEnumerableProperty(IteratorProxy.prototype, TO_STRING_TAG$7, 'Generator'); + } + + return IteratorProxy; + }; + + // https://github.com/tc39/proposal-iterator-helpers + + + + + var IteratorProxy = iteratorCreateProxy(function (arg) { + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) { return [this.index++, result.value]; } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + asIndexedPairs: function asIndexedPairs() { + return new IteratorProxy({ + iterator: anObject(this), + index: 0 + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var IteratorProxy$1 = iteratorCreateProxy(function (arg) { + var iterator = this.iterator; + var next = this.next; + var result, done; + while (this.remaining) { + this.remaining--; + result = anObject(next.call(iterator)); + done = this.done = !!result.done; + if (done) { return; } + } + result = anObject(next.call(iterator, arg)); + done = this.done = !!result.done; + if (!done) { return result.value; } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + drop: function drop(limit) { + return new IteratorProxy$1({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + _export({ target: 'Iterator', proto: true, real: true }, { + every: function every(fn) { + anObject(this); + aFunction$1(fn); + return !iterate_1(this, function (value) { + if (!fn(value)) { return iterate_1.stop(); } + }, undefined, false, true).stopped; + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + var IteratorProxy$2 = iteratorCreateProxy(function (arg) { + var iterator = this.iterator; + var filterer = this.filterer; + var next = this.next; + var result, done, value; + while (true) { + result = anObject(next.call(iterator, arg)); + done = this.done = !!result.done; + if (done) { return; } + value = result.value; + if (callWithSafeIterationClosing(iterator, filterer, value)) { return value; } + } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + filter: function filter(filterer) { + return new IteratorProxy$2({ + iterator: anObject(this), + filterer: aFunction$1(filterer) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + _export({ target: 'Iterator', proto: true, real: true }, { + find: function find(fn) { + anObject(this); + aFunction$1(fn); + return iterate_1(this, function (value) { + if (fn(value)) { return iterate_1.stop(value); } + }, undefined, false, true).result; + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + + var IteratorProxy$3 = iteratorCreateProxy(function (arg) { + var iterator = this.iterator; + var result, mapped, iteratorMethod, innerIterator; + + while (true) { + if (innerIterator = this.innerIterator) { + result = anObject(this.innerNext.call(innerIterator)); + if (!result.done) { return result.value; } + this.innerIterator = this.innerNext = null; + } + + result = anObject(this.next.call(iterator, arg)); + + if (this.done = !!result.done) { return; } + + mapped = callWithSafeIterationClosing(iterator, this.mapper, result.value); + iteratorMethod = getIteratorMethod(mapped); + + if (iteratorMethod === undefined) { + throw TypeError('.flatMap callback should return an iterable object'); + } + + this.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped)); + this.innerNext = aFunction$1(innerIterator.next); + } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + flatMap: function flatMap(mapper) { + return new IteratorProxy$3({ + iterator: anObject(this), + mapper: aFunction$1(mapper), + innerIterator: null, + innerNext: null + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + _export({ target: 'Iterator', proto: true, real: true }, { + forEach: function forEach(fn) { + iterate_1(anObject(this), fn, undefined, false, true); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + + + var Iterator = path.Iterator; + + var IteratorProxy$4 = iteratorCreateProxy(function (arg) { + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) { return result.value; } + }, true); + + _export({ target: 'Iterator', stat: true }, { + from: function from(O) { + var object = toObject(O); + var usingIterator = getIteratorMethod(object); + var iterator; + if (usingIterator != null) { + iterator = aFunction$1(usingIterator).call(object); + if (iterator instanceof Iterator) { return iterator; } + } else { + iterator = object; + } return new IteratorProxy$4({ + iterator: iterator + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + + var IteratorProxy$5 = iteratorCreateProxy(function (arg) { + var iterator = this.iterator; + var result = anObject(this.next.call(iterator, arg)); + var done = this.done = !!result.done; + if (!done) { return callWithSafeIterationClosing(iterator, this.mapper, result.value); } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + map: function map(mapper) { + return new IteratorProxy$5({ + iterator: anObject(this), + mapper: aFunction$1(mapper) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + _export({ target: 'Iterator', proto: true, real: true }, { + reduce: function reduce(reducer /* , initialValue */) { + anObject(this); + aFunction$1(reducer); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + iterate_1(this, function (value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = reducer(accumulator, value); + } + }, undefined, false, true); + if (noInitial) { throw TypeError('Reduce of empty iterator with no initial value'); } + return accumulator; + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + _export({ target: 'Iterator', proto: true, real: true }, { + some: function some(fn) { + anObject(this); + aFunction$1(fn); + return iterate_1(this, function (value) { + if (fn(value)) { return iterate_1.stop(); } + }, undefined, false, true).stopped; + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + + var IteratorProxy$6 = iteratorCreateProxy(function (arg) { + if (!this.remaining--) { + this.done = true; + return; + } + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) { return result.value; } + }); + + _export({ target: 'Iterator', proto: true, real: true }, { + take: function take(limit) { + return new IteratorProxy$6({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } + }); + + // https://github.com/tc39/proposal-iterator-helpers + + + + + var push$2 = [].push; + + _export({ target: 'Iterator', proto: true, real: true }, { + toArray: function toArray() { + var result = []; + iterate_1(anObject(this), push$2, result, false, true); + return result; + } + }); + + // `Map.prototype.upsert` method + // https://github.com/thumbsupep/proposal-upsert + var mapUpsert = function upsert(key, updateFn /* , insertFn */) { + var map = anObject(this); + var insertFn = arguments.length > 2 ? arguments[2] : undefined; + var value; + if (typeof updateFn != 'function' && typeof insertFn != 'function') { + throw TypeError('At least one callback required'); + } + if (map.has(key)) { + value = map.get(key); + if (typeof updateFn == 'function') { + value = updateFn(value); + map.set(key, value); + } + } else if (typeof insertFn == 'function') { + value = insertFn(); + map.set(key, value); + } return value; + }; + + // TODO: remove from `core-js@4` + + + + + // `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.upsert`) + // https://github.com/thumbsupep/proposal-upsert + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + updateOrInsert: mapUpsert + }); + + // `Map.prototype.upsert` method + // https://github.com/thumbsupep/proposal-upsert + _export({ target: 'Map', proto: true, real: true, forced: isPure }, { + upsert: mapUpsert + }); + + // `WeakMap.prototype.upsert` method + // https://github.com/thumbsupep/proposal-upsert + _export({ target: 'WeakMap', proto: true, real: true, forced: isPure }, { + upsert: mapUpsert + }); + + // `Set.prototype.difference` method + // https://github.com/tc39/proposal-set-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + difference: function difference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction$1(newSet['delete']); + iterate_1(iterable, function (value) { + remover.call(newSet, value); + }); + return newSet; + } + }); + + // `Set.prototype.intersection` method + // https://github.com/tc39/proposal-set-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + intersection: function intersection(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var hasCheck = aFunction$1(set.has); + var adder = aFunction$1(newSet.add); + iterate_1(iterable, function (value) { + if (hasCheck.call(set, value)) { adder.call(newSet, value); } + }); + return newSet; + } + }); + + // `Set.prototype.isDisjointFrom` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + isDisjointFrom: function isDisjointFrom(iterable) { + var set = anObject(this); + var hasCheck = aFunction$1(set.has); + return !iterate_1(iterable, function (value) { + if (hasCheck.call(set, value) === true) { return iterate_1.stop(); } + }).stopped; + } + }); + + // `Set.prototype.isSubsetOf` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + isSubsetOf: function isSubsetOf(iterable) { + var iterator = getIterator(this); + var otherSet = anObject(iterable); + var hasCheck = otherSet.has; + if (typeof hasCheck != 'function') { + otherSet = new (getBuiltIn('Set'))(iterable); + hasCheck = aFunction$1(otherSet.has); + } + return !iterate_1(iterator, function (value) { + if (hasCheck.call(otherSet, value) === false) { return iterate_1.stop(); } + }, undefined, false, true).stopped; + } + }); + + // `Set.prototype.isSupersetOf` method + // https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + isSupersetOf: function isSupersetOf(iterable) { + var set = anObject(this); + var hasCheck = aFunction$1(set.has); + return !iterate_1(iterable, function (value) { + if (hasCheck.call(set, value) === false) { return iterate_1.stop(); } + }).stopped; + } + }); + + // `Set.prototype.union` method + // https://github.com/tc39/proposal-set-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + union: function union(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + iterate_1(iterable, aFunction$1(newSet.add), newSet); + return newSet; + } + }); + + // `Set.prototype.symmetricDifference` method + // https://github.com/tc39/proposal-set-methods + _export({ target: 'Set', proto: true, real: true, forced: isPure }, { + symmetricDifference: function symmetricDifference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction$1(newSet['delete']); + var adder = aFunction$1(newSet.add); + iterate_1(iterable, function (value) { + remover.call(newSet, value) || adder.call(newSet, value); + }); + return newSet; + } + }); + + // `Symbol.asyncDispose` well-known symbol + // https://github.com/tc39/proposal-using-statement + defineWellKnownSymbol('asyncDispose'); + + // `Symbol.dispose` well-known symbol + // https://github.com/tc39/proposal-using-statement + defineWellKnownSymbol('dispose'); + + var setInternalState$h = internalState.set; + var getInternalAggregateErrorState = internalState.getterFor('AggregateError'); + + var $AggregateError = function AggregateError(errors, message) { + var that = this; + if (!(that instanceof $AggregateError)) { return new $AggregateError(errors, message); } + if (objectSetPrototypeOf) { + that = objectSetPrototypeOf(new Error(message), objectGetPrototypeOf(that)); + } + var errorsArray = []; + iterate_1(errors, errorsArray.push, errorsArray); + if (descriptors) { setInternalState$h(that, { errors: errorsArray, type: 'AggregateError' }); } + else { that.errors = errorsArray; } + if (message !== undefined) { createNonEnumerableProperty(that, 'message', String(message)); } + return that; + }; + + $AggregateError.prototype = objectCreate(Error.prototype, { + constructor: createPropertyDescriptor(5, $AggregateError), + message: createPropertyDescriptor(5, ''), + name: createPropertyDescriptor(5, 'AggregateError') + }); + + if (descriptors) { objectDefineProperty.f($AggregateError.prototype, 'errors', { + get: function () { + return getInternalAggregateErrorState(this).errors; + }, + configurable: true + }); } + + _export({ global: true }, { + AggregateError: $AggregateError + }); + + var PROMISE_ANY_ERROR = 'No one promise resolved'; + + // `Promise.any` method + // https://github.com/tc39/proposal-promise-any + _export({ target: 'Promise', stat: true }, { + any: function any(iterable) { + var C = this; + var capability = newPromiseCapability.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction$1(C.resolve); + var errors = []; + var counter = 0; + var remaining = 1; + var alreadyResolved = false; + iterate_1(iterable, function (promise) { + var index = counter++; + var alreadyRejected = false; + errors.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyRejected || alreadyResolved) { return; } + alreadyResolved = true; + resolve(value); + }, function (e) { + if (alreadyRejected || alreadyResolved) { return; } + alreadyRejected = true; + errors[index] = e; + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + }); + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + if (result.error) { reject(result.value); } + return capability.promise; + } + }); + + var REPLACE$1 = wellKnownSymbol('replace'); + var RegExpPrototype$4 = RegExp.prototype; + + // `String.prototype.replaceAll` method + // https://github.com/tc39/proposal-string-replace-all + _export({ target: 'String', proto: true }, { + replaceAll: function replaceAll(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var IS_REG_EXP, flags, replacer, string, searchString, template, result, position, index; + if (searchValue != null) { + IS_REG_EXP = isRegexp(searchValue); + if (IS_REG_EXP) { + flags = String(requireObjectCoercible('flags' in RegExpPrototype$4 + ? searchValue.flags + : regexpFlags.call(searchValue) + )); + if (!~flags.indexOf('g')) { throw TypeError('`.replaceAll` does not allow non-global regexes'); } + } + replacer = searchValue[REPLACE$1]; + if (replacer !== undefined) { + return replacer.call(searchValue, O, replaceValue); + } + } + string = String(O); + searchString = String(searchValue); + if (searchString === '') { return replaceAll.call(string, /(?:)/g, replaceValue); } + template = string.split(searchString); + if (typeof replaceValue !== 'function') { + return template.join(String(replaceValue)); + } + result = template[0]; + position = result.length; + for (index = 1; index < template.length; index++) { + result += String(replaceValue(searchString, position, string)); + position += searchString.length + template[index].length; + result += template[index]; + } + return result; + } + }); + + // TODO: remove from `core-js@4` + + + defineWellKnownSymbol('replaceAll'); + + // iterable DOM collections + // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods + var domIterables = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 + }; + + for (var COLLECTION_NAME in domIterables) { + var Collection = global_1[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) { try { + createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach); + } catch (error) { + CollectionPrototype.forEach = arrayForEach; + } } + } + + var ITERATOR$9 = wellKnownSymbol('iterator'); + var TO_STRING_TAG$8 = wellKnownSymbol('toStringTag'); + var ArrayValues = es_array_iterator.values; + + for (var COLLECTION_NAME$1 in domIterables) { + var Collection$1 = global_1[COLLECTION_NAME$1]; + var CollectionPrototype$1 = Collection$1 && Collection$1.prototype; + if (CollectionPrototype$1) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype$1[ITERATOR$9] !== ArrayValues) { try { + createNonEnumerableProperty(CollectionPrototype$1, ITERATOR$9, ArrayValues); + } catch (error) { + CollectionPrototype$1[ITERATOR$9] = ArrayValues; + } } + if (!CollectionPrototype$1[TO_STRING_TAG$8]) { + createNonEnumerableProperty(CollectionPrototype$1, TO_STRING_TAG$8, COLLECTION_NAME$1); + } + if (domIterables[COLLECTION_NAME$1]) { for (var METHOD_NAME in es_array_iterator) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) { try { + createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]); + } catch (error) { + CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME]; + } } + } } + } + } + + var FORCED$m = !global_1.setImmediate || !global_1.clearImmediate; + + // http://w3c.github.io/setImmediate/ + _export({ global: true, bind: true, enumerable: true, forced: FORCED$m }, { + // `setImmediate` method + // http://w3c.github.io/setImmediate/#si-setImmediate + setImmediate: task.set, + // `clearImmediate` method + // http://w3c.github.io/setImmediate/#si-clearImmediate + clearImmediate: task.clear + }); + + var process$5 = global_1.process; + var isNode = classofRaw(process$5) == 'process'; + + // `queueMicrotask` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask + _export({ global: true, enumerable: true, noTargetGet: true }, { + queueMicrotask: function queueMicrotask(fn) { + var domain = isNode && process$5.domain; + microtask(domain ? domain.bind(fn) : fn); + } + }); + + var slice$1 = [].slice; + var MSIE = /MSIE .\./.test(engineUserAgent); // <- dirty ie9- check + + var wrap$1 = function (scheduler) { + return function (handler, timeout /* , ...arguments */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice$1.call(arguments, 2) : undefined; + return scheduler(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof handler == 'function' ? handler : Function(handler)).apply(this, args); + } : handler, timeout); + }; + }; + + // ie9- setTimeout & setInterval additional parameters fix + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers + _export({ global: true, bind: true, forced: MSIE }, { + // `setTimeout` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout + setTimeout: wrap$1(global_1.setTimeout), + // `setInterval` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval + setInterval: wrap$1(global_1.setInterval) + }); + + var coreJs = path; + + /* + * Copyright [2019] [Doric.Pub] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + var ProxyPolyfill = /** @class */ (function () { + function ProxyPolyfill(target, handler) { + this.__target__ = target; + this.__handler__ = handler; + this.defineProps(); + return target; + } + ProxyPolyfill.prototype.defineProps = function () { + var _this = this; + var keys = Object.keys(this.__target__); + keys.forEach(function (property) { + if (Object.getOwnPropertyDescriptor(_this.__target__, property) !== undefined) { + return; + } + Object.defineProperty(_this, property, { + get: function () { + _this.defineProps(); + if (_this.__handler__.get) { + return _this.__handler__.get(_this.__target__, property, _this); + } + else { + return _this.__target__[property]; + } + }, + set: function (value) { + _this.defineProps(); + if (_this.__handler__.set) { + _this.__handler__.set(_this.__target__, property, value, property); + } + else { + _this.__target__[property] = value; + } + }, + enumerable: true, + configurable: true, + }); + }); + }; + return ProxyPolyfill; + }()); + var global$2 = Function('return this')(); + global$2.Proxy = ProxyPolyfill; + + exports.Context = Context; + exports.__moduleExports = coreJs; + exports.__require__ = __require__; + exports.jsCallEntityMethod = jsCallEntityMethod; + exports.jsCallReject = jsCallReject; + exports.jsCallResolve = jsCallResolve; + exports.jsCallbackTimer = jsCallbackTimer; + exports.jsObtainContext = jsObtainContext; + exports.jsObtainEntry = jsObtainEntry; + exports.jsRegisterModule = jsRegisterModule; + exports.jsReleaseContext = jsReleaseContext; + + return exports; + +}({})); diff --git a/doric-js/bundle/doric-vm.js b/doric-js/bundle/doric-vm.js index 6399b732..5c47ea86 100644 --- a/doric-js/bundle/doric-vm.js +++ b/doric-js/bundle/doric-vm.js @@ -2229,7 +2229,7 @@ class Panel { }, undefined); } nativeRender(model) { - this.context.shader.render(model); + this.context.callNative("shader", "render", model); } hookBeforeNativeCall() { if (Environment.platform !== 'web') { diff --git a/doric-js/index.d.ts b/doric-js/index.d.ts index b1bcb368..375c2717 100644 --- a/doric-js/index.d.ts +++ b/doric-js/index.d.ts @@ -9,7 +9,6 @@ declare module 'doric' { export * from 'doric/lib/src/native/index.native'; export * from "doric/lib/src/util/index.util"; export * from "doric/lib/src/pattern/index.pattern"; - export * from 'doric/lib/src/ui/view'; } declare module 'doric/lib/src/runtime/global' { diff --git a/doric-js/index.es5.ts b/doric-js/index.es5.ts deleted file mode 100644 index c3269f54..00000000 --- a/doric-js/index.es5.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright [2019] [Doric.Pub] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export * from './src/runtime/global' -export * from './src/ui/index.ui.es5' -export * from "./src/widget/index.widget" -export * from './src/native/index.native' -export * from "./src/util/index.util" -export * from "./src/pattern/index.pattern" diff --git a/doric-js/lib/src/ui/animation.d.ts b/doric-js/lib/src/ui/animation.d.ts index c41968d9..7ce73294 100644 --- a/doric-js/lib/src/ui/animation.d.ts +++ b/doric-js/lib/src/ui/animation.d.ts @@ -82,32 +82,43 @@ export declare class ScaleAnimation extends Animation { private scaleXChangeable; private scaleYChangeable; constructor(); - fromScaleX: number; - toScaleX: number; - fromScaleY: number; - toScaleY: number; + set fromScaleX(v: number); + get fromScaleX(): number; + set toScaleX(v: number); + get toScaleX(): number; + set fromScaleY(v: number); + get fromScaleY(): number; + set toScaleY(v: number); + get toScaleY(): number; } export declare class TranslationAnimation extends Animation { private translationXChangeable; private translationYChangeable; constructor(); - fromTranslationX: number; - toTranslationX: number; - fromTranslationY: number; - toTranslationY: number; + set fromTranslationX(v: number); + get fromTranslationX(): number; + set toTranslationX(v: number); + get toTranslationX(): number; + set fromTranslationY(v: number); + get fromTranslationY(): number; + set toTranslationY(v: number); + get toTranslationY(): number; } export declare class RotationAnimation extends Animation { private rotationChaneable; constructor(); - fromRotation: number; - toRotation: number; + set fromRotation(v: number); + get fromRotation(): number; + set toRotation(v: number); + get toRotation(): number; } export declare class AnimationSet implements IAnimation { private animations; _duration: number; delay?: number; addAnimation(anim: IAnimation): void; - duration: number; + get duration(): number; + set duration(v: number); toModel(): { animations: Model; delay: number | undefined; diff --git a/doric-js/lib/src/ui/panel.js b/doric-js/lib/src/ui/panel.js index acce9cf4..f39aa3f8 100644 --- a/doric-js/lib/src/ui/panel.js +++ b/doric-js/lib/src/ui/panel.js @@ -139,7 +139,7 @@ export class Panel { }, undefined); } nativeRender(model) { - this.context.shader.render(model); + this.context.callNative("shader", "render", model); } hookBeforeNativeCall() { if (Environment.platform !== 'web') { diff --git a/doric-js/lib/src/ui/view.d.ts b/doric-js/lib/src/ui/view.d.ts index 20c4ff6c..7c497363 100644 --- a/doric-js/lib/src/ui/view.d.ts +++ b/doric-js/lib/src/ui/view.d.ts @@ -104,15 +104,21 @@ export declare abstract class View implements Modeling, IView { private id2Callback; constructor(); /** Anchor start*/ - left: number; - right: number; - top: number; - bottom: number; - centerX: number; - centerY: number; + get left(): number; + set left(v: number); + get right(): number; + set right(v: number); + get top(): number; + set top(v: number); + get bottom(): number; + set bottom(v: number); + get centerX(): number; + get centerY(): number; + set centerX(v: number); + set centerY(v: number); /** Anchor end*/ private __dirty_props__; - readonly dirtyProps: { + get dirtyProps(): { [index: string]: Model; }; nativeViewModel: NativeViewModel; diff --git a/doric-js/package.json b/doric-js/package.json index afd3c0a6..7b99dbcc 100644 --- a/doric-js/package.json +++ b/doric-js/package.json @@ -6,7 +6,7 @@ "types": "index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc -p tsconfig.es5.json && tsc -d -p . && rollup -c && dts-bundle --configJson dts-bundle.json", + "build": "tsc -p tsconfig.es5.json && mv -f lib-es5/src/ui/view.es5.js lib-es5/src/ui/view.js && tsc -d -p . && rollup -c && dts-bundle --configJson dts-bundle.json", "dev": "tsc -w -p . & rollup -c -w", "clean": "rm -rf lib && rm -rf lib-es5 && rm -rf bundle", "prepublish": "npm run build" @@ -40,4 +40,4 @@ "@rollup/plugin-buble": "^0.21.0", "@rollup/plugin-commonjs": "^11.0.1" } -} +} \ No newline at end of file diff --git a/doric-js/rollup.config.js b/doric-js/rollup.config.js index b94814be..54090942 100644 --- a/doric-js/rollup.config.js +++ b/doric-js/rollup.config.js @@ -49,41 +49,41 @@ export default [ } }, - // { - // input: "lib-es5/index.runtime.es5.js", - // output: { - // name: "doric", - // format: "iife", - // file: "bundle/doric-sandbox.es5.js", - // }, - // plugins: [ - // resolve({ mainFields: ["jsnext"] }), - // commonjs(), - // buble({ - // transforms: { dangerousForOf: true } - // }), - // ], - // onwarn: function (warning) { - // if (warning.code === 'THIS_IS_UNDEFINED') { return; } - // console.warn(warning.message); - // } - // }, - // { - // input: "lib-es5/index.es5.js", - // output: { - // format: "cjs", - // file: "bundle/doric-lib.es5.js", - // }, - // plugins: [ - // resolve({ mainFields: ["jsnext"] }), - // buble({ - // transforms: { dangerousForOf: true } - // }), - // ], - // external: ['reflect-metadata'], - // onwarn: function (warning) { - // if (warning.code === 'THIS_IS_UNDEFINED') { return; } - // console.warn(warning.message); - // } - // }, + { + input: "lib-es5/index.runtime.es5.js", + output: { + name: "doric", + format: "iife", + file: "bundle/doric-sandbox.es5.js", + }, + plugins: [ + resolve({ mainFields: ["jsnext"] }), + commonjs(), + buble({ + transforms: { dangerousForOf: true } + }), + ], + onwarn: function (warning) { + if (warning.code === 'THIS_IS_UNDEFINED') { return; } + console.warn(warning.message); + } + }, + { + input: "lib-es5/index.js", + output: { + format: "cjs", + file: "bundle/doric-lib.es5.js", + }, + plugins: [ + resolve({ mainFields: ["jsnext"] }), + buble({ + transforms: { dangerousForOf: true } + }), + ], + external: ['reflect-metadata'], + onwarn: function (warning) { + if (warning.code === 'THIS_IS_UNDEFINED') { return; } + console.warn(warning.message); + } + }, ] \ No newline at end of file diff --git a/doric-js/src/runtime/sandbox.es5.ts b/doric-js/src/runtime/sandbox.es5.ts index 36e54194..69f47c64 100644 --- a/doric-js/src/runtime/sandbox.es5.ts +++ b/doric-js/src/runtime/sandbox.es5.ts @@ -132,33 +132,6 @@ export class Context { constructor(id: string) { this.id = id - return new Proxy(this, { - get: (target, p: any) => { - if (Reflect.has(target, p)) { - return Reflect.get(target, p) - } else { - const namespace = p - return new Proxy({}, { - get: (target, p: any) => { - if (Reflect.has(target, p)) { - return Reflect.get(target, p) - } else { - const context = this - return function () { - const args = [] - args.push(namespace) - args.push(p) - for (let arg of arguments) { - args.push(arg) - } - return Reflect.apply(context.callNative, context, args) - } - } - } - }) - } - } - }) } callNative(namespace: string, method: string, args?: any): Promise { const callbackId = uniqueId('callback') diff --git a/doric-js/src/ui/index.ui.es5.ts b/doric-js/src/ui/index.ui.es5.ts deleted file mode 100644 index e9e95473..00000000 --- a/doric-js/src/ui/index.ui.es5.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright [2019] [Doric.Pub] - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export * from './view.es5' -export * from './panel' -export * from './animation' \ No newline at end of file diff --git a/doric-js/src/ui/panel.ts b/doric-js/src/ui/panel.ts index 31db583c..65f7c4eb 100644 --- a/doric-js/src/ui/panel.ts +++ b/doric-js/src/ui/panel.ts @@ -43,7 +43,7 @@ export abstract class Panel { private __data__?: object private __root__ = new Root - private headviews: Map> = new Map + private headviews: Map> = new Map addHeadView(type: string, v: View) { let map = this.headviews.get(type) @@ -157,7 +157,7 @@ export abstract class Panel { } private nativeRender(model: Model) { - this.context.shader.render(model) + (this.context as any).callNative("shader", "render", model) } private hookBeforeNativeCall() { diff --git a/doric-js/src/ui/view.es5.ts b/doric-js/src/ui/view.es5.ts index fda3be25..809bb35e 100644 --- a/doric-js/src/ui/view.es5.ts +++ b/doric-js/src/ui/view.es5.ts @@ -21,8 +21,19 @@ import { BridgeContext } from "../runtime/global"; import { LayoutConfig } from '../util/layoutconfig' import { IAnimation } from "./animation"; -export function Property(target: Object, propKey: string) { - Reflect.defineMetadata(propKey, true, target) +export function Property(target: View, propKey: string) { + Object.defineProperty(target, propKey, { + get: function () { + return Reflect.get(this, `__prop__${propKey}`, this) + }, + set: function (v) { + const oldV = Reflect.get(this, `__prop__${propKey}`, this) + Reflect.set(this, `__prop__${propKey}`, v, this) + if (oldV !== v) { + Reflect.apply(this.onPropertyChanged, this, [propKey, oldV, v]) + } + }, + }) } export interface IView { @@ -79,6 +90,8 @@ export type NativeViewModel = { } export abstract class View implements Modeling, IView { + private __dirty_props__!: { [index: string]: Model | undefined } + @Property width: number = 0 @@ -128,9 +141,11 @@ export abstract class View implements Modeling, IView { superview?: Superview - callbacks: Map = new Map - + callbacks!: Map private callback2Id(f: Function) { + if (this.callbacks === undefined) { + this.callbacks = new Map + } const id = uniqueId('Function') this.callbacks.set(id, f) return id @@ -144,21 +159,6 @@ export abstract class View implements Modeling, IView { return f } - constructor() { - return new Proxy(this, { - get: (target, p, receiver) => { - return Reflect.get(target, p, receiver) - }, - set: (target, p, v, receiver) => { - const oldV = Reflect.get(target, p, receiver) - const ret = Reflect.set(target, p, v, receiver) - if (Reflect.getMetadata(p, target) && oldV !== v) { - receiver.onPropertyChanged(p.toString(), oldV, v) - } - return ret - } - }) - } /** Anchor start*/ get left() { return this.x @@ -207,7 +207,6 @@ export abstract class View implements Modeling, IView { } /** Anchor end*/ - private __dirty_props__: { [index: string]: Model | undefined } = {} get dirtyProps() { return this.__dirty_props__ @@ -225,6 +224,9 @@ export abstract class View implements Modeling, IView { } else { newV = obj2Model(newV) } + if (this.__dirty_props__ === undefined) { + this.__dirty_props__ = {} + } this.__dirty_props__[propKey] = newV } @@ -388,14 +390,7 @@ export abstract class Superview extends View { export abstract class Group extends Superview { - readonly children: View[] = new Proxy([], { - set: (target, index, value) => { - const ret = Reflect.set(target, index, value) - // Let getDirty return true - this.dirtyProps.children = this.children.map(e => e.viewId) - return ret - } - }) + readonly children: View[] = [] allSubviews() { return this.children @@ -403,6 +398,7 @@ export abstract class Group extends Superview { addChild(view: View) { this.children.push(view) + this.dirtyProps.children = this.children.map(e => e.viewId) } }