(function () { function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass2(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendor"], { /***/ "+924": /*!**************************************************!*\ !*** ./node_modules/@sentry/utils/esm/string.js ***! \**************************************************/ /*! exports provided: truncate, snipLine, safeJoin, isMatchingPattern, escapeStringForRegex */ /***/ function _(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "truncate", function () { return truncate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "snipLine", function () { return snipLine; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "safeJoin", function () { return safeJoin; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMatchingPattern", function () { return isMatchingPattern; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "escapeStringForRegex", function () { return escapeStringForRegex; }); /* harmony import */ var _is__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./is */ "9AQC"); /** * Truncates given string to the maximum characters count * * @param str An object that contains serializable values * @param max Maximum number of characters in truncated string (0 = unlimited) * @returns string Encoded */ function truncate(str, max) { if (max === void 0) { max = 0; } if (typeof str !== 'string' || max === 0) { return str; } return str.length <= max ? str : str.substr(0, max) + "..."; } /** * This is basically just `trim_line` from * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67 * * @param str An object that contains serializable values * @param max Maximum number of characters in truncated string * @returns string Encoded */ function snipLine(line, colno) { var newLine = line; var lineLength = newLine.length; if (lineLength <= 150) { return newLine; } if (colno > lineLength) { // eslint-disable-next-line no-param-reassign colno = lineLength; } var start = Math.max(colno - 60, 0); if (start < 5) { start = 0; } var end = Math.min(start + 140, lineLength); if (end > lineLength - 5) { end = lineLength; } if (end === lineLength) { start = Math.max(end - 140, 0); } newLine = newLine.slice(start, end); if (start > 0) { newLine = "'{snip} " + newLine; } if (end < lineLength) { newLine += ' {snip}'; } return newLine; } /** * Join values in array * @param input array of values to be joined together * @param delimiter string to be placed in-between values * @returns Joined values */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function safeJoin(input, delimiter) { if (!Array.isArray(input)) { return ''; } var output = []; // eslint-disable-next-line @typescript-eslint/prefer-for-of for (var i = 0; i < input.length; i++) { var value = input[i]; try { output.push(String(value)); } catch (e) { output.push('[value cannot be serialized]'); } } return output.join(delimiter); } /** * Checks if the value matches a regex or includes the string * @param value The string value to be checked against * @param pattern Either a regex or a string that must be contained in value */ function isMatchingPattern(value, pattern) { if (!Object(_is__WEBPACK_IMPORTED_MODULE_0__["isString"])(value)) { return false; } if (Object(_is__WEBPACK_IMPORTED_MODULE_0__["isRegExp"])(pattern)) { return pattern.test(value); } if (typeof pattern === 'string') { return value.indexOf(pattern) !== -1; } return false; } /** * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to * `new RegExp()`. * * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node * 12+). * * @param regexString The string to escape * @returns An version of the string with all special regex characters escaped */ function escapeStringForRegex(regexString) { // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20. return regexString.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d'); } //# sourceMappingURL=string.js.map /***/ }, /***/ "+A1k": /*!************************************************!*\ !*** ./node_modules/@sentry/utils/esm/node.js ***! \************************************************/ /*! exports provided: isNodeEnv, dynamicRequire, loadModule */ /***/ function A1k(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */ (function (module) { /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNodeEnv", function () { return isNodeEnv; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dynamicRequire", function () { return dynamicRequire; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadModule", function () { return loadModule; }); /* harmony import */ var _env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./env */ "RQwI"); /** * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something, * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere. */ /** * Checks whether we're in the Node.js or Browser environment * * @returns Answer to given question */ function isNodeEnv() { // explicitly check for browser bundles as those can be optimized statically // by terser/rollup. return !Object(_env__WEBPACK_IMPORTED_MODULE_0__["isBrowserBundle"])() && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; } /** * Requires a module which is protected against bundler minification. * * @param request The module path to resolve */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any function dynamicRequire(mod, request) { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access return mod.require(request); } /** * Helper for dynamically loading module that should work with linked dependencies. * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))` * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during * build time. `require.resolve` is also not available in any other way, so we cannot create, * a fake helper like we do with `dynamicRequire`. * * We always prefer to use local package, thus the value is not returned early from each `try/catch` block. * That is to mimic the behavior of `require.resolve` exactly. * * @param moduleName module name to require * @returns possibly required module */ function loadModule(moduleName) { var mod; try { mod = dynamicRequire(module, moduleName); } catch (e) {// no-empty } try { var cwd = dynamicRequire(module, 'process').cwd; mod = dynamicRequire(module, cwd() + "/node_modules/" + moduleName); } catch (e) {// no-empty } return mod; } //# sourceMappingURL=node.js.map /* WEBPACK VAR INJECTION */ }).call(this, __webpack_require__( /*! ./../../../webpack/buildin/harmony-module.js */ "3UD+")(module)); /***/ }, /***/ "+KVS": /*!**************************************************!*\ !*** ./node_modules/@sentry/core/esm/version.js ***! \**************************************************/ /*! exports provided: SDK_VERSION */ /***/ function KVS(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SDK_VERSION", function () { return SDK_VERSION; }); var SDK_VERSION = '6.19.3'; //# sourceMappingURL=version.js.map /***/ }, /***/ "+usi": /*!*************************************************!*\ !*** ./node_modules/@sentry/utils/esm/enums.js ***! \*************************************************/ /*! exports provided: SeverityLevels */ /***/ function usi(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SeverityLevels", function () { return SeverityLevels; }); var SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical']; //# sourceMappingURL=enums.js.map /***/ }, /***/ "/3cH": /*!******************************************************!*\ !*** ./node_modules/@sentry/core/esm/basebackend.js ***! \******************************************************/ /*! exports provided: BaseBackend */ /***/ function cH(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseBackend", function () { return BaseBackend; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "SOwp"); /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @sentry/utils */ "TwdF"); /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./api */ "3MsT"); /* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./request */ "KRiW"); /* harmony import */ var _transports_noop__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./transports/noop */ "31uO"); /** * This is the base implemention of a Backend. * @hidden */ var BaseBackend = /** @class */ function () { /** Creates a new backend instance. */ function BaseBackend(options) { this._options = options; if (!this._options.dsn) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].warn('No DSN provided, backend will not do anything.'); } this._transport = this._setupTransport(); } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types BaseBackend.prototype.eventFromException = function (_exception, _hint) { throw new _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["SentryError"]('Backend has to implement `eventFromException` method'); }; /** * @inheritDoc */ BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) { throw new _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["SentryError"]('Backend has to implement `eventFromMessage` method'); }; /** * @inheritDoc */ BaseBackend.prototype.sendEvent = function (event) { // TODO(v7): Remove the if-else if (this._newTransport && this._options.dsn && this._options._experiments && this._options._experiments.newTransport) { var api = Object(_api__WEBPACK_IMPORTED_MODULE_2__["initAPIDetails"])(this._options.dsn, this._options._metadata, this._options.tunnel); var env = Object(_request__WEBPACK_IMPORTED_MODULE_3__["createEventEnvelope"])(event, api); void this._newTransport.send(env).then(null, function (reason) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].error('Error while sending event:', reason); }); } else { void this._transport.sendEvent(event).then(null, function (reason) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].error('Error while sending event:', reason); }); } }; /** * @inheritDoc */ BaseBackend.prototype.sendSession = function (session) { if (!this._transport.sendSession) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].warn("Dropping session because custom transport doesn't implement sendSession"); return; } // TODO(v7): Remove the if-else if (this._newTransport && this._options.dsn && this._options._experiments && this._options._experiments.newTransport) { var api = Object(_api__WEBPACK_IMPORTED_MODULE_2__["initAPIDetails"])(this._options.dsn, this._options._metadata, this._options.tunnel); var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(Object(_request__WEBPACK_IMPORTED_MODULE_3__["createSessionEnvelope"])(session, api), 1), env = _a[0]; void this._newTransport.send(env).then(null, function (reason) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].error('Error while sending session:', reason); }); } else { void this._transport.sendSession(session).then(null, function (reason) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].error('Error while sending session:', reason); }); } }; /** * @inheritDoc */ BaseBackend.prototype.getTransport = function () { return this._transport; }; /** * Sets up the transport so it can be used later to send requests. */ BaseBackend.prototype._setupTransport = function () { return new _transports_noop__WEBPACK_IMPORTED_MODULE_4__["NoopTransport"](); }; return BaseBackend; }(); //# sourceMappingURL=basebackend.js.map /***/ }, /***/ "/XPu": /*!*****************************************************************************!*\ !*** ./node_modules/@ionic-native/social-sharing/__ivy_ngcc__/ngx/index.js ***! \*****************************************************************************/ /*! exports provided: SocialSharing */ /***/ function XPu(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SocialSharing", function () { return SocialSharing; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "mrSG"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "fXoL"); /* harmony import */ var _ionic_native_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @ionic-native/core */ "C6fG"); var SocialSharing = /** @class */ function (_super) { Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(SocialSharing, _super); function SocialSharing() { return _super !== null && _super.apply(this, arguments) || this; } SocialSharing.prototype.share = function (message, subject, file, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "share", { "successIndex": 4, "errorIndex": 5 }, arguments); }; SocialSharing.prototype.shareWithOptions = function (options) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareWithOptions", { "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.canShareVia = function (appName, message, subject, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "canShareVia", { "successIndex": 5, "errorIndex": 6, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaTwitter = function (message, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaTwitter", { "successIndex": 3, "errorIndex": 4, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaFacebook = function (message, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaFacebook", { "successIndex": 3, "errorIndex": 4, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaFacebookWithPasteMessageHint = function (message, image, url, pasteMessageHint) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaFacebookWithPasteMessageHint", { "successIndex": 4, "errorIndex": 5, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaInstagram = function (message, image) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaInstagram", { "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaWhatsApp = function (message, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaWhatsApp", { "successIndex": 3, "errorIndex": 4, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaWhatsAppToReceiver = function (receiver, message, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaWhatsAppToReceiver", { "successIndex": 4, "errorIndex": 5, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaSMS = function (messge, phoneNumber) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaSMS", { "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.canShareViaEmail = function () { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "canShareViaEmail", { "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.shareViaEmail = function (message, subject, to, cc, bcc, files) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaEmail", { "platforms": ["iOS", "Android"], "successIndex": 6, "errorIndex": 7 }, arguments); }; SocialSharing.prototype.shareVia = function (appName, message, subject, image, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareVia", { "successIndex": 5, "errorIndex": 6, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.prototype.setIPadPopupCoordinates = function (targetBounds) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "setIPadPopupCoordinates", { "sync": true, "platforms": ["iOS"] }, arguments); }; SocialSharing.prototype.saveToPhotoAlbum = function (fileOrFileArray) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "saveToPhotoAlbum", { "platforms": ["iOS"] }, arguments); }; SocialSharing.prototype.shareViaWhatsAppToPhone = function (phone, message, fileOrFileArray, url) { return Object(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["cordova"])(this, "shareViaWhatsAppToPhone", { "successIndex": 5, "errorIndex": 6, "platforms": ["iOS", "Android"] }, arguments); }; SocialSharing.pluginName = "SocialSharing"; SocialSharing.plugin = "cordova-plugin-x-socialsharing"; SocialSharing.pluginRef = "plugins.socialsharing"; SocialSharing.repo = "https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin"; SocialSharing.platforms = ["Android", "Browser", "iOS", "Windows", "Windows Phone"]; SocialSharing.ɵfac = function SocialSharing_Factory(t) { return ɵSocialSharing_BaseFactory(t || SocialSharing); }; SocialSharing.ɵprov = _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjectable"]({ token: SocialSharing, factory: function factory(t) { return SocialSharing.ɵfac(t); } }); var ɵSocialSharing_BaseFactory = /*@__PURE__*/_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵgetInheritedFactory"](SocialSharing); /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](SocialSharing, [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"] }], null, null); })(); return SocialSharing; }(_ionic_native_core__WEBPACK_IMPORTED_MODULE_2__["IonicNativePlugin"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9AaW9uaWMtbmF0aXZlL3BsdWdpbnMvc29jaWFsLXNoYXJpbmcvbmd4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sOEJBQXNDLE1BQU0sb0JBQW9CLENBQUM7O0FBQ3hFO0FBRzBCLElBcUNTLGlDQUFpQjtBQUFDO0FBRTlCO0FBQ3VDO0FBQzVELElBU0EsNkJBQUssYUFBQyxPQUFnQixFQUFFLE9BQWdCLEVBQUUsSUFBd0IsRUFBRSxHQUFZO0FBS2xDLElBTzlDLHdDQUFnQixhQUFDLE9BTWhCO0FBTUksSUFZTCxtQ0FBVyxhQUFDLE9BQWUsRUFBRSxPQUFnQixFQUFFLE9BQWdCLEVBQUUsS0FBYyxFQUFFLEdBQVk7QUFPckUsSUFTeEIsdUNBQWUsYUFBQyxPQUFlLEVBQUUsS0FBYyxFQUFFLEdBQVk7QUFRN0QsSUFRQSx3Q0FBZ0IsYUFBQyxPQUFlLEVBQUUsS0FBYyxFQUFFLEdBQVk7QUFPNUQsSUFVRiw0REFBb0MsYUFDbEMsT0FBZSxFQUNmLEtBQWMsRUFDZCxHQUFZLEVBQ1osZ0JBQXlCO0FBU1YsSUFLakIseUNBQWlCLGFBQUMsT0FBZSxFQUFFLEtBQWE7QUFNMUIsSUFVdEIsd0NBQWdCLGFBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxHQUFZO0FBTWYsSUFXL0Msa0RBQTBCLGFBQUMsUUFBZ0IsRUFBRSxPQUFlLEVBQUUsS0FBYyxFQUFFLEdBQVk7QUFPckQsSUFNckMsbUNBQVcsYUFBQyxNQUFjLEVBQUUsV0FBbUI7QUFNckMsSUFLVix3Q0FBZ0I7QUFPQSxJQVloQixxQ0FBYSxhQUNYLE9BQWUsRUFDZixPQUFlLEVBQ2YsRUFBWSxFQUNaLEVBQWEsRUFDYixHQUFjLEVBQ2QsS0FBeUI7QUFPa0MsSUFZN0QsZ0NBQVEsYUFBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQWdCLEVBQUUsS0FBYyxFQUFFLEdBQVk7QUFNckUsSUFNcEIsK0NBQXVCLGFBQUMsWUFBb0I7QUFJTCxJQU12Qyx3Q0FBZ0IsYUFBQyxlQUFrQztBQUtSLElBWTNDLCtDQUF1QixhQUNyQixLQUFhLEVBQ2IsT0FBZSxFQUNmLGVBQWtDLEVBQ2xDLEdBQVk7QUFLcUY7QUFBZ0Q7QUFBNkQ7QUFBdUQ7QUFBNEY7aURBMVFwVyxVQUFVOzs7OzswQkFDTDtBQUFDLHdCQTFDUDtBQUFFLEVBMENpQyxpQkFBaUI7QUFDbkQsU0FEWSxhQUFhO0FBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhLCBJb25pY05hdGl2ZVBsdWdpbiwgUGx1Z2luIH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9jb3JlJztcblxuLyoqXG4gKiBAbmFtZSBTb2NpYWwgU2hhcmluZ1xuICogQHByZW1pZXIgc29jaWFsLXNoYXJpbmdcbiAqIEBkZXNjcmlwdGlvblxuICogU2hhcmUgdGV4dCwgZmlsZXMsIGltYWdlcywgYW5kIGxpbmtzIHZpYSBzb2NpYWwgbmV0d29ya3MsIHNtcywgYW5kIGVtYWlsLlxuICpcbiAqIEZvciBCcm93c2VyIHVzYWdlIGNoZWNrIG91dCB0aGUgV2ViIFNoYXJlIEFQSSBkb2NzOiBodHRwczovL2dpdGh1Yi5jb20vRWRkeVZlcmJydWdnZW4vU29jaWFsU2hhcmluZy1QaG9uZUdhcC1QbHVnaW4jNS13ZWItc2hhcmUtYXBpXG4gKlxuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBTb2NpYWxTaGFyaW5nIH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9zb2NpYWwtc2hhcmluZy9uZ3gnO1xuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgc29jaWFsU2hhcmluZzogU29jaWFsU2hhcmluZykgeyB9XG4gKlxuICogLi4uXG4gKlxuICogLy8gQ2hlY2sgaWYgc2hhcmluZyB2aWEgZW1haWwgaXMgc3VwcG9ydGVkXG4gKiB0aGlzLnNvY2lhbFNoYXJpbmcuY2FuU2hhcmVWaWFFbWFpbCgpLnRoZW4oKCkgPT4ge1xuICogICAvLyBTaGFyaW5nIHZpYSBlbWFpbCBpcyBwb3NzaWJsZVxuICogfSkuY2F0Y2goKCkgPT4ge1xuICogICAvLyBTaGFyaW5nIHZpYSBlbWFpbCBpcyBub3QgcG9zc2libGVcbiAqIH0pO1xuICpcbiAqIC8vIFNoYXJlIHZpYSBlbWFpbFxuICogdGhpcy5zb2NpYWxTaGFyaW5nLnNoYXJlVmlhRW1haWwoJ0JvZHknLCAnU3ViamVjdCcsIFsncmVjaXBpZW50QGV4YW1wbGUub3JnJ10pLnRoZW4oKCkgPT4ge1xuICogICAvLyBTdWNjZXNzIVxuICogfSkuY2F0Y2goKCkgPT4ge1xuICogICAvLyBFcnJvciFcbiAqIH0pO1xuICogYGBgXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnU29jaWFsU2hhcmluZycsXG4gIHBsdWdpbjogJ2NvcmRvdmEtcGx1Z2luLXgtc29jaWFsc2hhcmluZycsXG4gIHBsdWdpblJlZjogJ3BsdWdpbnMuc29jaWFsc2hhcmluZycsXG4gIHJlcG86ICdodHRwczovL2dpdGh1Yi5jb20vRWRkeVZlcmJydWdnZW4vU29jaWFsU2hhcmluZy1QaG9uZUdhcC1QbHVnaW4nLFxuICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdCcm93c2VyJywgJ2lPUycsICdXaW5kb3dzJywgJ1dpbmRvd3MgUGhvbmUnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU29jaWFsU2hhcmluZyBleHRlbmRzIElvbmljTmF0aXZlUGx1Z2luIHtcbiAgLyoqXG4gICAqIFNoYXJlcyB1c2luZyB0aGUgc2hhcmUgc2hlZXRcbiAgICogQHBhcmFtIG1lc3NhZ2Uge3N0cmluZ30gVGhlIG1lc3NhZ2UgeW91IHdvdWxkIGxpa2UgdG8gc2hhcmUuXG4gICAqIEBwYXJhbSBzdWJqZWN0IHtzdHJpbmd9IFRoZSBzdWJqZWN0XG4gICAqIEBwYXJhbSBmaWxlIHtzdHJpbmd8c3RyaW5nW119IFVSTChzKSB0byBmaWxlKHMpIG9yIGltYWdlKHMpLCBsb2NhbCBwYXRoKHMpIHRvIGZpbGUocykgb3IgaW1hZ2UocyksIG9yIGJhc2U2NCBkYXRhIG9mIGFuIGltYWdlLiBPbmx5IHRoZSBmaXJzdCBmaWxlL2ltYWdlIHdpbGwgYmUgdXNlZCBvbiBXaW5kb3dzIFBob25lLlxuICAgKiBAcGFyYW0gdXJsIHtzdHJpbmd9IEEgVVJMIHRvIHNoYXJlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiA0LFxuICAgIGVycm9ySW5kZXg6IDUsXG4gIH0pXG4gIHNoYXJlKG1lc3NhZ2U/OiBzdHJpbmcsIHN1YmplY3Q/OiBzdHJpbmcsIGZpbGU/OiBzdHJpbmcgfCBzdHJpbmdbXSwgdXJsPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2hhcmVzIHVzaW5nIHRoZSBzaGFyZSBzaGVldCB3aXRoIGFkZGl0aW9uYWwgb3B0aW9ucyBhbmQgcmV0dXJucyBhIHJlc3VsdCBvYmplY3Qgb3IgYW4gZXJyb3IgbWVzc2FnZSAocmVxdWlyZXMgcGx1Z2luIHZlcnNpb24gNS4xLjArKVxuICAgKiBAcGFyYW0gb3B0aW9ucyB7b2JqZWN0fSBUaGUgb3B0aW9ucyBvYmplY3Qgd2l0aCB0aGUgbWVzc2FnZSwgc3ViamVjdCwgZmlsZXMsIHVybCBhbmQgY2hvb3NlclRpdGxlIHByb3BlcnRpZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gIH0pXG4gIHNoYXJlV2l0aE9wdGlvbnMob3B0aW9uczoge1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgc3ViamVjdD86IHN0cmluZztcbiAgICBmaWxlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIHVybD86IHN0cmluZztcbiAgICBjaG9vc2VyVGl0bGU/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgeW91IGNhbiBzaGFyZSB2aWEgYSBzcGVjaWZpYyBhcHAuXG4gICAqIEBwYXJhbSBhcHBOYW1lIHtzdHJpbmd9IEFwcCBuYW1lIG9yIHBhY2thZ2UgbmFtZS4gRXhhbXBsZXM6IGluc3RhZ3JhbSBvciBjb20uYXBwbGUuc29jaWFsLmZhY2Vib29rXG4gICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9XG4gICAqIEBwYXJhbSBzdWJqZWN0IHtzdHJpbmd9XG4gICAqIEBwYXJhbSBpbWFnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gdXJsIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiA1LFxuICAgIGVycm9ySW5kZXg6IDYsXG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gIH0pXG4gIGNhblNoYXJlVmlhKGFwcE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc3ViamVjdD86IHN0cmluZywgaW1hZ2U/OiBzdHJpbmcsIHVybD86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBkaXJlY3RseSB0byBUd2l0dGVyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9XG4gICAqIEBwYXJhbSBpbWFnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gdXJsIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAzLFxuICAgIGVycm9ySW5kZXg6IDQsXG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gIH0pXG4gIHNoYXJlVmlhVHdpdHRlcihtZXNzYWdlOiBzdHJpbmcsIGltYWdlPzogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGFyZXMgZGlyZWN0bHkgdG8gRmFjZWJvb2tcbiAgICogQHBhcmFtIG1lc3NhZ2Uge3N0cmluZ31cbiAgICogQHBhcmFtIGltYWdlIHtzdHJpbmd9XG4gICAqIEBwYXJhbSB1cmwge3N0cmluZ31cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDMsXG4gICAgZXJyb3JJbmRleDogNCxcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJywgJ0FuZHJvaWQnXSxcbiAgfSlcbiAgc2hhcmVWaWFGYWNlYm9vayhtZXNzYWdlOiBzdHJpbmcsIGltYWdlPzogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGFyZXMgZGlyZWN0bHkgdG8gRmFjZWJvb2sgd2l0aCBhIHBhc3RlIG1lc3NhZ2UgaGludFxuICAgKiBAcGFyYW0gbWVzc2FnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gaW1hZ2Uge3N0cmluZ31cbiAgICogQHBhcmFtIHVybCB7c3RyaW5nfVxuICAgKiBAcGFyYW0gcGFzdGVNZXNzYWdlSGludCB7c3RyaW5nfVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogNCxcbiAgICBlcnJvckluZGV4OiA1LFxuICAgIHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddLFxuICB9KVxuICBzaGFyZVZpYUZhY2Vib29rV2l0aFBhc3RlTWVzc2FnZUhpbnQoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHVybD86IHN0cmluZyxcbiAgICBwYXN0ZU1lc3NhZ2VIaW50Pzogc3RyaW5nXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBkaXJlY3RseSB0byBJbnN0YWdyYW1cbiAgICogQHBhcmFtIG1lc3NhZ2Uge3N0cmluZ31cbiAgICogQHBhcmFtIGltYWdlIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gIH0pXG4gIHNoYXJlVmlhSW5zdGFncmFtKG1lc3NhZ2U6IHN0cmluZywgaW1hZ2U6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBkaXJlY3RseSB0byBXaGF0c0FwcFxuICAgKiBAcGFyYW0gbWVzc2FnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gaW1hZ2Uge3N0cmluZ31cbiAgICogQHBhcmFtIHVybCB7c3RyaW5nfVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMyxcbiAgICBlcnJvckluZGV4OiA0LFxuICAgIHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddLFxuICB9KVxuICBzaGFyZVZpYVdoYXRzQXBwKG1lc3NhZ2U6IHN0cmluZywgaW1hZ2U/OiBzdHJpbmcsIHVybD86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBkaXJlY3RseSB0byBhIFdoYXRzQXBwIENvbnRhY3RcbiAgICogQHBhcmFtIHJlY2VpdmVyIHtzdHJpbmd9IFBhc3MgcGhvbmUgbnVtYmVyIG9uIEFuZHJvaWQsIGFuZCBBZGRyZXNzYm9vayBJRCAoYWJpZCkgb24gaU9TXG4gICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9IE1lc3NhZ2UgdG8gc2VuZFxuICAgKiBAcGFyYW0gaW1hZ2Uge3N0cmluZ30gSW1hZ2UgdG8gc2VuZCAoZG9lcyBub3Qgd29yayBvbiBpT1NcbiAgICogQHBhcmFtIHVybCB7c3RyaW5nfSBMaW5rIHRvIHNlbmRcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDQsXG4gICAgZXJyb3JJbmRleDogNSxcbiAgICBwbGF0Zm9ybXM6IFsnaU9TJywgJ0FuZHJvaWQnXSxcbiAgfSlcbiAgc2hhcmVWaWFXaGF0c0FwcFRvUmVjZWl2ZXIocmVjZWl2ZXI6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBpbWFnZT86IHN0cmluZywgdXJsPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2hhcmUgdmlhIFNNU1xuICAgKiBAcGFyYW0gbWVzc2dlIHtzdHJpbmd9IG1lc3NhZ2UgdG8gc2VuZFxuICAgKiBAcGFyYW0gcGhvbmVOdW1iZXIge3N0cmluZ30gTnVtYmVyIG9yIG11bHRpcGxlIG51bWJlcnMgc2VwZXJhdGVkIGJ5IGNvbW1hc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddLFxuICB9KVxuICBzaGFyZVZpYVNNUyhtZXNzZ2U6IHN0cmluZywgcGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB5b3UgY2FuIHNoYXJlIHZpYSBlbWFpbFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddLFxuICB9KVxuICBjYW5TaGFyZVZpYUVtYWlsKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlIHZpYSBFbWFpbFxuICAgKiBAcGFyYW0gbWVzc2FnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gc3ViamVjdCB7c3RyaW5nfVxuICAgKiBAcGFyYW0gdG8ge3N0cmluZ1tdfVxuICAgKiBAcGFyYW0gY2Mge3N0cmluZ1tdfSBPcHRpb25hbFxuICAgKiBAcGFyYW0gYmNjIHtzdHJpbmdbXX0gT3B0aW9uYWxcbiAgICogQHBhcmFtIGZpbGVzIHtzdHJpbmd8c3RyaW5nW119IE9wdGlvbmFsIFVSTCBvciBsb2NhbCBwYXRoIHRvIGZpbGUocykgdG8gYXR0YWNoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gICAgc3VjY2Vzc0luZGV4OiA2LFxuICAgIGVycm9ySW5kZXg6IDcsXG4gIH0pXG4gIHNoYXJlVmlhRW1haWwoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICB0bzogc3RyaW5nW10sXG4gICAgY2M/OiBzdHJpbmdbXSxcbiAgICBiY2M/OiBzdHJpbmdbXSxcbiAgICBmaWxlcz86IHN0cmluZyB8IHN0cmluZ1tdXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlIHZpYSBBcHBOYW1lXG4gICAqIEBwYXJhbSBhcHBOYW1lIHtzdHJpbmd9IEFwcCBuYW1lIG9yIHBhY2thZ2UgbmFtZS4gRXhhbXBsZXM6IGluc3RhZ3JhbSBvciBjb20uYXBwbGUuc29jaWFsLmZhY2Vib29rXG4gICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9XG4gICAqIEBwYXJhbSBzdWJqZWN0IHtzdHJpbmd9XG4gICAqIEBwYXJhbSBpbWFnZSB7c3RyaW5nfVxuICAgKiBAcGFyYW0gdXJsIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiA1LFxuICAgIGVycm9ySW5kZXg6IDYsXG4gICAgcGxhdGZvcm1zOiBbJ2lPUycsICdBbmRyb2lkJ10sXG4gIH0pXG4gIHNoYXJlVmlhKGFwcE5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBzdWJqZWN0Pzogc3RyaW5nLCBpbWFnZT86IHN0cmluZywgdXJsPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogZGVmaW5lcyB0aGUgcG9wdXAgcG9zaXRpb24gYmVmb3JlIGNhbGwgdGhlIHNoYXJlIG1ldGhvZC5cbiAgICogQHBhcmFtIHRhcmdldEJvdW5kcyB7c3RyaW5nfSBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHRcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICAgIHBsYXRmb3JtczogWydpT1MnXSxcbiAgfSlcbiAgc2V0SVBhZFBvcHVwQ29vcmRpbmF0ZXModGFyZ2V0Qm91bmRzOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFNhdmUgYW4gYXJyYXkgb2YgaW1hZ2VzIHRvIHRoZSBjYW1lcmEgcm9sbFxuICAgKiBAcGFyYW0gIHtzdHJpbmd8c3RyaW5nW119IGZpbGVPckZpbGVBcnJheSBTaW5nbGUgb3IgbXVsdGlwbGUgZmlsZXNcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55PiB9XG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ2lPUyddLFxuICB9KVxuICBzYXZlVG9QaG90b0FsYnVtKGZpbGVPckZpbGVBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGFyZXMgZGlyZWN0bHkgdG8gYSBXaGF0c0FwcCBDb250YWN0IHdpdGggcGhvbmUgbnVtYmVyLlxuICAgKiBAcGFyYW0gcGhvbmUge3N0cmluZ30gUGFzcyBwaG9uZSBudW1iZXJcbiAgICogQHBhcmFtIG1lc3NhZ2Uge3N0cmluZ30gTWVzc2FnZSB0byBzZW5kXG4gICAqIEBwYXJhbSBmaWxlT3JGaWxlQXJyYXkgZmlsZU9yRmlsZUFycmF5IFNpbmdsZSBvciBtdWx0aXBsZSBmaWxlc1xuICAgKiBAcGFyYW0gdXJsIHtzdHJpbmd9IExpbmsgdG8gc2VuZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogNSxcbiAgICBlcnJvckluZGV4OiA2LFxuICAgIHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddLFxuICB9KVxuICBzaGFyZVZpYVdoYXRzQXBwVG9QaG9uZShcbiAgICBwaG9uZTogc3RyaW5nLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBmaWxlT3JGaWxlQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIHVybD86IHN0cmluZ1xuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19 /***/ }, /***/ "/ZhC": /*!**********************************************************************!*\ !*** ./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js ***! \**********************************************************************/ /*! exports provided: Breadcrumbs */ /***/ function ZhC(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Breadcrumbs", function () { return Breadcrumbs; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "SOwp"); /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @sentry/core */ "wBhU"); /* harmony import */ var _sentry_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @sentry/types */ "PIsB"); /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @sentry/utils */ "TwdF"); /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable max-lines */ /** * Default Breadcrumbs instrumentations * TODO: Deprecated - with v6, this will be renamed to `Instrument` */ var Breadcrumbs = /** @class */ function () { /** * @inheritDoc */ function Breadcrumbs(options) { /** * @inheritDoc */ this.name = Breadcrumbs.id; this._options = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options); } /** * Create a breadcrumb of `sentry` from the events themselves */ Breadcrumbs.prototype.addSentryBreadcrumb = function (event) { if (!this._options.sentry) { return; } Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: "sentry." + (event.type === 'transaction' ? 'transaction' : 'event'), event_id: event.event_id, level: event.level, message: Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["getEventDescription"])(event) }, { event: event }); }; /** * Instrument browser built-ins w/ breadcrumb capturing * - Console API * - DOM API (click/typing) * - XMLHttpRequest API * - Fetch API * - History API */ Breadcrumbs.prototype.setupOnce = function () { if (this._options.console) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["addInstrumentationHandler"])('console', _consoleBreadcrumb); } if (this._options.dom) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["addInstrumentationHandler"])('dom', _domBreadcrumb(this._options.dom)); } if (this._options.xhr) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["addInstrumentationHandler"])('xhr', _xhrBreadcrumb); } if (this._options.fetch) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["addInstrumentationHandler"])('fetch', _fetchBreadcrumb); } if (this._options.history) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["addInstrumentationHandler"])('history', _historyBreadcrumb); } }; /** * @inheritDoc */ Breadcrumbs.id = 'Breadcrumbs'; return Breadcrumbs; }(); /** * A HOC that creaes a function that creates breadcrumbs from DOM API calls. * This is a HOC so that we get access to dom options in the closure. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function _domBreadcrumb(dom) { // eslint-disable-next-line @typescript-eslint/no-explicit-any function _innerDomBreadcrumb(handlerData) { var target; var keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined; if (typeof keyAttrs === 'string') { keyAttrs = [keyAttrs]; } // Accessing event.target can throw (see getsentry/raven-js#838, #768) try { target = handlerData.event.target ? Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["htmlTreeAsString"])(handlerData.event.target, keyAttrs) : Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["htmlTreeAsString"])(handlerData.event, keyAttrs); } catch (e) { target = ''; } if (target.length === 0) { return; } Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: "ui." + handlerData.name, message: target }, { event: handlerData.event, name: handlerData.name, global: handlerData.global }); } return _innerDomBreadcrumb; } /** * Creates breadcrumbs from console API calls */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function _consoleBreadcrumb(handlerData) { var breadcrumb = { category: 'console', data: { arguments: handlerData.args, logger: 'console' }, level: Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["severityFromString"])(handlerData.level), message: Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["safeJoin"])(handlerData.args, ' ') }; if (handlerData.level === 'assert') { if (handlerData.args[0] === false) { breadcrumb.message = "Assertion failed: " + (Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["safeJoin"])(handlerData.args.slice(1), ' ') || 'console.assert'); breadcrumb.data.arguments = handlerData.args.slice(1); } else { // Don't capture a breadcrumb for passed assertions return; } } Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb(breadcrumb, { input: handlerData.args, level: handlerData.level }); } /** * Creates breadcrumbs from XHR API calls */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function _xhrBreadcrumb(handlerData) { if (handlerData.endTimestamp) { // We only capture complete, non-sentry requests if (handlerData.xhr.__sentry_own_request__) { return; } var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body; Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: 'xhr', data: { method: method, url: url, status_code: status_code }, type: 'http' }, { xhr: handlerData.xhr, input: body }); return; } } /** * Creates breadcrumbs from fetch API calls */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function _fetchBreadcrumb(handlerData) { // We only capture complete fetch requests if (!handlerData.endTimestamp) { return; } if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') { // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests) return; } if (handlerData.error) { Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: 'fetch', data: handlerData.fetchData, level: _sentry_types__WEBPACK_IMPORTED_MODULE_2__["Severity"].Error, type: 'http' }, { data: handlerData.error, input: handlerData.args }); } else { Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: 'fetch', data: Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, handlerData.fetchData), { status_code: handlerData.response.status }), type: 'http' }, { input: handlerData.args, response: handlerData.response }); } } /** * Creates breadcrumbs from history API calls */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function _historyBreadcrumb(handlerData) { var global = Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["getGlobalObject"])(); var from = handlerData.from; var to = handlerData.to; var parsedLoc = Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["parseUrl"])(global.location.href); var parsedFrom = Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["parseUrl"])(from); var parsedTo = Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__["parseUrl"])(to); // Initial pushState doesn't provide `from` information if (!parsedFrom.path) { parsedFrom = parsedLoc; } // Use only the path component of the URL if the URL matches the current // document (almost all the time when using pushState) if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) { to = parsedTo.relative; } if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) { from = parsedFrom.relative; } Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["getCurrentHub"])().addBreadcrumb({ category: 'navigation', data: { from: from, to: to } }); } //# sourceMappingURL=breadcrumbs.js.map /***/ }, /***/ "/d8p": /*!*****************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/repeat.js ***! \*****************************************************************/ /*! exports provided: repeat */ /***/ function d8p(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function () { return repeat; }); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../Subscriber */ "7o/Q"); /* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ../observable/empty */ "EY2u"); function repeat() { var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; return function (source) { if (count === 0) { return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_1__["empty"])(); } else if (count < 0) { return source.lift(new RepeatOperator(-1, source)); } else { return source.lift(new RepeatOperator(count - 1, source)); } }; } var RepeatOperator = /*#__PURE__*/function () { function RepeatOperator(count, source) { _classCallCheck(this, RepeatOperator); this.count = count; this.source = source; } _createClass2(RepeatOperator, [{ key: "call", value: function call(subscriber, source) { return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source)); } }]); return RepeatOperator; }(); var RepeatSubscriber = /*#__PURE__*/function (_Subscriber__WEBPACK_) { _inherits(RepeatSubscriber, _Subscriber__WEBPACK_); var _super2 = _createSuper(RepeatSubscriber); function RepeatSubscriber(destination, count, source) { var _this2; _classCallCheck(this, RepeatSubscriber); _this2 = _super2.call(this, destination); _this2.count = count; _this2.source = source; return _this2; } _createClass2(RepeatSubscriber, [{ key: "complete", value: function complete() { if (!this.isStopped) { var source = this.source, count = this.count; if (count === 0) { return _get(_getPrototypeOf(RepeatSubscriber.prototype), "complete", this).call(this); } else if (count > -1) { this.count = count - 1; } source.subscribe(this._unsubscribeAndRecycle()); } } }]); return RepeatSubscriber; }(_Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]); //# sourceMappingURL=repeat.js.map /***/ }, /***/ "/s3u": /*!**********************************************************!*\ !*** ./node_modules/@capacitor/camera/dist/esm/index.js ***! \**********************************************************/ /*! exports provided: CameraSource, CameraDirection, CameraResultType, Camera */ /***/ function s3u(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Camera", function () { return Camera; }); /* harmony import */ var _capacitor_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! @capacitor/core */ "FUe0"); /* harmony import */ var _definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./definitions */ "dTEF"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CameraSource", function () { return _definitions__WEBPACK_IMPORTED_MODULE_1__["CameraSource"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CameraDirection", function () { return _definitions__WEBPACK_IMPORTED_MODULE_1__["CameraDirection"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CameraResultType", function () { return _definitions__WEBPACK_IMPORTED_MODULE_1__["CameraResultType"]; }); var Camera = Object(_capacitor_core__WEBPACK_IMPORTED_MODULE_0__["registerPlugin"])('Camera', { web: function web() { return __webpack_require__.e( /*! import() | web */ "web").then(__webpack_require__.bind(null, /*! ./web */ "wzPO")).then(function (m) { return new m.CameraWeb(); }); } }); //# sourceMappingURL=index.js.map /***/ }, /***/ "/uUt": /*!*******************************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js ***! \*******************************************************************************/ /*! exports provided: distinctUntilChanged */ /***/ function uUt(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function () { return distinctUntilChanged; }); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../Subscriber */ "7o/Q"); function distinctUntilChanged(compare, keySelector) { return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); }; } var DistinctUntilChangedOperator = /*#__PURE__*/function () { function DistinctUntilChangedOperator(compare, keySelector) { _classCallCheck(this, DistinctUntilChangedOperator); this.compare = compare; this.keySelector = keySelector; } _createClass2(DistinctUntilChangedOperator, [{ key: "call", value: function call(subscriber, source) { return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector)); } }]); return DistinctUntilChangedOperator; }(); var DistinctUntilChangedSubscriber = /*#__PURE__*/function (_Subscriber__WEBPACK_2) { _inherits(DistinctUntilChangedSubscriber, _Subscriber__WEBPACK_2); var _super3 = _createSuper(DistinctUntilChangedSubscriber); function DistinctUntilChangedSubscriber(destination, compare, keySelector) { var _this3; _classCallCheck(this, DistinctUntilChangedSubscriber); _this3 = _super3.call(this, destination); _this3.keySelector = keySelector; _this3.hasKey = false; if (typeof compare === 'function') { _this3.compare = compare; } return _this3; } _createClass2(DistinctUntilChangedSubscriber, [{ key: "compare", value: function compare(x, y) { return x === y; } }, { key: "_next", value: function _next(value) { var key; try { var keySelector = this.keySelector; key = keySelector ? keySelector(value) : value; } catch (err) { return this.destination.error(err); } var result = false; if (this.hasKey) { try { var compare = this.compare; result = compare(this.key, key); } catch (err) { return this.destination.error(err); } } else { this.hasKey = true; } if (!result) { this.key = key; this.destination.next(value); } } }]); return DistinctUntilChangedSubscriber; }(_Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]); //# sourceMappingURL=distinctUntilChanged.js.map /***/ }, /***/ "02Lk": /*!*******************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/distinct.js ***! \*******************************************************************/ /*! exports provided: distinct, DistinctSubscriber */ /***/ function Lk(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function () { return distinct; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function () { return DistinctSubscriber; }); /* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../innerSubscribe */ "zx2A"); function distinct(keySelector, flushes) { return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); }; } var DistinctOperator = /*#__PURE__*/function () { function DistinctOperator(keySelector, flushes) { _classCallCheck(this, DistinctOperator); this.keySelector = keySelector; this.flushes = flushes; } _createClass2(DistinctOperator, [{ key: "call", value: function call(subscriber, source) { return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes)); } }]); return DistinctOperator; }(); var DistinctSubscriber = /*#__PURE__*/function (_innerSubscribe__WEBP) { _inherits(DistinctSubscriber, _innerSubscribe__WEBP); var _super4 = _createSuper(DistinctSubscriber); function DistinctSubscriber(destination, keySelector, flushes) { var _this4; _classCallCheck(this, DistinctSubscriber); _this4 = _super4.call(this, destination); _this4.keySelector = keySelector; _this4.values = new Set(); if (flushes) { _this4.add(Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["innerSubscribe"])(flushes, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["SimpleInnerSubscriber"](_assertThisInitialized(_this4)))); } return _this4; } _createClass2(DistinctSubscriber, [{ key: "notifyNext", value: function notifyNext() { this.values.clear(); } }, { key: "notifyError", value: function notifyError(error) { this._error(error); } }, { key: "_next", value: function _next(value) { if (this.keySelector) { this._useKeySelector(value); } else { this._finalizeNext(value, value); } } }, { key: "_useKeySelector", value: function _useKeySelector(value) { var key; var destination = this.destination; try { key = this.keySelector(value); } catch (err) { destination.error(err); return; } this._finalizeNext(key, value); } }, { key: "_finalizeNext", value: function _finalizeNext(key, value) { var values = this.values; if (!values.has(key)) { values.add(key); this.destination.next(value); } } }]); return DistinctSubscriber; }(_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["SimpleOuterSubscriber"]); //# sourceMappingURL=distinct.js.map /***/ }, /***/ "04ZW": /*!****************************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/observable/fromEventPattern.js ***! \****************************************************************************/ /*! exports provided: fromEventPattern */ /***/ function ZW(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function () { return fromEventPattern; }); /* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../Observable */ "HDdC"); /* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ../util/isArray */ "DH7j"); /* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ../util/isFunction */ "n6bG"); /* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ../operators/map */ "lJxs"); function fromEventPattern(addHandler, removeHandler, resultSelector) { if (resultSelector) { return fromEventPattern(addHandler, removeHandler).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, _toConsumableArray(args)) : resultSelector(args); })); } return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { var handler = function handler() { for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { e[_key] = arguments[_key]; } return subscriber.next(e.length === 1 ? e[0] : e); }; var retValue; try { retValue = addHandler(handler); } catch (err) { subscriber.error(err); return undefined; } if (!Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(removeHandler)) { return undefined; } return function () { return removeHandler(handler, retValue); }; }); } //# sourceMappingURL=fromEventPattern.js.map /***/ }, /***/ "05l1": /*!************************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/publishReplay.js ***! \************************************************************************/ /*! exports provided: publishReplay */ /***/ function l1(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function () { return publishReplay; }); /* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../ReplaySubject */ "jtHE"); /* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./multicast */ "oB13"); function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') { scheduler = selectorOrScheduler; } var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined; var subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return subject; }, selector)(source); }; } //# sourceMappingURL=publishReplay.js.map /***/ }, /***/ "06fX": /*!*********************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/md.transition-eecd3a67.js ***! \*********************************************************************/ /*! exports provided: mdTransitionAnimation */ /***/ function fX(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mdTransitionAnimation", function () { return mdTransitionAnimation; }); /* harmony import */ var _animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./animation-096c6391.js */ "meiF"); /* harmony import */ var _index_931440b1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./index-931440b1.js */ "Js3/"); /* harmony import */ var _helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./helpers-dd7e4b7b.js */ "1vRN"); /* harmony import */ var _index_7a8b7a1c_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./index-7a8b7a1c.js */ "wEJo"); var mdTransitionAnimation = function mdTransitionAnimation(_, opts) { var OFF_BOTTOM = '40px'; var CENTER = '0px'; var backDirection = opts.direction === 'back'; var enteringEl = opts.enteringEl; var leavingEl = opts.leavingEl; var ionPageElement = Object(_index_931440b1_js__WEBPACK_IMPORTED_MODULE_1__["g"])(enteringEl); var enteringToolbarEle = ionPageElement.querySelector('ion-toolbar'); var rootTransition = Object(_animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__["c"])(); rootTransition.addElement(ionPageElement).fill('both').beforeRemoveClass('ion-page-invisible'); // animate the component itself if (backDirection) { rootTransition.duration(opts.duration || 200).easing('cubic-bezier(0.47,0,0.745,0.715)'); } else { rootTransition.duration(opts.duration || 280).easing('cubic-bezier(0.36,0.66,0.04,1)').fromTo('transform', "translateY(".concat(OFF_BOTTOM, ")"), "translateY(".concat(CENTER, ")")).fromTo('opacity', 0.01, 1); } // Animate toolbar if it's there if (enteringToolbarEle) { var enteringToolBar = Object(_animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__["c"])(); enteringToolBar.addElement(enteringToolbarEle); rootTransition.addAnimation(enteringToolBar); } // setup leaving view if (leavingEl && backDirection) { // leaving content rootTransition.duration(opts.duration || 200).easing('cubic-bezier(0.47,0,0.745,0.715)'); var leavingPage = Object(_animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__["c"])(); leavingPage.addElement(Object(_index_931440b1_js__WEBPACK_IMPORTED_MODULE_1__["g"])(leavingEl)).onFinish(function (currentStep) { if (currentStep === 1 && leavingPage.elements.length > 0) { leavingPage.elements[0].style.setProperty('display', 'none'); } }).fromTo('transform', "translateY(".concat(CENTER, ")"), "translateY(".concat(OFF_BOTTOM, ")")).fromTo('opacity', 1, 0); rootTransition.addAnimation(leavingPage); } return rootTransition; }; /***/ }, /***/ "0EUg": /*!********************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/concatAll.js ***! \********************************************************************/ /*! exports provided: concatAll */ /***/ function EUg(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function () { return concatAll; }); /* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./mergeAll */ "bHdf"); function concatAll() { return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__["mergeAll"])(1); } //# sourceMappingURL=concatAll.js.map /***/ }, /***/ "0G76": /*!*********************************************************************!*\ !*** ./node_modules/@sentry/tracing/esm/integrations/node/mongo.js ***! \*********************************************************************/ /*! exports provided: Mongo */ /***/ function G76(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Mongo", function () { return Mongo; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "SOwp"); /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @sentry/utils */ "TwdF"); var OPERATIONS = ['aggregate', 'bulkWrite', 'countDocuments', 'createIndex', 'createIndexes', 'deleteMany', 'deleteOne', 'distinct', 'drop', 'dropIndex', 'dropIndexes', 'estimatedDocumentCount', 'find', 'findOne', 'findOneAndDelete', 'findOneAndReplace', 'findOneAndUpdate', 'indexes', 'indexExists', 'indexInformation', 'initializeOrderedBulkOp', 'insertMany', 'insertOne', 'isCapped', 'mapReduce', 'options', 'parallelCollectionScan', 'rename', 'replaceOne', 'stats', 'updateMany', 'updateOne']; // All of the operations above take `options` and `callback` as their final parameters, but some of them // take additional parameters as well. For those operations, this is a map of // { : [] }, as a way to know what to call the operation's // positional arguments when we add them to the span's `data` object later var OPERATION_SIGNATURES = { // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well // see https://github.com/getsentry/sentry-javascript/pull/3102 bulkWrite: ['operations'], countDocuments: ['query'], createIndex: ['fieldOrSpec'], createIndexes: ['indexSpecs'], deleteMany: ['filter'], deleteOne: ['filter'], distinct: ['key', 'query'], dropIndex: ['indexName'], find: ['query'], findOne: ['query'], findOneAndDelete: ['filter'], findOneAndReplace: ['filter', 'replacement'], findOneAndUpdate: ['filter', 'update'], indexExists: ['indexes'], insertMany: ['docs'], insertOne: ['doc'], mapReduce: ['map', 'reduce'], rename: ['newName'], replaceOne: ['filter', 'doc'], updateMany: ['filter', 'update'], updateOne: ['filter', 'update'] }; /** Tracing integration for mongo package */ var Mongo = /** @class */ function () { /** * @inheritDoc */ function Mongo(options) { if (options === void 0) { options = {}; } /** * @inheritDoc */ this.name = Mongo.id; this._operations = Array.isArray(options.operations) ? options.operations : OPERATIONS; this._describeOperations = 'describeOperations' in options ? options.describeOperations : true; this._useMongoose = !!options.useMongoose; } /** * @inheritDoc */ Mongo.prototype.setupOnce = function (_, getCurrentHub) { var moduleName = this._useMongoose ? 'mongoose' : 'mongodb'; var pkg = Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["loadModule"])(moduleName); if (!pkg) { Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isDebugBuild"])() && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__["logger"].error("Mongo Integration was unable to require `" + moduleName + "` package."); return; } this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub); }; /** * Patches original collection methods */ Mongo.prototype._instrumentOperations = function (collection, operations, getCurrentHub) { var _this = this; operations.forEach(function (operation) { return _this._patchOperation(collection, operation, getCurrentHub); }); }; /** * Patches original collection to utilize our tracing functionality */ Mongo.prototype._patchOperation = function (collection, operation, getCurrentHub) { if (!(operation in collection.prototype)) return; var getSpanContext = this._getSpanContextFromOperationArguments.bind(this); Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["fill"])(collection.prototype, operation, function (orig) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _a, _b, _c, _d; var lastArg = args[args.length - 1]; var scope = getCurrentHub().getScope(); var parentSpan = (_a = scope) === null || _a === void 0 ? void 0 : _a.getSpan(); // Check if the operation was passed a callback. (mapReduce requires a different check, as // its (non-callback) arguments can also be functions.) if (typeof lastArg !== 'function' || operation === 'mapReduce' && args.length === 2) { var span_1 = (_b = parentSpan) === null || _b === void 0 ? void 0 : _b.startChild(getSpanContext(this, operation, args)); var maybePromise = orig.call.apply(orig, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([this], args)); if (Object(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__["isThenable"])(maybePromise)) { return maybePromise.then(function (res) { var _a; (_a = span_1) === null || _a === void 0 ? void 0 : _a.finish(); return res; }); } else { (_c = span_1) === null || _c === void 0 ? void 0 : _c.finish(); return maybePromise; } } var span = (_d = parentSpan) === null || _d === void 0 ? void 0 : _d.startChild(getSpanContext(this, operation, args.slice(0, -1))); return orig.call.apply(orig, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([this], args.slice(0, -1), [function (err, result) { var _a; (_a = span) === null || _a === void 0 ? void 0 : _a.finish(); lastArg(err, result); }])); }; }); }; /** * Form a SpanContext based on the user input to a given operation. */ Mongo.prototype._getSpanContextFromOperationArguments = function (collection, operation, args) { var data = { collectionName: collection.collectionName, dbName: collection.dbName, namespace: collection.namespace }; var spanContext = { op: 'db', description: operation, data: data }; // If the operation takes no arguments besides `options` and `callback`, or if argument // collection is disabled for this operation, just return early. var signature = OPERATION_SIGNATURES[operation]; var shouldDescribe = Array.isArray(this._describeOperations) ? this._describeOperations.includes(operation) : this._describeOperations; if (!signature || !shouldDescribe) { return spanContext; } try { // Special case for `mapReduce`, as the only one accepting functions as arguments. if (operation === 'mapReduce') { var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(args, 2), map = _a[0], reduce = _a[1]; data[signature[0]] = typeof map === 'string' ? map : map.name || ''; data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || ''; } else { for (var i = 0; i < signature.length; i++) { data[signature[i]] = JSON.stringify(args[i]); } } } catch (_oO) {// no-empty } return spanContext; }; /** * @inheritDoc */ Mongo.id = 'Mongo'; return Mongo; }(); //# sourceMappingURL=mongo.js.map /***/ }, /***/ "0Pi8": /*!******************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/endWith.js ***! \******************************************************************/ /*! exports provided: endWith */ /***/ function Pi8(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function () { return endWith; }); /* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../observable/concat */ "GyhO"); /* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ../observable/of */ "LRne"); function endWith() { for (var _len2 = arguments.length, array = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { array[_key2] = arguments[_key2]; } return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(source, Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__["of"]).apply(void 0, array)); }; } //# sourceMappingURL=endWith.js.map /***/ }, /***/ "0bfL": /*!******************************************************************!*\ !*** ./node_modules/@sentry/browser/esm/transports/new-fetch.js ***! \******************************************************************/ /*! exports provided: makeNewFetchTransport */ /***/ function bfL(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeNewFetchTransport", function () { return makeNewFetchTransport; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "SOwp"); /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @sentry/core */ "wBhU"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./utils */ "2TjN"); /** * Creates a Transport that uses the Fetch API to send events to Sentry. */ function makeNewFetchTransport(options, nativeFetch) { if (nativeFetch === void 0) { nativeFetch = Object(_utils__WEBPACK_IMPORTED_MODULE_2__["getNativeFetchImplementation"])(); } function makeRequest(request) { var requestOptions = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({ body: request.body, method: 'POST', referrerPolicy: 'origin' }, options.requestOptions); return nativeFetch(options.url, requestOptions).then(function (response) { return response.text().then(function (body) { return { body: body, headers: { 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'), 'retry-after': response.headers.get('Retry-After') }, reason: response.statusText, statusCode: response.status }; }); }); } return Object(_sentry_core__WEBPACK_IMPORTED_MODULE_1__["createTransport"])({ bufferSize: options.bufferSize }, makeRequest); } //# sourceMappingURL=new-fetch.js.map /***/ }, /***/ "128B": /*!*****************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/reduce.js ***! \*****************************************************************/ /*! exports provided: reduce */ /***/ function B(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function () { return reduce; }); /* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./scan */ "Kqap"); /* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./takeLast */ "BFxc"); /* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./defaultIfEmpty */ "xbPD"); /* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ../util/pipe */ "mCNh"); function reduce(accumulator, seed) { if (arguments.length >= 2) { return function reduceOperatorFunctionWithSeed(source) { return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(accumulator, seed), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1), Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__["defaultIfEmpty"])(seed))(source); }; } return function reduceOperatorFunction(source) { return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1))(source); }; } //# sourceMappingURL=reduce.js.map /***/ }, /***/ "1Bn7": /*!****************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/index.js ***! \****************************************************/ /*! exports provided: createAnimation, iosTransitionAnimation, mdTransitionAnimation, getTimeGivenProgression, createGesture, getPlatforms, initialize, isPlatform, componentOnReady, IonicSafeString, LIFECYCLE_DID_ENTER, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_WILL_UNLOAD, menuController, actionSheetController, alertController, loadingController, modalController, pickerController, popoverController, toastController, IonicSlides, IonicSwiper, getMode, setupConfig */ /***/ function Bn7(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IonicSlides", function () { return IonicSlides; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IonicSwiper", function () { return IonicSwiper; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMode", function () { return getMode; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupConfig", function () { return setupConfig; }); /* harmony import */ var _animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./animation-096c6391.js */ "meiF"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createAnimation", function () { return _animation_096c6391_js__WEBPACK_IMPORTED_MODULE_0__["c"]; }); /* harmony import */ var _ios_transition_12db6216_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./ios.transition-12db6216.js */ "4IIC"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iosTransitionAnimation", function () { return _ios_transition_12db6216_js__WEBPACK_IMPORTED_MODULE_1__["iosTransitionAnimation"]; }); /* harmony import */ var _md_transition_eecd3a67_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./md.transition-eecd3a67.js */ "06fX"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mdTransitionAnimation", function () { return _md_transition_eecd3a67_js__WEBPACK_IMPORTED_MODULE_2__["mdTransitionAnimation"]; }); /* harmony import */ var _cubic_bezier_eea9a7a9_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./cubic-bezier-eea9a7a9.js */ "bC4P"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTimeGivenProgression", function () { return _cubic_bezier_eea9a7a9_js__WEBPACK_IMPORTED_MODULE_3__["g"]; }); /* harmony import */ var _index_34cb2743_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./index-34cb2743.js */ "KF81"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createGesture", function () { return _index_34cb2743_js__WEBPACK_IMPORTED_MODULE_4__["createGesture"]; }); /* harmony import */ var _ionic_global_63a97a32_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./ionic-global-63a97a32.js */ "E/Mt"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getPlatforms", function () { return _ionic_global_63a97a32_js__WEBPACK_IMPORTED_MODULE_5__["g"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "initialize", function () { return _ionic_global_63a97a32_js__WEBPACK_IMPORTED_MODULE_5__["i"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isPlatform", function () { return _ionic_global_63a97a32_js__WEBPACK_IMPORTED_MODULE_5__["a"]; }); /* harmony import */ var _helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./helpers-dd7e4b7b.js */ "1vRN"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "componentOnReady", function () { return _helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["c"]; }); /* harmony import */ var _index_9e3fe806_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! ./index-9e3fe806.js */ "39oe"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "IonicSafeString", function () { return _index_9e3fe806_js__WEBPACK_IMPORTED_MODULE_7__["I"]; }); /* harmony import */ var _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( /*! ./index-931440b1.js */ "Js3/"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LIFECYCLE_DID_ENTER", function () { return _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__["a"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LIFECYCLE_DID_LEAVE", function () { return _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__["c"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LIFECYCLE_WILL_ENTER", function () { return _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__["L"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LIFECYCLE_WILL_LEAVE", function () { return _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__["b"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LIFECYCLE_WILL_UNLOAD", function () { return _index_931440b1_js__WEBPACK_IMPORTED_MODULE_8__["d"]; }); /* harmony import */ var _index_0d58a5bf_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( /*! ./index-0d58a5bf.js */ "r7QR"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "menuController", function () { return _index_0d58a5bf_js__WEBPACK_IMPORTED_MODULE_9__["m"]; }); /* harmony import */ var _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( /*! ./overlays-e9ccff30.js */ "SOSK"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "actionSheetController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["b"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "alertController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["a"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "loadingController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["l"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "modalController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["m"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pickerController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["p"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popoverController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["c"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toastController", function () { return _overlays_e9ccff30_js__WEBPACK_IMPORTED_MODULE_10__["t"]; }); /* harmony import */ var _gesture_controller_31cb6bb9_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( /*! ./gesture-controller-31cb6bb9.js */ "y08P"); /* harmony import */ var _index_7a8b7a1c_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( /*! ./index-7a8b7a1c.js */ "wEJo"); /* harmony import */ var _hardware_back_button_4a6b37fb_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( /*! ./hardware-back-button-4a6b37fb.js */ "B4Jq"); var setupConfig = function setupConfig(config) { var win = window; var Ionic = win.Ionic; if (Ionic && Ionic.config && Ionic.config.constructor.name !== 'Object') { return; } win.Ionic = win.Ionic || {}; win.Ionic.config = Object.assign(Object.assign({}, win.Ionic.config), config); return win.Ionic.config; }; var getMode = function getMode() { var win = window; var config = win && win.Ionic && win.Ionic.config; if (config) { if (config.mode) { return config.mode; } else { return config.get('mode'); } } return 'md'; }; /** * This is a plugin for Swiper that allows it to work * with Ionic Framework and the routing integrations. * Without this plugin, Swiper would be incapable of correctly * determining the dimensions of the slides component as * each view is initially hidden before transitioning in. */ var setupSwiperInIonic = function setupSwiperInIonic(swiper) { var watchForIonPageChanges = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (typeof window === 'undefined') { return; } var swiperEl = swiper.el; var ionPage = swiperEl.closest('.ion-page'); if (!ionPage) { if (watchForIonPageChanges) { /** * If no ion page found, it is possible * that we are in the overlay setup step * where the inner component has been * created but not attached to the DOM yet. * If so, wait for the .ion-page class to * appear on the root div and re-run setup. */ var rootNode = swiperEl.getRootNode(); if (rootNode.tagName === 'DIV') { var mo = new MutationObserver(function (m) { var mutation = m[0]; var wasEmpty = mutation.oldValue === null; var hasIonPage = rootNode.classList.contains('ion-page'); /** * Now that we have an .ion-page class * we can safely attempt setup again. */ if (wasEmpty && hasIonPage) { mo.disconnect(); /** * Set false here so we do not * get infinite loops */ setupSwiperInIonic(swiper, false); } }); mo.observe(rootNode, { attributeFilter: ['class'], attributeOldValue: true }); } } return; } /** * If using slides in a modal or * popover we need to wait for the * overlay to be shown as these components * are hidden when they are initially created. */ var modalOrPopover = swiperEl.closest('ion-modal, ion-popover'); if (modalOrPopover) { var eventName = modalOrPopover.tagName === 'ION-MODAL' ? 'ionModalWillPresent' : 'ionPopoverWillPresent'; var overlayCallback = function overlayCallback() { /** * We need an raf here so the update * is fired one tick after the overlay is shown. */ Object(_helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["r"])(function () { swiperEl.swiper.update(); Object(_helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["b"])(modalOrPopover, eventName, overlayCallback); }); }; Object(_helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["a"])(modalOrPopover, eventName, overlayCallback); } else { /** * If using slides in a page * we need to wait for the ion-page-invisible * class to be removed so Swiper can correctly * compute the dimensions of the slides. */ var _mo = new MutationObserver(function (m) { var _a; var mutation = m[0]; var wasPageHidden = (_a = mutation.oldValue) === null || _a === void 0 ? void 0 : _a.includes('ion-page-invisible'); var isPageHidden = ionPage.classList.contains('ion-page-invisible'); /** * Only update Swiper if the page was * hidden but is no longer hidden. */ if (!isPageHidden && isPageHidden !== wasPageHidden) { swiperEl.swiper.update(); } }); _mo.observe(ionPage, { attributeFilter: ['class'], attributeOldValue: true }); } /** * We also need to listen for the appload event * which is emitted by Stencil in the * event that Swiper is being used on the * view that is rendered initially. */ var onAppLoad = function onAppLoad() { swiperEl.swiper.update(); Object(_helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["b"])(window, 'appload', onAppLoad); }; Object(_helpers_dd7e4b7b_js__WEBPACK_IMPORTED_MODULE_6__["a"])(window, 'appload', onAppLoad); }; var IonicSwiper = { name: 'ionic', on: { afterInit: function afterInit(swiper) { console.warn('[Deprecation Warning]: The IonicSwiper module has been deprecated in favor of the IonSlides module. This change was made to better support the Swiper 7 release. The IonicSwiper module will be removed in Ionic 7.0. See https://ionicframework.com/docs/api/slides#migration for revised migration steps.'); setupSwiperInIonic(swiper); } } }; var IonicSlides = function IonicSlides(opts) { var swiper = opts.swiper, extendParams = opts.extendParams; var slidesParams = { effect: undefined, direction: 'horizontal', initialSlide: 0, loop: false, parallax: false, slidesPerView: 1, spaceBetween: 0, speed: 300, slidesPerColumn: 1, slidesPerColumnFill: 'column', slidesPerGroup: 1, centeredSlides: false, slidesOffsetBefore: 0, slidesOffsetAfter: 0, touchEventsTarget: 'container', autoplay: false, freeMode: false, freeModeMomentum: true, freeModeMomentumRatio: 1, freeModeMomentumBounce: true, freeModeMomentumBounceRatio: 1, freeModeMomentumVelocityRatio: 1, freeModeSticky: false, freeModeMinimumVelocity: 0.02, autoHeight: false, setWrapperSize: false, zoom: { maxRatio: 3, minRatio: 1, toggle: false }, touchRatio: 1, touchAngle: 45, simulateTouch: true, touchStartPreventDefault: false, shortSwipes: true, longSwipes: true, longSwipesRatio: 0.5, longSwipesMs: 300, followFinger: true, threshold: 0, touchMoveStopPropagation: true, touchReleaseOnEdges: false, iOSEdgeSwipeDetection: false, iOSEdgeSwipeThreshold: 20, resistance: true, resistanceRatio: 0.85, watchSlidesProgress: false, watchSlidesVisibility: false, preventClicks: true, preventClicksPropagation: true, slideToClickedSlide: false, loopAdditionalSlides: 0, noSwiping: true, runCallbacksOnInit: true, coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: true }, flipEffect: { slideShadows: true, limitRotation: true }, cubeEffect: { slideShadows: true, shadow: true, shadowOffset: 20, shadowScale: 0.94 }, fadeEffect: { crossFade: false }, a11y: { prevSlideMessage: 'Previous slide', nextSlideMessage: 'Next slide', firstSlideMessage: 'This is the first slide', lastSlideMessage: 'This is the last slide' } }; if (swiper.pagination) { slidesParams.pagination = { type: 'bullets', clickable: false, hideOnClick: false }; } if (swiper.scrollbar) { slidesParams.scrollbar = { hide: true }; } extendParams(slidesParams); }; /***/ }, /***/ "1G5W": /*!********************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js ***! \********************************************************************/ /*! exports provided: takeUntil */ /***/ function G5W(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function () { return takeUntil; }); /* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../innerSubscribe */ "zx2A"); function takeUntil(notifier) { return function (source) { return source.lift(new TakeUntilOperator(notifier)); }; } var TakeUntilOperator = /*#__PURE__*/function () { function TakeUntilOperator(notifier) { _classCallCheck(this, TakeUntilOperator); this.notifier = notifier; } _createClass2(TakeUntilOperator, [{ key: "call", value: function call(subscriber, source) { var takeUntilSubscriber = new TakeUntilSubscriber(subscriber); var notifierSubscription = Object(_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["innerSubscribe"])(this.notifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["SimpleInnerSubscriber"](takeUntilSubscriber)); if (notifierSubscription && !takeUntilSubscriber.seenValue) { takeUntilSubscriber.add(notifierSubscription); return source.subscribe(takeUntilSubscriber); } return takeUntilSubscriber; } }]); return TakeUntilOperator; }(); var TakeUntilSubscriber = /*#__PURE__*/function (_innerSubscribe__WEBP2) { _inherits(TakeUntilSubscriber, _innerSubscribe__WEBP2); var _super5 = _createSuper(TakeUntilSubscriber); function TakeUntilSubscriber(destination) { var _this5; _classCallCheck(this, TakeUntilSubscriber); _this5 = _super5.call(this, destination); _this5.seenValue = false; return _this5; } _createClass2(TakeUntilSubscriber, [{ key: "notifyNext", value: function notifyNext() { this.seenValue = true; this.complete(); } }, { key: "notifyComplete", value: function notifyComplete() {} }]); return TakeUntilSubscriber; }(_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__["SimpleOuterSubscriber"]); //# sourceMappingURL=takeUntil.js.map /***/ }, /***/ "1Wj6": /*!****************************************************!*\ !*** ./node_modules/@sentry/types/esm/severity.js ***! \****************************************************/ /*! exports provided: Severity, SeverityLevels */ /***/ function Wj6(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Severity", function () { return Severity; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SeverityLevels", function () { return SeverityLevels; }); /** * TODO(v7): Remove this enum and replace with SeverityLevel */ var Severity; (function (Severity) { /** JSDoc */ Severity["Fatal"] = "fatal"; /** JSDoc */ Severity["Error"] = "error"; /** JSDoc */ Severity["Warning"] = "warning"; /** JSDoc */ Severity["Log"] = "log"; /** JSDoc */ Severity["Info"] = "info"; /** JSDoc */ Severity["Debug"] = "debug"; /** JSDoc */ Severity["Critical"] = "critical"; })(Severity || (Severity = {})); // TODO: in v7, these can disappear, because they now also exist in `@sentry/utils`. (Having them there rather than here // is nice because then it enforces the idea that only types are exported from `@sentry/types`.) var SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical']; //# sourceMappingURL=severity.js.map /***/ }, /***/ "1Ykd": /*!*********************************************************************!*\ !*** ./node_modules/rxjs/_esm2015/internal/operators/sampleTime.js ***! \*********************************************************************/ /*! exports provided: sampleTime */ /***/ function Ykd(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function () { return sampleTime; }); /* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ../Subscriber */ "7o/Q"); /* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ../scheduler/async */ "D0XW"); function sampleTime(period) { var scheduler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); }; } var SampleTimeOperator = /*#__PURE__*/function () { function SampleTimeOperator(period, scheduler) { _classCallCheck(this, SampleTimeOperator); this.period = period; this.scheduler = scheduler; } _createClass2(SampleTimeOperator, [{ key: "call", value: function call(subscriber, source) { return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler)); } }]); return SampleTimeOperator; }(); var SampleTimeSubscriber = /*#__PURE__*/function (_Subscriber__WEBPACK_3) { _inherits(SampleTimeSubscriber, _Subscriber__WEBPACK_3); var _super6 = _createSuper(SampleTimeSubscriber); function SampleTimeSubscriber(destination, period, scheduler) { var _this6; _classCallCheck(this, SampleTimeSubscriber); _this6 = _super6.call(this, destination); _this6.period = period; _this6.scheduler = scheduler; _this6.hasValue = false; _this6.add(scheduler.schedule(dispatchNotification, period, { subscriber: _assertThisInitialized(_this6), period: period })); return _this6; } _createClass2(SampleTimeSubscriber, [{ key: "_next", value: function _next(value) { this.lastValue = value; this.hasValue = true; } }, { key: "notifyNext", value: function notifyNext() { if (this.hasValue) { this.hasValue = false; this.destination.next(this.lastValue); } } }]); return SampleTimeSubscriber; }(_Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]); function dispatchNotification(state) { var subscriber = state.subscriber, period = state.period; subscriber.notifyNext(); this.schedule(state, period); } //# sourceMappingURL=sampleTime.js.map /***/ }, /***/ "1uSB": /*!*************************************************************!*\ !*** ./node_modules/@angular/compiler/fesm2015/compiler.js ***! \*************************************************************/ /*! exports provided: AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, AotCompiler, AotSummaryResolver, ArrayType, AssertNotNull, AstMemoryEfficientTransformer, AstPath, AstTransformer, AttrAst, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BoundDirectivePropertyAst, BoundElementProperty, BoundElementPropertyAst, BoundEventAst, BoundTextAst, BuiltinMethod, BuiltinType, BuiltinTypeName, BuiltinVar, CONTENT_ATTR, CUSTOM_ELEMENTS_SCHEMA, CastExpr, Chain, ClassField, ClassMethod, ClassStmt, CommaExpr, Comment, CompileDirectiveMetadata, CompileMetadataResolver, CompileNgModuleMetadata, CompilePipeMetadata, CompileReflector, CompileShallowModuleMetadata, CompileStylesheetMetadata, CompileSummaryKind, CompileTemplateMetadata, CompiledStylesheet, CompilerConfig, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, DirectiveAst, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, EOF, ERROR_COMPONENT_TYPE, Element, ElementAst, ElementSchemaRegistry, EmbeddedTemplateAst, EmitterVisitorContext, EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, Extractor, FunctionCall, FunctionExpr, GeneratedFile, HOST_ATTR, HtmlParser, HtmlTagDefinition, I18NHtmlParser, Identifiers, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation, InterpolationConfig, InvokeFunctionExpr, InvokeMethodExpr, IvyParser, JSDocComment, JitCompiler, JitEvaluator, JitSummaryResolver, KeyedRead, KeyedWrite, LeadingComment, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, MethodCall, NAMED_ENTITIES, NGSP_UNICODE, NONE_TYPE, NO_ERRORS_SCHEMA, NgContentAst, NgModuleCompiler, NgModuleResolver, NodeWithI18n, NonNullAssert, NotExpr, NullTemplateVisitor, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, ParserError, PipeResolver, PrefixNot, PropertyRead, PropertyWrite, ProviderAst, ProviderAstType, ProviderMeta, Quote, R3BoundTarget, R3FactoryTarget, R3Identifiers, R3ResolvedDependencyType, R3TargetBinder, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveTemplateAstVisitor, RecursiveVisitor, ReferenceAst, ResolvedStaticSymbol, ResourceLoader, ReturnStatement, STRING_TYPE, SafeMethodCall, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, Serializer, SplitInterpolation, Statement, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, StmtModifier, StyleCompiler, StylesCompileDependency, SummaryResolver, TagContentType, TemplateBindingParseResult, TemplateParseError, TemplateParseResult, TemplateParser, Text, TextAst, ThisReceiver, ThrowStmt, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstBoundText, TmplAstContent, TmplAstElement, TmplAstIcu, TmplAstRecursiveVisitor, TmplAstReference, TmplAstTemplate, TmplAstText, TmplAstTextAttribute, TmplAstVariable, Token, TokenType, TransitiveCompileNgModuleMetadata, TreeError, TryCatchStmt, Type, TypeScriptEmitter, TypeofExpr, Unary, UnaryOperator, UnaryOperatorExpr, UrlResolver, VERSION, VariableAst, VariableBinding, Version, ViewCompiler, WrappedNodeExpr, WriteKeyExpr, WritePropExpr, WriteVarExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, _ParseAST, analyzeAndValidateNgModules, analyzeFile, analyzeFileForInjectables, analyzeNgModules, collectExternalReferences, compileComponentFromMetadata, compileDirectiveFromMetadata, compileFactoryFunction, compileInjectable, compileInjector, compileNgModule, compilePipeFromMetadata, componentFactoryName, computeMsgId, core, createAotCompiler, createAotUrlResolver, createElementCssSelector, createLoweredSymbol, createOfflineCompileUrlResolver, createUrlResolverWithoutPackagePrefix, debugOutputAstAsTypeScript, findNode, flatten, formattedError, getHtmlTagDefinition, getNsPrefix, getParseErrors, getUrlScheme, hostViewClassName, identifierModuleUrl, identifierName, isEmptyExpression, isFormattedError, isIdentifier, isLoweredSymbol, isNgContainer, isNgContent, isNgTemplate, isQuote, isSyntaxError, jsDocComment, leadingComment, literalMap, makeBindingParser, mergeAnalyzedFiles, mergeNsAndName, ngModuleJitUrl, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, removeSummaryDuplicates, rendererTypeName, sanitizeIdentifier, sharedStylesheetJitUrl, splitClasses, splitNsName, syntaxError, templateJitUrl, templateSourceUrl, templateVisitAll, toTypeScript, tokenName, tokenReference, typeSourceSpan, unescapeIdentifier, unwrapResolvedMetadata, verifyHostBindings, viewClassName, visitAll */ /***/ function uSB(module, __webpack_exports__, __webpack_require__) { "use strict"; var _BoundPropertyMapping; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AST", function () { return AST; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ASTWithName", function () { return ASTWithName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ASTWithSource", function () { return ASTWithSource; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbsoluteSourceSpan", function () { return AbsoluteSourceSpan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AotCompiler", function () { return AotCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AotSummaryResolver", function () { return AotSummaryResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArrayType", function () { return ArrayType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AssertNotNull", function () { return AssertNotNull; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AstMemoryEfficientTransformer", function () { return AstMemoryEfficientTransformer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AstPath", function () { return AstPath; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AstTransformer", function () { return AstTransformer$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AttrAst", function () { return AttrAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Attribute", function () { return Attribute; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Binary", function () { return Binary; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BinaryOperator", function () { return BinaryOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BinaryOperatorExpr", function () { return BinaryOperatorExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BindingPipe", function () { return BindingPipe; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundDirectivePropertyAst", function () { return BoundDirectivePropertyAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundElementProperty", function () { return BoundElementProperty; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundElementPropertyAst", function () { return BoundElementPropertyAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundEventAst", function () { return BoundEventAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BoundTextAst", function () { return BoundTextAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuiltinMethod", function () { return BuiltinMethod; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuiltinType", function () { return BuiltinType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuiltinTypeName", function () { return BuiltinTypeName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BuiltinVar", function () { return BuiltinVar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CONTENT_ATTR", function () { return CONTENT_ATTR; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CUSTOM_ELEMENTS_SCHEMA", function () { return CUSTOM_ELEMENTS_SCHEMA; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CastExpr", function () { return CastExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Chain", function () { return Chain; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClassField", function () { return ClassField; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClassMethod", function () { return ClassMethod; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClassStmt", function () { return ClassStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CommaExpr", function () { return CommaExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Comment", function () { return Comment; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileDirectiveMetadata", function () { return CompileDirectiveMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileMetadataResolver", function () { return CompileMetadataResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileNgModuleMetadata", function () { return CompileNgModuleMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompilePipeMetadata", function () { return CompilePipeMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileReflector", function () { return CompileReflector; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileShallowModuleMetadata", function () { return CompileShallowModuleMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileStylesheetMetadata", function () { return CompileStylesheetMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileSummaryKind", function () { return CompileSummaryKind; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompileTemplateMetadata", function () { return CompileTemplateMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompiledStylesheet", function () { return CompiledStylesheet; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompilerConfig", function () { return CompilerConfig; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Conditional", function () { return Conditional; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConditionalExpr", function () { return ConditionalExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConstantPool", function () { return ConstantPool; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CssSelector", function () { return CssSelector; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_INTERPOLATION_CONFIG", function () { return DEFAULT_INTERPOLATION_CONFIG; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DYNAMIC_TYPE", function () { return DYNAMIC_TYPE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeclareFunctionStmt", function () { return DeclareFunctionStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeclareVarStmt", function () { return DeclareVarStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectiveAst", function () { return DirectiveAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectiveNormalizer", function () { return DirectiveNormalizer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DirectiveResolver", function () { return DirectiveResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DomElementSchemaRegistry", function () { return DomElementSchemaRegistry; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EOF", function () { return EOF; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ERROR_COMPONENT_TYPE", function () { return ERROR_COMPONENT_TYPE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Element", function () { return Element$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ElementAst", function () { return ElementAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ElementSchemaRegistry", function () { return ElementSchemaRegistry; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmbeddedTemplateAst", function () { return EmbeddedTemplateAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmitterVisitorContext", function () { return EmitterVisitorContext; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyExpr", function () { return EmptyExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Expansion", function () { return Expansion; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpansionCase", function () { return ExpansionCase; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Expression", function () { return Expression; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpressionBinding", function () { return ExpressionBinding; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpressionStatement", function () { return ExpressionStatement; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpressionType", function () { return ExpressionType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExternalExpr", function () { return ExternalExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExternalReference", function () { return ExternalReference; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Extractor", function () { return Extractor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FunctionCall", function () { return FunctionCall; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FunctionExpr", function () { return FunctionExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GeneratedFile", function () { return GeneratedFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HOST_ATTR", function () { return HOST_ATTR; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HtmlParser", function () { return HtmlParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HtmlTagDefinition", function () { return HtmlTagDefinition; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "I18NHtmlParser", function () { return I18NHtmlParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Identifiers", function () { return Identifiers; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IfStmt", function () { return IfStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImplicitReceiver", function () { return ImplicitReceiver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InstantiateExpr", function () { return InstantiateExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interpolation", function () { return Interpolation; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InterpolationConfig", function () { return InterpolationConfig; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvokeFunctionExpr", function () { return InvokeFunctionExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InvokeMethodExpr", function () { return InvokeMethodExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IvyParser", function () { return IvyParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JSDocComment", function () { return JSDocComment; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JitCompiler", function () { return JitCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JitEvaluator", function () { return JitEvaluator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JitSummaryResolver", function () { return JitSummaryResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyedRead", function () { return KeyedRead; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyedWrite", function () { return KeyedWrite; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LeadingComment", function () { return LeadingComment; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Lexer", function () { return Lexer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralArray", function () { return LiteralArray; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralArrayExpr", function () { return LiteralArrayExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralExpr", function () { return LiteralExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralMap", function () { return LiteralMap; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralMapExpr", function () { return LiteralMapExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiteralPrimitive", function () { return LiteralPrimitive; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LocalizedString", function () { return LocalizedString; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapType", function () { return MapType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageBundle", function () { return MessageBundle; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MethodCall", function () { return MethodCall; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NAMED_ENTITIES", function () { return NAMED_ENTITIES; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NGSP_UNICODE", function () { return NGSP_UNICODE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NONE_TYPE", function () { return NONE_TYPE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NO_ERRORS_SCHEMA", function () { return NO_ERRORS_SCHEMA; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NgContentAst", function () { return NgContentAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NgModuleCompiler", function () { return NgModuleCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NgModuleResolver", function () { return NgModuleResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NodeWithI18n", function () { return NodeWithI18n; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NonNullAssert", function () { return NonNullAssert; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotExpr", function () { return NotExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NullTemplateVisitor", function () { return NullTemplateVisitor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseError", function () { return ParseError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseErrorLevel", function () { return ParseErrorLevel; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseLocation", function () { return ParseLocation; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseSourceFile", function () { return ParseSourceFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseSourceSpan", function () { return ParseSourceSpan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseSpan", function () { return ParseSpan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParseTreeResult", function () { return ParseTreeResult; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParsedEvent", function () { return ParsedEvent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParsedProperty", function () { return ParsedProperty; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParsedPropertyType", function () { return ParsedPropertyType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParsedVariable", function () { return ParsedVariable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Parser", function () { return Parser$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParserError", function () { return ParserError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PipeResolver", function () { return PipeResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrefixNot", function () { return PrefixNot; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropertyRead", function () { return PropertyRead; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropertyWrite", function () { return PropertyWrite; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProviderAst", function () { return ProviderAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProviderAstType", function () { return ProviderAstType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProviderMeta", function () { return ProviderMeta; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Quote", function () { return Quote; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R3BoundTarget", function () { return R3BoundTarget; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R3FactoryTarget", function () { return R3FactoryTarget; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R3Identifiers", function () { return Identifiers$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R3ResolvedDependencyType", function () { return R3ResolvedDependencyType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R3TargetBinder", function () { return R3TargetBinder; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReadKeyExpr", function () { return ReadKeyExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReadPropExpr", function () { return ReadPropExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReadVarExpr", function () { return ReadVarExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecursiveAstVisitor", function () { return RecursiveAstVisitor$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecursiveTemplateAstVisitor", function () { return RecursiveTemplateAstVisitor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecursiveVisitor", function () { return RecursiveVisitor$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReferenceAst", function () { return ReferenceAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResolvedStaticSymbol", function () { return ResolvedStaticSymbol; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResourceLoader", function () { return ResourceLoader; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReturnStatement", function () { return ReturnStatement; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "STRING_TYPE", function () { return STRING_TYPE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeMethodCall", function () { return SafeMethodCall; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafePropertyRead", function () { return SafePropertyRead; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectorContext", function () { return SelectorContext; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectorListContext", function () { return SelectorListContext; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectorMatcher", function () { return SelectorMatcher; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Serializer", function () { return Serializer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SplitInterpolation", function () { return SplitInterpolation; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Statement", function () { return Statement; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaticReflector", function () { return StaticReflector; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaticSymbol", function () { return StaticSymbol; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaticSymbolCache", function () { return StaticSymbolCache; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StaticSymbolResolver", function () { return StaticSymbolResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StmtModifier", function () { return StmtModifier; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleCompiler", function () { return StyleCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StylesCompileDependency", function () { return StylesCompileDependency; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SummaryResolver", function () { return SummaryResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TagContentType", function () { return TagContentType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateBindingParseResult", function () { return TemplateBindingParseResult; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateParseError", function () { return TemplateParseError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateParseResult", function () { return TemplateParseResult; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateParser", function () { return TemplateParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Text", function () { return Text$3; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextAst", function () { return TextAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThisReceiver", function () { return ThisReceiver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThrowStmt", function () { return ThrowStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstBoundAttribute", function () { return BoundAttribute; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstBoundEvent", function () { return BoundEvent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstBoundText", function () { return BoundText; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstContent", function () { return Content; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstElement", function () { return Element; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstIcu", function () { return Icu; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstRecursiveVisitor", function () { return RecursiveVisitor; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstReference", function () { return Reference; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstTemplate", function () { return Template; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstText", function () { return Text; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstTextAttribute", function () { return TextAttribute; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TmplAstVariable", function () { return Variable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Token", function () { return Token$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TokenType", function () { return TokenType$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransitiveCompileNgModuleMetadata", function () { return TransitiveCompileNgModuleMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TreeError", function () { return TreeError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TryCatchStmt", function () { return TryCatchStmt; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Type", function () { return Type$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TypeScriptEmitter", function () { return TypeScriptEmitter; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TypeofExpr", function () { return TypeofExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Unary", function () { return Unary; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnaryOperator", function () { return UnaryOperator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnaryOperatorExpr", function () { return UnaryOperatorExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UrlResolver", function () { return UrlResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function () { return VERSION$1; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VariableAst", function () { return VariableAst; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VariableBinding", function () { return VariableBinding; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Version", function () { return Version; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ViewCompiler", function () { return ViewCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WrappedNodeExpr", function () { return WrappedNodeExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WriteKeyExpr", function () { return WriteKeyExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WritePropExpr", function () { return WritePropExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WriteVarExpr", function () { return WriteVarExpr; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Xliff", function () { return Xliff; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Xliff2", function () { return Xliff2; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Xmb", function () { return Xmb; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlParser", function () { return XmlParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Xtb", function () { return Xtb; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_ParseAST", function () { return _ParseAST; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "analyzeAndValidateNgModules", function () { return analyzeAndValidateNgModules; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "analyzeFile", function () { return analyzeFile; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "analyzeFileForInjectables", function () { return analyzeFileForInjectables; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "analyzeNgModules", function () { return analyzeNgModules; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "collectExternalReferences", function () { return collectExternalReferences; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileComponentFromMetadata", function () { return compileComponentFromMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileDirectiveFromMetadata", function () { return compileDirectiveFromMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileFactoryFunction", function () { return compileFactoryFunction; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileInjectable", function () { return _compileInjectable; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileInjector", function () { return _compileInjector; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compileNgModule", function () { return _compileNgModule; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compilePipeFromMetadata", function () { return compilePipeFromMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "componentFactoryName", function () { return componentFactoryName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "computeMsgId", function () { return computeMsgId; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "core", function () { return core; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAotCompiler", function () { return createAotCompiler; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAotUrlResolver", function () { return createAotUrlResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createElementCssSelector", function () { return createElementCssSelector; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createLoweredSymbol", function () { return createLoweredSymbol; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createOfflineCompileUrlResolver", function () { return createOfflineCompileUrlResolver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createUrlResolverWithoutPackagePrefix", function () { return createUrlResolverWithoutPackagePrefix; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debugOutputAstAsTypeScript", function () { return debugOutputAstAsTypeScript; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findNode", function () { return findNode; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function () { return flatten; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formattedError", function () { return formattedError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHtmlTagDefinition", function () { return getHtmlTagDefinition; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNsPrefix", function () { return getNsPrefix; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getParseErrors", function () { return getParseErrors; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getUrlScheme", function () { return getUrlScheme; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hostViewClassName", function () { return hostViewClassName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identifierModuleUrl", function () { return identifierModuleUrl; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identifierName", function () { return identifierName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyExpression", function () { return isEmptyExpression; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFormattedError", function () { return isFormattedError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIdentifier", function () { return isIdentifier; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLoweredSymbol", function () { return isLoweredSymbol; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNgContainer", function () { return isNgContainer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNgContent", function () { return isNgContent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNgTemplate", function () { return isNgTemplate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isQuote", function () { return isQuote; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSyntaxError", function () { return isSyntaxError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsDocComment", function () { return jsDocComment; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "leadingComment", function () { return leadingComment; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "literalMap", function () { return literalMap; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeBindingParser", function () { return makeBindingParser; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAnalyzedFiles", function () { return mergeAnalyzedFiles; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeNsAndName", function () { return mergeNsAndName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ngModuleJitUrl", function () { return ngModuleJitUrl; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseHostBindings", function () { return parseHostBindings; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseTemplate", function () { return parseTemplate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "preserveWhitespacesDefault", function () { return preserveWhitespacesDefault; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishFacade", function () { return publishFacade; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r3JitTypeSourceSpan", function () { return r3JitTypeSourceSpan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeSummaryDuplicates", function () { return removeSummaryDuplicates; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rendererTypeName", function () { return rendererTypeName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitizeIdentifier", function () { return sanitizeIdentifier; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sharedStylesheetJitUrl", function () { return sharedStylesheetJitUrl; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "splitClasses", function () { return splitClasses; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "splitNsName", function () { return splitNsName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "syntaxError", function () { return syntaxError; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "templateJitUrl", function () { return templateJitUrl; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "templateSourceUrl", function () { return templateSourceUrl; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "templateVisitAll", function () { return templateVisitAll; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toTypeScript", function () { return toTypeScript; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tokenName", function () { return tokenName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tokenReference", function () { return tokenReference; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "typeSourceSpan", function () { return typeSourceSpan; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unescapeIdentifier", function () { return unescapeIdentifier; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unwrapResolvedMetadata", function () { return unwrapResolvedMetadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "verifyHostBindings", function () { return verifyHostBindings; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "viewClassName", function () { return viewClassName; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "visitAll", function () { return visitAll$1; }); /** * @license Angular v11.0.9 * (c) 2010-2020 Google LLC. https://angular.io/ * License: MIT */ /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var TagContentType; (function (TagContentType) { TagContentType[TagContentType["RAW_TEXT"] = 0] = "RAW_TEXT"; TagContentType[TagContentType["ESCAPABLE_RAW_TEXT"] = 1] = "ESCAPABLE_RAW_TEXT"; TagContentType[TagContentType["PARSABLE_DATA"] = 2] = "PARSABLE_DATA"; })(TagContentType || (TagContentType = {})); function splitNsName(elementName) { if (elementName[0] != ':') { return [null, elementName]; } var colonIndex = elementName.indexOf(':', 1); if (colonIndex == -1) { throw new Error("Unsupported format \"".concat(elementName, "\" expecting \":namespace:name\"")); } return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)]; } // `` tags work the same regardless the namespace function isNgContainer(tagName) { return splitNsName(tagName)[1] === 'ng-container'; } // `` tags work the same regardless the namespace function isNgContent(tagName) { return splitNsName(tagName)[1] === 'ng-content'; } // `` tags work the same regardless the namespace function isNgTemplate(tagName) { return splitNsName(tagName)[1] === 'ng-template'; } function getNsPrefix(fullName) { return fullName === null ? null : splitNsName(fullName)[0]; } function mergeNsAndName(prefix, localName) { return prefix ? ":".concat(prefix, ":").concat(localName) : localName; } // see https://www.w3.org/TR/html51/syntax.html#named-character-references // see https://html.spec.whatwg.org/multipage/entities.json // This list is not exhaustive to keep the compiler footprint low. // The `{` / `ƫ` syntax should be used when the named character reference does not // exist. var NAMED_ENTITIES = { 'Aacute': "\xC1", 'aacute': "\xE1", 'Acirc': "\xC2", 'acirc': "\xE2", 'acute': "\xB4", 'AElig': "\xC6", 'aelig': "\xE6", 'Agrave': "\xC0", 'agrave': "\xE0", 'alefsym': "\u2135", 'Alpha': "\u0391", 'alpha': "\u03B1", 'amp': '&', 'and': "\u2227", 'ang': "\u2220", 'apos': "'", 'Aring': "\xC5", 'aring': "\xE5", 'asymp': "\u2248", 'Atilde': "\xC3", 'atilde': "\xE3", 'Auml': "\xC4", 'auml': "\xE4", 'bdquo': "\u201E", 'Beta': "\u0392", 'beta': "\u03B2", 'brvbar': "\xA6", 'bull': "\u2022", 'cap': "\u2229", 'Ccedil': "\xC7", 'ccedil': "\xE7", 'cedil': "\xB8", 'cent': "\xA2", 'Chi': "\u03A7", 'chi': "\u03C7", 'circ': "\u02C6", 'clubs': "\u2663", 'cong': "\u2245", 'copy': "\xA9", 'crarr': "\u21B5", 'cup': "\u222A", 'curren': "\xA4", 'dagger': "\u2020", 'Dagger': "\u2021", 'darr': "\u2193", 'dArr': "\u21D3", 'deg': "\xB0", 'Delta': "\u0394", 'delta': "\u03B4", 'diams': "\u2666", 'divide': "\xF7", 'Eacute': "\xC9", 'eacute': "\xE9", 'Ecirc': "\xCA", 'ecirc': "\xEA", 'Egrave': "\xC8", 'egrave': "\xE8", 'empty': "\u2205", 'emsp': "\u2003", 'ensp': "\u2002", 'Epsilon': "\u0395", 'epsilon': "\u03B5", 'equiv': "\u2261", 'Eta': "\u0397", 'eta': "\u03B7", 'ETH': "\xD0", 'eth': "\xF0", 'Euml': "\xCB", 'euml': "\xEB", 'euro': "\u20AC", 'exist': "\u2203", 'fnof': "\u0192", 'forall': "\u2200", 'frac12': "\xBD", 'frac14': "\xBC", 'frac34': "\xBE", 'frasl': "\u2044", 'Gamma': "\u0393", 'gamma': "\u03B3", 'ge': "\u2265", 'gt': '>', 'harr': "\u2194", 'hArr': "\u21D4", 'hearts': "\u2665", 'hellip': "\u2026", 'Iacute': "\xCD", 'iacute': "\xED", 'Icirc': "\xCE", 'icirc': "\xEE", 'iexcl': "\xA1", 'Igrave': "\xCC", 'igrave': "\xEC", 'image': "\u2111", 'infin': "\u221E", 'int': "\u222B", 'Iota': "\u0399", 'iota': "\u03B9", 'iquest': "\xBF", 'isin': "\u2208", 'Iuml': "\xCF", 'iuml': "\xEF", 'Kappa': "\u039A", 'kappa': "\u03BA", 'Lambda': "\u039B", 'lambda': "\u03BB", 'lang': "\u27E8", 'laquo': "\xAB", 'larr': "\u2190", 'lArr': "\u21D0", 'lceil': "\u2308", 'ldquo': "\u201C", 'le': "\u2264", 'lfloor': "\u230A", 'lowast': "\u2217", 'loz': "\u25CA", 'lrm': "\u200E", 'lsaquo': "\u2039", 'lsquo': "\u2018", 'lt': '<', 'macr': "\xAF", 'mdash': "\u2014", 'micro': "\xB5", 'middot': "\xB7", 'minus': "\u2212", 'Mu': "\u039C", 'mu': "\u03BC", 'nabla': "\u2207", 'nbsp': "\xA0", 'ndash': "\u2013", 'ne': "\u2260", 'ni': "\u220B", 'not': "\xAC", 'notin': "\u2209", 'nsub': "\u2284", 'Ntilde': "\xD1", 'ntilde': "\xF1", 'Nu': "\u039D", 'nu': "\u03BD", 'Oacute': "\xD3", 'oacute': "\xF3", 'Ocirc': "\xD4", 'ocirc': "\xF4", 'OElig': "\u0152", 'oelig': "\u0153", 'Ograve': "\xD2", 'ograve': "\xF2", 'oline': "\u203E", 'Omega': "\u03A9", 'omega': "\u03C9", 'Omicron': "\u039F", 'omicron': "\u03BF", 'oplus': "\u2295", 'or': "\u2228", 'ordf': "\xAA", 'ordm': "\xBA", 'Oslash': "\xD8", 'oslash': "\xF8", 'Otilde': "\xD5", 'otilde': "\xF5", 'otimes': "\u2297", 'Ouml': "\xD6", 'ouml': "\xF6", 'para': "\xB6", 'permil': "\u2030", 'perp': "\u22A5", 'Phi': "\u03A6", 'phi': "\u03C6", 'Pi': "\u03A0", 'pi': "\u03C0", 'piv': "\u03D6", 'plusmn': "\xB1", 'pound': "\xA3", 'prime': "\u2032", 'Prime': "\u2033", 'prod': "\u220F", 'prop': "\u221D", 'Psi': "\u03A8", 'psi': "\u03C8", 'quot': "\"", 'radic': "\u221A", 'rang': "\u27E9", 'raquo': "\xBB", 'rarr': "\u2192", 'rArr': "\u21D2", 'rceil': "\u2309", 'rdquo': "\u201D", 'real': "\u211C", 'reg': "\xAE", 'rfloor': "\u230B", 'Rho': "\u03A1", 'rho': "\u03C1", 'rlm': "\u200F", 'rsaquo': "\u203A", 'rsquo': "\u2019", 'sbquo': "\u201A", 'Scaron': "\u0160", 'scaron': "\u0161", 'sdot': "\u22C5", 'sect': "\xA7", 'shy': "\xAD", 'Sigma': "\u03A3", 'sigma': "\u03C3", 'sigmaf': "\u03C2", 'sim': "\u223C", 'spades': "\u2660", 'sub': "\u2282", 'sube': "\u2286", 'sum': "\u2211", 'sup': "\u2283", 'sup1': "\xB9", 'sup2': "\xB2", 'sup3': "\xB3", 'supe': "\u2287", 'szlig': "\xDF", 'Tau': "\u03A4", 'tau': "\u03C4", 'there4': "\u2234", 'Theta': "\u0398", 'theta': "\u03B8", 'thetasym': "\u03D1", 'thinsp': "\u2009", 'THORN': "\xDE", 'thorn': "\xFE", 'tilde': "\u02DC", 'times': "\xD7", 'trade': "\u2122", 'Uacute': "\xDA", 'uacute': "\xFA", 'uarr': "\u2191", 'uArr': "\u21D1", 'Ucirc': "\xDB", 'ucirc': "\xFB", 'Ugrave': "\xD9", 'ugrave': "\xF9", 'uml': "\xA8", 'upsih': "\u03D2", 'Upsilon': "\u03A5", 'upsilon': "\u03C5", 'Uuml': "\xDC", 'uuml': "\xFC", 'weierp': "\u2118", 'Xi': "\u039E", 'xi': "\u03BE", 'Yacute': "\xDD", 'yacute': "\xFD", 'yen': "\xA5", 'yuml': "\xFF", 'Yuml': "\u0178", 'Zeta': "\u0396", 'zeta': "\u03B6", 'zwj': "\u200D", 'zwnj': "\u200C" }; // The &ngsp; pseudo-entity is denoting a space. see: // https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart var NGSP_UNICODE = "\uE500"; NAMED_ENTITIES['ngsp'] = NGSP_UNICODE; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var HtmlTagDefinition = /*#__PURE__*/function () { function HtmlTagDefinition() { var _this7 = this; var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, closedByChildren = _ref2.closedByChildren, implicitNamespacePrefix = _ref2.implicitNamespacePrefix, _ref2$contentType = _ref2.contentType, contentType = _ref2$contentType === void 0 ? TagContentType.PARSABLE_DATA : _ref2$contentType, _ref2$closedByParent = _ref2.closedByParent, closedByParent = _ref2$closedByParent === void 0 ? false : _ref2$closedByParent, _ref2$isVoid = _ref2.isVoid, isVoid = _ref2$isVoid === void 0 ? false : _ref2$isVoid, _ref2$ignoreFirstLf = _ref2.ignoreFirstLf, ignoreFirstLf = _ref2$ignoreFirstLf === void 0 ? false : _ref2$ignoreFirstLf, _ref2$preventNamespac = _ref2.preventNamespaceInheritance, preventNamespaceInheritance = _ref2$preventNamespac === void 0 ? false : _ref2$preventNamespac; _classCallCheck(this, HtmlTagDefinition); this.closedByChildren = {}; this.closedByParent = false; this.canSelfClose = false; if (closedByChildren && closedByChildren.length > 0) { closedByChildren.forEach(function (tagName) { return _this7.closedByChildren[tagName] = true; }); } this.isVoid = isVoid; this.closedByParent = closedByParent || isVoid; this.implicitNamespacePrefix = implicitNamespacePrefix || null; this.contentType = contentType; this.ignoreFirstLf = ignoreFirstLf; this.preventNamespaceInheritance = preventNamespaceInheritance; } _createClass2(HtmlTagDefinition, [{ key: "isClosedByChild", value: function isClosedByChild(name) { return this.isVoid || name.toLowerCase() in this.closedByChildren; } }, { key: "getContentType", value: function getContentType(prefix) { if (typeof this.contentType === 'object') { var overrideType = prefix == null ? undefined : this.contentType[prefix]; return overrideType !== null && overrideType !== void 0 ? overrideType : this.contentType["default"]; } return this.contentType; } }]); return HtmlTagDefinition; }(); var _DEFAULT_TAG_DEFINITION; // see https://www.w3.org/TR/html51/syntax.html#optional-tags // This implementation does not fully conform to the HTML5 spec. var TAG_DEFINITIONS; function getHtmlTagDefinition(tagName) { var _a, _b; if (!TAG_DEFINITIONS) { _DEFAULT_TAG_DEFINITION = new HtmlTagDefinition(); TAG_DEFINITIONS = { 'base': new HtmlTagDefinition({ isVoid: true }), 'meta': new HtmlTagDefinition({ isVoid: true }), 'area': new HtmlTagDefinition({ isVoid: true }), 'embed': new HtmlTagDefinition({ isVoid: true }), 'link': new HtmlTagDefinition({ isVoid: true }), 'img': new HtmlTagDefinition({ isVoid: true }), 'input': new HtmlTagDefinition({ isVoid: true }), 'param': new HtmlTagDefinition({ isVoid: true }), 'hr': new HtmlTagDefinition({ isVoid: true }), 'br': new HtmlTagDefinition({ isVoid: true }), 'source': new HtmlTagDefinition({ isVoid: true }), 'track': new HtmlTagDefinition({ isVoid: true }), 'wbr': new HtmlTagDefinition({ isVoid: true }), 'p': new HtmlTagDefinition({ closedByChildren: ['address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'], closedByParent: true }), 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }), 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }), 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }), 'tr': new HtmlTagDefinition({ closedByChildren: ['tr'], closedByParent: true }), 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }), 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }), 'col': new HtmlTagDefinition({ isVoid: true }), 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }), 'foreignObject': new HtmlTagDefinition({ // Usually the implicit namespace here would be redundant since it will be inherited from // the parent `svg`, but we have to do it for `foreignObject`, because the way the parser // works is that the parent node of an end tag is its own start tag which means that // the `preventNamespaceInheritance` on `foreignObject` would have it default to the // implicit namespace which is `html`, unless specified otherwise. implicitNamespacePrefix: 'svg', // We want to prevent children of foreignObject from inheriting its namespace, because // the point of the element is to allow nodes from other namespaces to be inserted. preventNamespaceInheritance: true }), 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }), 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }), 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }), 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }), 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }), 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }), 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }), 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }), 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }), 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }), 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }), 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }), 'style': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }), 'script': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }), 'title': new HtmlTagDefinition({ // The browser supports two separate `title` tags which have to use // a different content type: `HTMLTitleElement` and `SVGTitleElement` contentType: { "default": TagContentType.ESCAPABLE_RAW_TEXT, svg: TagContentType.PARSABLE_DATA } }), 'textarea': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }) }; } // We have to make both a case-sensitive and a case-insesitive lookup, because // HTML tag names are case insensitive, whereas some SVG tags are case sensitive. return (_b = (_a = TAG_DEFINITIONS[tagName]) !== null && _a !== void 0 ? _a : TAG_DEFINITIONS[tagName.toLowerCase()]) !== null && _b !== void 0 ? _b : _DEFAULT_TAG_DEFINITION; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var _SELECTOR_REGEXP = new RegExp('(\\:not\\()|' + // 1: ":not(" '(([\\.\\#]?)[-\\w]+)|' + // 2: "tag"; 3: "."/"#"; // "-" should appear first in the regexp below as FF31 parses "[.-\w]" as a range // 4: attribute; 5: attribute_string; 6: attribute_value '(?:\\[([-.\\w*]+)(?:=([\"\']?)([^\\]\"\']*)\\5)?\\])|' + // "[name]", "[name=value]", // "[name="value"]", // "[name='value']" '(\\))|' + // 7: ")" '(\\s*,\\s*)', // 8: "," 'g'); /** * A css selector contains an element name, * css classes and attribute/value pairs with the purpose * of selecting subsets out of them. */ var CssSelector = /*#__PURE__*/function () { function CssSelector() { _classCallCheck(this, CssSelector); this.element = null; this.classNames = []; /** * The selectors are encoded in pairs where: * - even locations are attribute names * - odd locations are attribute values. * * Example: * Selector: `[key1=value1][key2]` would parse to: * ``` * ['key1', 'value1', 'key2', ''] * ``` */ this.attrs = []; this.notSelectors = []; } _createClass2(CssSelector, [{ key: "isElementSelector", value: function isElementSelector() { return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 && this.notSelectors.length === 0; } }, { key: "hasElementSelector", value: function hasElementSelector() { return !!this.element; } }, { key: "setElement", value: function setElement() { var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; this.element = element; } /** Gets a template string for an element that matches the selector. */ }, { key: "getMatchingElementTemplate", value: function getMatchingElementTemplate() { var tagName = this.element || 'div'; var classAttr = this.classNames.length > 0 ? " class=\"".concat(this.classNames.join(' '), "\"") : ''; var attrs = ''; for (var i = 0; i < this.attrs.length; i += 2) { var attrName = this.attrs[i]; var attrValue = this.attrs[i + 1] !== '' ? "=\"".concat(this.attrs[i + 1], "\"") : ''; attrs += " ".concat(attrName).concat(attrValue); } return getHtmlTagDefinition(tagName).isVoid ? "<".concat(tagName).concat(classAttr).concat(attrs, "/>") : "<".concat(tagName).concat(classAttr).concat(attrs, ">"); } }, { key: "getAttrs", value: function getAttrs() { var result = []; if (this.classNames.length > 0) { result.push('class', this.classNames.join(' ')); } return result.concat(this.attrs); } }, { key: "addAttribute", value: function addAttribute(name) { var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; this.attrs.push(name, value && value.toLowerCase() || ''); } }, { key: "addClassName", value: function addClassName(name) { this.classNames.push(name.toLowerCase()); } }, { key: "toString", value: function toString() { var res = this.element || ''; if (this.classNames) { this.classNames.forEach(function (klass) { return res += ".".concat(klass); }); } if (this.attrs) { for (var i = 0; i < this.attrs.length; i += 2) { var name = this.attrs[i]; var value = this.attrs[i + 1]; res += "[".concat(name).concat(value ? '=' + value : '', "]"); } } this.notSelectors.forEach(function (notSelector) { return res += ":not(".concat(notSelector, ")"); }); return res; } }], [{ key: "parse", value: function parse(selector) { var results = []; var _addResult = function _addResult(res, cssSel) { if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 && cssSel.attrs.length == 0) { cssSel.element = '*'; } res.push(cssSel); }; var cssSelector = new CssSelector(); var match; var current = cssSelector; var inNot = false; _SELECTOR_REGEXP.lastIndex = 0; while (match = _SELECTOR_REGEXP.exec(selector)) { if (match[1 /* NOT */ ]) { if (inNot) { throw new Error('Nesting :not in a selector is not allowed'); } inNot = true; current = new CssSelector(); cssSelector.notSelectors.push(current); } var tag = match[2 /* TAG */ ]; if (tag) { var prefix = match[3 /* PREFIX */ ]; if (prefix === '#') { // #hash current.addAttribute('id', tag.substr(1)); } else if (prefix === '.') { // Class current.addClassName(tag.substr(1)); } else { // Element current.setElement(tag); } } var attribute = match[4 /* ATTRIBUTE */ ]; if (attribute) { current.addAttribute(attribute, match[6 /* ATTRIBUTE_VALUE */ ]); } if (match[7 /* NOT_END */ ]) { inNot = false; current = cssSelector; } if (match[8 /* SEPARATOR */ ]) { if (inNot) { throw new Error('Multiple selectors in :not are not supported'); } _addResult(results, cssSelector); cssSelector = current = new CssSelector(); } } _addResult(results, cssSelector); return results; } }]); return CssSelector; }(); /** * Reads a list of CssSelectors and allows to calculate which ones * are contained in a given CssSelector. */ var SelectorMatcher = /*#__PURE__*/function () { function SelectorMatcher() { _classCallCheck(this, SelectorMatcher); this._elementMap = new Map(); this._elementPartialMap = new Map(); this._classMap = new Map(); this._classPartialMap = new Map(); this._attrValueMap = new Map(); this._attrValuePartialMap = new Map(); this._listContexts = []; } _createClass2(SelectorMatcher, [{ key: "addSelectables", value: function addSelectables(cssSelectors, callbackCtxt) { var listContext = null; if (cssSelectors.length > 1) { listContext = new SelectorListContext(cssSelectors); this._listContexts.push(listContext); } for (var i = 0; i < cssSelectors.length; i++) { this._addSelectable(cssSelectors[i], callbackCtxt, listContext); } } /** * Add an object that can be found later on by calling `match`. * @param cssSelector A css selector * @param callbackCtxt An opaque object that will be given to the callback of the `match` function */ }, { key: "_addSelectable", value: function _addSelectable(cssSelector, callbackCtxt, listContext) { var matcher = this; var element = cssSelector.element; var classNames = cssSelector.classNames; var attrs = cssSelector.attrs; var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext); if (element) { var isTerminal = attrs.length === 0 && classNames.length === 0; if (isTerminal) { this._addTerminal(matcher._elementMap, element, selectable); } else { matcher = this._addPartial(matcher._elementPartialMap, element); } } if (classNames) { for (var i = 0; i < classNames.length; i++) { var _isTerminal = attrs.length === 0 && i === classNames.length - 1; var className = classNames[i]; if (_isTerminal) { this._addTerminal(matcher._classMap, className, selectable); } else { matcher = this._addPartial(matcher._classPartialMap, className); } } } if (attrs) { for (var _i2 = 0; _i2 < attrs.length; _i2 += 2) { var _isTerminal2 = _i2 === attrs.length - 2; var name = attrs[_i2]; var value = attrs[_i2 + 1]; if (_isTerminal2) { var terminalMap = matcher._attrValueMap; var terminalValuesMap = terminalMap.get(name); if (!terminalValuesMap) { terminalValuesMap = new Map(); terminalMap.set(name, terminalValuesMap); } this._addTerminal(terminalValuesMap, value, selectable); } else { var partialMap = matcher._attrValuePartialMap; var partialValuesMap = partialMap.get(name); if (!partialValuesMap) { partialValuesMap = new Map(); partialMap.set(name, partialValuesMap); } matcher = this._addPartial(partialValuesMap, value); } } } } }, { key: "_addTerminal", value: function _addTerminal(map, name, selectable) { var terminalList = map.get(name); if (!terminalList) { terminalList = []; map.set(name, terminalList); } terminalList.push(selectable); } }, { key: "_addPartial", value: function _addPartial(map, name) { var matcher = map.get(name); if (!matcher) { matcher = new SelectorMatcher(); map.set(name, matcher); } return matcher; } /** * Find the objects that have been added via `addSelectable` * whose css selector is contained in the given css selector. * @param cssSelector A css selector * @param matchedCallback This callback will be called with the object handed into `addSelectable` * @return boolean true if a match was found */ }, { key: "match", value: function match(cssSelector, matchedCallback) { var result = false; var element = cssSelector.element; var classNames = cssSelector.classNames; var attrs = cssSelector.attrs; for (var i = 0; i < this._listContexts.length; i++) { this._listContexts[i].alreadyMatched = false; } result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result; result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) || result; if (classNames) { for (var _i3 = 0; _i3 < classNames.length; _i3++) { var className = classNames[_i3]; result = this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result; result = this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) || result; } } if (attrs) { for (var _i4 = 0; _i4 < attrs.length; _i4 += 2) { var name = attrs[_i4]; var value = attrs[_i4 + 1]; var terminalValuesMap = this._attrValueMap.get(name); if (value) { result = this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result; } result = this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result; var partialValuesMap = this._attrValuePartialMap.get(name); if (value) { result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result; } result = this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result; } } return result; } /** @internal */ }, { key: "_matchTerminal", value: function _matchTerminal(map, name, cssSelector, matchedCallback) { if (!map || typeof name !== 'string') { return false; } var selectables = map.get(name) || []; var starSelectables = map.get('*'); if (starSelectables) { selectables = selectables.concat(starSelectables); } if (selectables.length === 0) { return false; } var selectable; var result = false; for (var i = 0; i < selectables.length; i++) { selectable = selectables[i]; result = selectable.finalize(cssSelector, matchedCallback) || result; } return result; } /** @internal */ }, { key: "_matchPartial", value: function _matchPartial(map, name, cssSelector, matchedCallback) { if (!map || typeof name !== 'string') { return false; } var nestedSelector = map.get(name); if (!nestedSelector) { return false; } // TODO(perf): get rid of recursion and measure again // TODO(perf): don't pass the whole selector into the recursion, // but only the not processed parts return nestedSelector.match(cssSelector, matchedCallback); } }], [{ key: "createNotMatcher", value: function createNotMatcher(notSelectors) { var notMatcher = new SelectorMatcher(); notMatcher.addSelectables(notSelectors, null); return notMatcher; } }]); return SelectorMatcher; }(); var SelectorListContext = /*#__PURE__*/_createClass2(function SelectorListContext(selectors) { _classCallCheck(this, SelectorListContext); this.selectors = selectors; this.alreadyMatched = false; }); // Store context to pass back selector and context when a selector is matched var SelectorContext = /*#__PURE__*/function () { function SelectorContext(selector, cbContext, listContext) { _classCallCheck(this, SelectorContext); this.selector = selector; this.cbContext = cbContext; this.listContext = listContext; this.notSelectors = selector.notSelectors; } _createClass2(SelectorContext, [{ key: "finalize", value: function finalize(cssSelector, callback) { var result = true; if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) { var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors); result = !notMatcher.match(cssSelector, null); } if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) { if (this.listContext) { this.listContext.alreadyMatched = true; } callback(this.selector, this.cbContext); } return result; } }]); return SelectorContext; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var createInject = makeMetadataFactory('Inject', function (token) { return { token: token }; }); var createInjectionToken = makeMetadataFactory('InjectionToken', function (desc) { return { _desc: desc, ɵprov: undefined }; }); var createAttribute = makeMetadataFactory('Attribute', function (attributeName) { return { attributeName: attributeName }; }); var createContentChildren = makeMetadataFactory('ContentChildren', function (selector) { var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Object.assign({ selector: selector, first: false, isViewQuery: false, descendants: false }, data); }); var createContentChild = makeMetadataFactory('ContentChild', function (selector) { var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Object.assign({ selector: selector, first: true, isViewQuery: false, descendants: true }, data); }); var createViewChildren = makeMetadataFactory('ViewChildren', function (selector) { var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Object.assign({ selector: selector, first: false, isViewQuery: true, descendants: true }, data); }); var createViewChild = makeMetadataFactory('ViewChild', function (selector, data) { return Object.assign({ selector: selector, first: true, isViewQuery: true, descendants: true }, data); }); var createDirective = makeMetadataFactory('Directive', function () { var dir = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return dir; }); var ViewEncapsulation; (function (ViewEncapsulation) { ViewEncapsulation[ViewEncapsulation["Emulated"] = 0] = "Emulated"; // Historically the 1 value was for `Native` encapsulation which has been removed as of v11. ViewEncapsulation[ViewEncapsulation["None"] = 2] = "None"; ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom"; })(ViewEncapsulation || (ViewEncapsulation = {})); var ChangeDetectionStrategy; (function (ChangeDetectionStrategy) { ChangeDetectionStrategy[ChangeDetectionStrategy["OnPush"] = 0] = "OnPush"; ChangeDetectionStrategy[ChangeDetectionStrategy["Default"] = 1] = "Default"; })(ChangeDetectionStrategy || (ChangeDetectionStrategy = {})); var createComponent = makeMetadataFactory('Component', function () { var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({ changeDetection: ChangeDetectionStrategy.Default }, c); }); var createPipe = makeMetadataFactory('Pipe', function (p) { return Object.assign({ pure: true }, p); }); var createInput = makeMetadataFactory('Input', function (bindingPropertyName) { return { bindingPropertyName: bindingPropertyName }; }); var createOutput = makeMetadataFactory('Output', function (bindingPropertyName) { return { bindingPropertyName: bindingPropertyName }; }); var createHostBinding = makeMetadataFactory('HostBinding', function (hostPropertyName) { return { hostPropertyName: hostPropertyName }; }); var createHostListener = makeMetadataFactory('HostListener', function (eventName, args) { return { eventName: eventName, args: args }; }); var createNgModule = makeMetadataFactory('NgModule', function (ngModule) { return ngModule; }); var createInjectable = makeMetadataFactory('Injectable', function () { var injectable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return injectable; }); var CUSTOM_ELEMENTS_SCHEMA = { name: 'custom-elements' }; var NO_ERRORS_SCHEMA = { name: 'no-errors-schema' }; var createOptional = makeMetadataFactory('Optional'); var createSelf = makeMetadataFactory('Self'); var createSkipSelf = makeMetadataFactory('SkipSelf'); var createHost = makeMetadataFactory('Host'); var Type = Function; var SecurityContext; (function (SecurityContext) { SecurityContext[SecurityContext["NONE"] = 0] = "NONE"; SecurityContext[SecurityContext["HTML"] = 1] = "HTML"; SecurityContext[SecurityContext["STYLE"] = 2] = "STYLE"; SecurityContext[SecurityContext["SCRIPT"] = 3] = "SCRIPT"; SecurityContext[SecurityContext["URL"] = 4] = "URL"; SecurityContext[SecurityContext["RESOURCE_URL"] = 5] = "RESOURCE_URL"; })(SecurityContext || (SecurityContext = {})); var MissingTranslationStrategy; (function (MissingTranslationStrategy) { MissingTranslationStrategy[MissingTranslationStrategy["Error"] = 0] = "Error"; MissingTranslationStrategy[MissingTranslationStrategy["Warning"] = 1] = "Warning"; MissingTranslationStrategy[MissingTranslationStrategy["Ignore"] = 2] = "Ignore"; })(MissingTranslationStrategy || (MissingTranslationStrategy = {})); function makeMetadataFactory(name, props) { // This must be declared as a function, not a fat arrow, so that ES2015 devmode produces code // that works with the static_reflector.ts in the ViewEngine compiler. // In particular, `_registerDecoratorOrConstructor` assumes that the value returned here can be // new'ed. function factory() { var values = props ? props.apply(void 0, arguments) : {}; return Object.assign({ ngMetadataName: name }, values); } factory.isTypeOf = function (obj) { return obj && obj.ngMetadataName === name; }; factory.ngMetadataName = name; return factory; } function parserSelectorToSimpleSelector(selector) { var classes = selector.classNames && selector.classNames.length ? [8 /* CLASS */ ].concat(_toConsumableArray(selector.classNames)) : []; var elementName = selector.element && selector.element !== '*' ? selector.element : ''; return [elementName].concat(_toConsumableArray(selector.attrs), _toConsumableArray(classes)); } function parserSelectorToNegativeSelector(selector) { var classes = selector.classNames && selector.classNames.length ? [8 /* CLASS */ ].concat(_toConsumableArray(selector.classNames)) : []; if (selector.element) { return [1 /* NOT */ | 4 /* ELEMENT */ , selector.element].concat(_toConsumableArray(selector.attrs), _toConsumableArray(classes)); } else if (selector.attrs.length) { return [1 /* NOT */ | 2 /* ATTRIBUTE */ ].concat(_toConsumableArray(selector.attrs), _toConsumableArray(classes)); } else { return selector.classNames && selector.classNames.length ? [1 /* NOT */ | 8 /* CLASS */ ].concat(_toConsumableArray(selector.classNames)) : []; } } function parserSelectorToR3Selector(selector) { var positive = parserSelectorToSimpleSelector(selector); var negative = selector.notSelectors && selector.notSelectors.length ? selector.notSelectors.map(function (notSelector) { return parserSelectorToNegativeSelector(notSelector); }) : []; return positive.concat.apply(positive, _toConsumableArray(negative)); } function parseSelectorToR3Selector(selector) { return selector ? CssSelector.parse(selector).map(parserSelectorToR3Selector) : []; } var core = /*#__PURE__*/Object.freeze({ __proto__: null, createInject: createInject, createInjectionToken: createInjectionToken, createAttribute: createAttribute, createContentChildren: createContentChildren, createContentChild: createContentChild, createViewChildren: createViewChildren, createViewChild: createViewChild, createDirective: createDirective, get ViewEncapsulation() { return ViewEncapsulation; }, get ChangeDetectionStrategy() { return ChangeDetectionStrategy; }, createComponent: createComponent, createPipe: createPipe, createInput: createInput, createOutput: createOutput, createHostBinding: createHostBinding, createHostListener: createHostListener, createNgModule: createNgModule, createInjectable: createInjectable, CUSTOM_ELEMENTS_SCHEMA: CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA: NO_ERRORS_SCHEMA, createOptional: createOptional, createSelf: createSelf, createSkipSelf: createSkipSelf, createHost: createHost, Type: Type, get SecurityContext() { return SecurityContext; }, get MissingTranslationStrategy() { return MissingTranslationStrategy; }, parseSelectorToR3Selector: parseSelectorToR3Selector }); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ //// Types var TypeModifier; (function (TypeModifier) { TypeModifier[TypeModifier["Const"] = 0] = "Const"; })(TypeModifier || (TypeModifier = {})); var Type$1 = /*#__PURE__*/function () { function Type$1() { var modifiers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; _classCallCheck(this, Type$1); this.modifiers = modifiers; } _createClass2(Type$1, [{ key: "hasModifier", value: function hasModifier(modifier) { return this.modifiers.indexOf(modifier) !== -1; } }]); return Type$1; }(); var BuiltinTypeName; (function (BuiltinTypeName) { BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic"; BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool"; BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String"; BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int"; BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number"; BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function"; BuiltinTypeName[BuiltinTypeName["Inferred"] = 6] = "Inferred"; BuiltinTypeName[BuiltinTypeName["None"] = 7] = "None"; })(BuiltinTypeName || (BuiltinTypeName = {})); var BuiltinType = /*#__PURE__*/function (_Type$) { _inherits(BuiltinType, _Type$); var _super7 = _createSuper(BuiltinType); function BuiltinType(name, modifiers) { var _this8; _classCallCheck(this, BuiltinType); _this8 = _super7.call(this, modifiers); _this8.name = name; return _this8; } _createClass2(BuiltinType, [{ key: "visitType", value: function visitType(visitor, context) { return visitor.visitBuiltinType(this, context); } }]); return BuiltinType; }(Type$1); var ExpressionType = /*#__PURE__*/function (_Type$2) { _inherits(ExpressionType, _Type$2); var _super8 = _createSuper(ExpressionType); function ExpressionType(value, modifiers) { var _this9; var typeParams = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; _classCallCheck(this, ExpressionType); _this9 = _super8.call(this, modifiers); _this9.value = value; _this9.typeParams = typeParams; return _this9; } _createClass2(ExpressionType, [{ key: "visitType", value: function visitType(visitor, context) { return visitor.visitExpressionType(this, context); } }]); return ExpressionType; }(Type$1); var ArrayType = /*#__PURE__*/function (_Type$3) { _inherits(ArrayType, _Type$3); var _super9 = _createSuper(ArrayType); function ArrayType(of, modifiers) { var _this10; _classCallCheck(this, ArrayType); _this10 = _super9.call(this, modifiers); _this10.of = of; return _this10; } _createClass2(ArrayType, [{ key: "visitType", value: function visitType(visitor, context) { return visitor.visitArrayType(this, context); } }]); return ArrayType; }(Type$1); var MapType = /*#__PURE__*/function (_Type$4) { _inherits(MapType, _Type$4); var _super10 = _createSuper(MapType); function MapType(valueType, modifiers) { var _this11; _classCallCheck(this, MapType); _this11 = _super10.call(this, modifiers); _this11.valueType = valueType || null; return _this11; } _createClass2(MapType, [{ key: "visitType", value: function visitType(visitor, context) { return visitor.visitMapType(this, context); } }]); return MapType; }(Type$1); var DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic); var INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred); var BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool); var INT_TYPE = new BuiltinType(BuiltinTypeName.Int); var NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number); var STRING_TYPE = new BuiltinType(BuiltinTypeName.String); var FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function); var NONE_TYPE = new BuiltinType(BuiltinTypeName.None); ///// Expressions var UnaryOperator; (function (UnaryOperator) { UnaryOperator[UnaryOperator["Minus"] = 0] = "Minus"; UnaryOperator[UnaryOperator["Plus"] = 1] = "Plus"; })(UnaryOperator || (UnaryOperator = {})); var BinaryOperator; (function (BinaryOperator) { BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals"; BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals"; BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical"; BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical"; BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus"; BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus"; BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide"; BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply"; BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo"; BinaryOperator[BinaryOperator["And"] = 9] = "And"; BinaryOperator[BinaryOperator["Or"] = 10] = "Or"; BinaryOperator[BinaryOperator["BitwiseAnd"] = 11] = "BitwiseAnd"; BinaryOperator[BinaryOperator["Lower"] = 12] = "Lower"; BinaryOperator[BinaryOperator["LowerEquals"] = 13] = "LowerEquals"; BinaryOperator[BinaryOperator["Bigger"] = 14] = "Bigger"; BinaryOperator[BinaryOperator["BiggerEquals"] = 15] = "BiggerEquals"; })(BinaryOperator || (BinaryOperator = {})); function nullSafeIsEquivalent(base, other) { if (base == null || other == null) { return base == other; } return base.isEquivalent(other); } function areAllEquivalent(base, other) { var len = base.length; if (len !== other.length) { return false; } for (var i = 0; i < len; i++) { if (!base[i].isEquivalent(other[i])) { return false; } } return true; } var Expression = /*#__PURE__*/function () { function Expression(type, sourceSpan) { _classCallCheck(this, Expression); this.type = type || null; this.sourceSpan = sourceSpan || null; } _createClass2(Expression, [{ key: "prop", value: function prop(name, sourceSpan) { return new ReadPropExpr(this, name, null, sourceSpan); } }, { key: "key", value: function key(index, type, sourceSpan) { return new ReadKeyExpr(this, index, type, sourceSpan); } }, { key: "callMethod", value: function callMethod(name, params, sourceSpan) { return new InvokeMethodExpr(this, name, params, null, sourceSpan); } }, { key: "callFn", value: function callFn(params, sourceSpan, pure) { return new InvokeFunctionExpr(this, params, null, sourceSpan, pure); } }, { key: "instantiate", value: function instantiate(params, type, sourceSpan) { return new InstantiateExpr(this, params, type, sourceSpan); } }, { key: "conditional", value: function conditional(trueCase) { var falseCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var sourceSpan = arguments.length > 2 ? arguments[2] : undefined; return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan); } }, { key: "equals", value: function equals(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan); } }, { key: "notEquals", value: function notEquals(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan); } }, { key: "identical", value: function identical(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan); } }, { key: "notIdentical", value: function notIdentical(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan); } }, { key: "minus", value: function minus(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan); } }, { key: "plus", value: function plus(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan); } }, { key: "divide", value: function divide(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan); } }, { key: "multiply", value: function multiply(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan); } }, { key: "modulo", value: function modulo(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan); } }, { key: "and", value: function and(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan); } }, { key: "bitwiseAnd", value: function bitwiseAnd(rhs, sourceSpan) { var parens = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; return new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, this, rhs, null, sourceSpan, parens); } }, { key: "or", value: function or(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan); } }, { key: "lower", value: function lower(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan); } }, { key: "lowerEquals", value: function lowerEquals(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan); } }, { key: "bigger", value: function bigger(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan); } }, { key: "biggerEquals", value: function biggerEquals(rhs, sourceSpan) { return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan); } }, { key: "isBlank", value: function isBlank(sourceSpan) { // Note: We use equals by purpose here to compare to null and undefined in JS. // We use the typed null to allow strictNullChecks to narrow types. return this.equals(TYPED_NULL_EXPR, sourceSpan); } }, { key: "cast", value: function cast(type, sourceSpan) { return new CastExpr(this, type, sourceSpan); } }, { key: "toStmt", value: function toStmt() { return new ExpressionStatement(this, null); } }]); return Expression; }(); var BuiltinVar; (function (BuiltinVar) { BuiltinVar[BuiltinVar["This"] = 0] = "This"; BuiltinVar[BuiltinVar["Super"] = 1] = "Super"; BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError"; BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack"; })(BuiltinVar || (BuiltinVar = {})); var ReadVarExpr = /*#__PURE__*/function (_Expression) { _inherits(ReadVarExpr, _Expression); var _super11 = _createSuper(ReadVarExpr); function ReadVarExpr(name, type, sourceSpan) { var _this12; _classCallCheck(this, ReadVarExpr); _this12 = _super11.call(this, type, sourceSpan); if (typeof name === 'string') { _this12.name = name; _this12.builtin = null; } else { _this12.name = null; _this12.builtin = name; } return _this12; } _createClass2(ReadVarExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof ReadVarExpr && this.name === e.name && this.builtin === e.builtin; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitReadVarExpr(this, context); } }, { key: "set", value: function set(value) { if (!this.name) { throw new Error("Built in variable ".concat(this.builtin, " can not be assigned to.")); } return new WriteVarExpr(this.name, value, null, this.sourceSpan); } }]); return ReadVarExpr; }(Expression); var TypeofExpr = /*#__PURE__*/function (_Expression2) { _inherits(TypeofExpr, _Expression2); var _super12 = _createSuper(TypeofExpr); function TypeofExpr(expr, type, sourceSpan) { var _this13; _classCallCheck(this, TypeofExpr); _this13 = _super12.call(this, type, sourceSpan); _this13.expr = expr; return _this13; } _createClass2(TypeofExpr, [{ key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitTypeofExpr(this, context); } }, { key: "isEquivalent", value: function isEquivalent(e) { return e instanceof TypeofExpr && e.expr.isEquivalent(this.expr); } }, { key: "isConstant", value: function isConstant() { return this.expr.isConstant(); } }]); return TypeofExpr; }(Expression); var WrappedNodeExpr = /*#__PURE__*/function (_Expression3) { _inherits(WrappedNodeExpr, _Expression3); var _super13 = _createSuper(WrappedNodeExpr); function WrappedNodeExpr(node, type, sourceSpan) { var _this14; _classCallCheck(this, WrappedNodeExpr); _this14 = _super13.call(this, type, sourceSpan); _this14.node = node; return _this14; } _createClass2(WrappedNodeExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof WrappedNodeExpr && this.node === e.node; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitWrappedNodeExpr(this, context); } }]); return WrappedNodeExpr; }(Expression); var WriteVarExpr = /*#__PURE__*/function (_Expression4) { _inherits(WriteVarExpr, _Expression4); var _super14 = _createSuper(WriteVarExpr); function WriteVarExpr(name, value, type, sourceSpan) { var _this15; _classCallCheck(this, WriteVarExpr); _this15 = _super14.call(this, type || value.type, sourceSpan); _this15.name = name; _this15.value = value; return _this15; } _createClass2(WriteVarExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitWriteVarExpr(this, context); } }, { key: "toDeclStmt", value: function toDeclStmt(type, modifiers) { return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan); } }, { key: "toConstDecl", value: function toConstDecl() { return this.toDeclStmt(INFERRED_TYPE, [StmtModifier.Final]); } }]); return WriteVarExpr; }(Expression); var WriteKeyExpr = /*#__PURE__*/function (_Expression5) { _inherits(WriteKeyExpr, _Expression5); var _super15 = _createSuper(WriteKeyExpr); function WriteKeyExpr(receiver, index, value, type, sourceSpan) { var _this16; _classCallCheck(this, WriteKeyExpr); _this16 = _super15.call(this, type || value.type, sourceSpan); _this16.receiver = receiver; _this16.index = index; _this16.value = value; return _this16; } _createClass2(WriteKeyExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) && this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitWriteKeyExpr(this, context); } }]); return WriteKeyExpr; }(Expression); var WritePropExpr = /*#__PURE__*/function (_Expression6) { _inherits(WritePropExpr, _Expression6); var _super16 = _createSuper(WritePropExpr); function WritePropExpr(receiver, name, value, type, sourceSpan) { var _this17; _classCallCheck(this, WritePropExpr); _this17 = _super16.call(this, type || value.type, sourceSpan); _this17.receiver = receiver; _this17.name = name; _this17.value = value; return _this17; } _createClass2(WritePropExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name && this.value.isEquivalent(e.value); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitWritePropExpr(this, context); } }]); return WritePropExpr; }(Expression); var BuiltinMethod; (function (BuiltinMethod) { BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray"; BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable"; BuiltinMethod[BuiltinMethod["Bind"] = 2] = "Bind"; })(BuiltinMethod || (BuiltinMethod = {})); var InvokeMethodExpr = /*#__PURE__*/function (_Expression7) { _inherits(InvokeMethodExpr, _Expression7); var _super17 = _createSuper(InvokeMethodExpr); function InvokeMethodExpr(receiver, method, args, type, sourceSpan) { var _this18; _classCallCheck(this, InvokeMethodExpr); _this18 = _super17.call(this, type, sourceSpan); _this18.receiver = receiver; _this18.args = args; if (typeof method === 'string') { _this18.name = method; _this18.builtin = null; } else { _this18.name = null; _this18.builtin = method; } return _this18; } _createClass2(InvokeMethodExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof InvokeMethodExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name && this.builtin === e.builtin && areAllEquivalent(this.args, e.args); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitInvokeMethodExpr(this, context); } }]); return InvokeMethodExpr; }(Expression); var InvokeFunctionExpr = /*#__PURE__*/function (_Expression8) { _inherits(InvokeFunctionExpr, _Expression8); var _super18 = _createSuper(InvokeFunctionExpr); function InvokeFunctionExpr(fn, args, type, sourceSpan) { var _this19; var pure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; _classCallCheck(this, InvokeFunctionExpr); _this19 = _super18.call(this, type, sourceSpan); _this19.fn = fn; _this19.args = args; _this19.pure = pure; return _this19; } _createClass2(InvokeFunctionExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) && areAllEquivalent(this.args, e.args) && this.pure === e.pure; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitInvokeFunctionExpr(this, context); } }]); return InvokeFunctionExpr; }(Expression); var InstantiateExpr = /*#__PURE__*/function (_Expression9) { _inherits(InstantiateExpr, _Expression9); var _super19 = _createSuper(InstantiateExpr); function InstantiateExpr(classExpr, args, type, sourceSpan) { var _this20; _classCallCheck(this, InstantiateExpr); _this20 = _super19.call(this, type, sourceSpan); _this20.classExpr = classExpr; _this20.args = args; return _this20; } _createClass2(InstantiateExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) && areAllEquivalent(this.args, e.args); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitInstantiateExpr(this, context); } }]); return InstantiateExpr; }(Expression); var LiteralExpr = /*#__PURE__*/function (_Expression10) { _inherits(LiteralExpr, _Expression10); var _super20 = _createSuper(LiteralExpr); function LiteralExpr(value, type, sourceSpan) { var _this21; _classCallCheck(this, LiteralExpr); _this21 = _super20.call(this, type, sourceSpan); _this21.value = value; return _this21; } _createClass2(LiteralExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof LiteralExpr && this.value === e.value; } }, { key: "isConstant", value: function isConstant() { return true; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitLiteralExpr(this, context); } }]); return LiteralExpr; }(Expression); var MessagePiece = /*#__PURE__*/_createClass2(function MessagePiece(text, sourceSpan) { _classCallCheck(this, MessagePiece); this.text = text; this.sourceSpan = sourceSpan; }); var LiteralPiece = /*#__PURE__*/function (_MessagePiece) { _inherits(LiteralPiece, _MessagePiece); var _super21 = _createSuper(LiteralPiece); function LiteralPiece() { _classCallCheck(this, LiteralPiece); return _super21.apply(this, arguments); } return _createClass2(LiteralPiece); }(MessagePiece); var PlaceholderPiece = /*#__PURE__*/function (_MessagePiece2) { _inherits(PlaceholderPiece, _MessagePiece2); var _super22 = _createSuper(PlaceholderPiece); function PlaceholderPiece() { _classCallCheck(this, PlaceholderPiece); return _super22.apply(this, arguments); } return _createClass2(PlaceholderPiece); }(MessagePiece); var LocalizedString = /*#__PURE__*/function (_Expression11) { _inherits(LocalizedString, _Expression11); var _super23 = _createSuper(LocalizedString); function LocalizedString(metaBlock, messageParts, placeHolderNames, expressions, sourceSpan) { var _this22; _classCallCheck(this, LocalizedString); _this22 = _super23.call(this, STRING_TYPE, sourceSpan); _this22.metaBlock = metaBlock; _this22.messageParts = messageParts; _this22.placeHolderNames = placeHolderNames; _this22.expressions = expressions; return _this22; } _createClass2(LocalizedString, [{ key: "isEquivalent", value: function isEquivalent(e) { // return e instanceof LocalizedString && this.message === e.message; return false; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitLocalizedString(this, context); } /** * Serialize the given `meta` and `messagePart` into "cooked" and "raw" strings that can be used * in a `$localize` tagged string. The format of the metadata is the same as that parsed by * `parseI18nMeta()`. * * @param meta The metadata to serialize * @param messagePart The first part of the tagged string */ }, { key: "serializeI18nHead", value: function serializeI18nHead() { var MEANING_SEPARATOR = '|'; var ID_SEPARATOR = '@@'; var LEGACY_ID_INDICATOR = '␟'; var metaBlock = this.metaBlock.description || ''; if (this.metaBlock.meaning) { metaBlock = "".concat(this.metaBlock.meaning).concat(MEANING_SEPARATOR).concat(metaBlock); } if (this.metaBlock.customId) { metaBlock = "".concat(metaBlock).concat(ID_SEPARATOR).concat(this.metaBlock.customId); } if (this.metaBlock.legacyIds) { this.metaBlock.legacyIds.forEach(function (legacyId) { metaBlock = "".concat(metaBlock).concat(LEGACY_ID_INDICATOR).concat(legacyId); }); } return createCookedRawString(metaBlock, this.messageParts[0].text, this.getMessagePartSourceSpan(0)); } }, { key: "getMessagePartSourceSpan", value: function getMessagePartSourceSpan(i) { var _a, _b; return (_b = (_a = this.messageParts[i]) === null || _a === void 0 ? void 0 : _a.sourceSpan) !== null && _b !== void 0 ? _b : this.sourceSpan; } }, { key: "getPlaceholderSourceSpan", value: function getPlaceholderSourceSpan(i) { var _a, _b, _c, _d; return (_d = (_b = (_a = this.placeHolderNames[i]) === null || _a === void 0 ? void 0 : _a.sourceSpan) !== null && _b !== void 0 ? _b : (_c = this.expressions[i]) === null || _c === void 0 ? void 0 : _c.sourceSpan) !== null && _d !== void 0 ? _d : this.sourceSpan; } /** * Serialize the given `placeholderName` and `messagePart` into "cooked" and "raw" strings that * can be used in a `$localize` tagged string. * * @param placeholderName The placeholder name to serialize * @param messagePart The following message string after this placeholder */ }, { key: "serializeI18nTemplatePart", value: function serializeI18nTemplatePart(partIndex) { var placeholderName = this.placeHolderNames[partIndex - 1].text; var messagePart = this.messageParts[partIndex]; return createCookedRawString(placeholderName, messagePart.text, this.getMessagePartSourceSpan(partIndex)); } }]); return LocalizedString; }(Expression); var escapeSlashes = function escapeSlashes(str) { return str.replace(/\\/g, '\\\\'); }; var escapeStartingColon = function escapeStartingColon(str) { return str.replace(/^:/, '\\:'); }; var escapeColons = function escapeColons(str) { return str.replace(/:/g, '\\:'); }; var escapeForMessagePart = function escapeForMessagePart(str) { return str.replace(/`/g, '\\`').replace(/\${/g, '$\\{'); }; /** * Creates a `{cooked, raw}` object from the `metaBlock` and `messagePart`. * * The `raw` text must have various character sequences escaped: * * "\" would otherwise indicate that the next character is a control character. * * "`" and "${" are template string control sequences that would otherwise prematurely indicate * the end of a message part. * * ":" inside a metablock would prematurely indicate the end of the metablock. * * ":" at the start of a messagePart with no metablock would erroneously indicate the start of a * metablock. * * @param metaBlock Any metadata that should be prepended to the string * @param messagePart The message part of the string */ function createCookedRawString(metaBlock, messagePart, range) { if (metaBlock === '') { return { cooked: messagePart, raw: escapeForMessagePart(escapeStartingColon(escapeSlashes(messagePart))), range: range }; } else { return { cooked: ":".concat(metaBlock, ":").concat(messagePart), raw: escapeForMessagePart(":".concat(escapeColons(escapeSlashes(metaBlock)), ":").concat(escapeSlashes(messagePart))), range: range }; } } var ExternalExpr = /*#__PURE__*/function (_Expression12) { _inherits(ExternalExpr, _Expression12); var _super24 = _createSuper(ExternalExpr); function ExternalExpr(value, type) { var _this23; var typeParams = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var sourceSpan = arguments.length > 3 ? arguments[3] : undefined; _classCallCheck(this, ExternalExpr); _this23 = _super24.call(this, type, sourceSpan); _this23.value = value; _this23.typeParams = typeParams; return _this23; } _createClass2(ExternalExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof ExternalExpr && this.value.name === e.value.name && this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitExternalExpr(this, context); } }]); return ExternalExpr; }(Expression); var ExternalReference = /*#__PURE__*/_createClass2(function ExternalReference(moduleName, name, runtime) { _classCallCheck(this, ExternalReference); this.moduleName = moduleName; this.name = name; this.runtime = runtime; }); var ConditionalExpr = /*#__PURE__*/function (_Expression13) { _inherits(ConditionalExpr, _Expression13); var _super25 = _createSuper(ConditionalExpr); function ConditionalExpr(condition, trueCase) { var _this24; var falseCase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var type = arguments.length > 3 ? arguments[3] : undefined; var sourceSpan = arguments.length > 4 ? arguments[4] : undefined; _classCallCheck(this, ConditionalExpr); _this24 = _super25.call(this, type || trueCase.type, sourceSpan); _this24.condition = condition; _this24.falseCase = falseCase; _this24.trueCase = trueCase; return _this24; } _createClass2(ConditionalExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) && this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitConditionalExpr(this, context); } }]); return ConditionalExpr; }(Expression); var NotExpr = /*#__PURE__*/function (_Expression14) { _inherits(NotExpr, _Expression14); var _super26 = _createSuper(NotExpr); function NotExpr(condition, sourceSpan) { var _this25; _classCallCheck(this, NotExpr); _this25 = _super26.call(this, BOOL_TYPE, sourceSpan); _this25.condition = condition; return _this25; } _createClass2(NotExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof NotExpr && this.condition.isEquivalent(e.condition); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitNotExpr(this, context); } }]); return NotExpr; }(Expression); var AssertNotNull = /*#__PURE__*/function (_Expression15) { _inherits(AssertNotNull, _Expression15); var _super27 = _createSuper(AssertNotNull); function AssertNotNull(condition, sourceSpan) { var _this26; _classCallCheck(this, AssertNotNull); _this26 = _super27.call(this, condition.type, sourceSpan); _this26.condition = condition; return _this26; } _createClass2(AssertNotNull, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof AssertNotNull && this.condition.isEquivalent(e.condition); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitAssertNotNullExpr(this, context); } }]); return AssertNotNull; }(Expression); var CastExpr = /*#__PURE__*/function (_Expression16) { _inherits(CastExpr, _Expression16); var _super28 = _createSuper(CastExpr); function CastExpr(value, type, sourceSpan) { var _this27; _classCallCheck(this, CastExpr); _this27 = _super28.call(this, type, sourceSpan); _this27.value = value; return _this27; } _createClass2(CastExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof CastExpr && this.value.isEquivalent(e.value); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitCastExpr(this, context); } }]); return CastExpr; }(Expression); var FnParam = /*#__PURE__*/function () { function FnParam(name) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; _classCallCheck(this, FnParam); this.name = name; this.type = type; } _createClass2(FnParam, [{ key: "isEquivalent", value: function isEquivalent(param) { return this.name === param.name; } }]); return FnParam; }(); var FunctionExpr = /*#__PURE__*/function (_Expression17) { _inherits(FunctionExpr, _Expression17); var _super29 = _createSuper(FunctionExpr); function FunctionExpr(params, statements, type, sourceSpan, name) { var _this28; _classCallCheck(this, FunctionExpr); _this28 = _super29.call(this, type, sourceSpan); _this28.params = params; _this28.statements = statements; _this28.name = name; return _this28; } _createClass2(FunctionExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) && areAllEquivalent(this.statements, e.statements); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitFunctionExpr(this, context); } }, { key: "toDeclStmt", value: function toDeclStmt(name, modifiers) { return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan); } }]); return FunctionExpr; }(Expression); var UnaryOperatorExpr = /*#__PURE__*/function (_Expression18) { _inherits(UnaryOperatorExpr, _Expression18); var _super30 = _createSuper(UnaryOperatorExpr); function UnaryOperatorExpr(operator, expr, type, sourceSpan) { var _this29; var parens = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; _classCallCheck(this, UnaryOperatorExpr); _this29 = _super30.call(this, type || NUMBER_TYPE, sourceSpan); _this29.operator = operator; _this29.expr = expr; _this29.parens = parens; return _this29; } _createClass2(UnaryOperatorExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof UnaryOperatorExpr && this.operator === e.operator && this.expr.isEquivalent(e.expr); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitUnaryOperatorExpr(this, context); } }]); return UnaryOperatorExpr; }(Expression); var BinaryOperatorExpr = /*#__PURE__*/function (_Expression19) { _inherits(BinaryOperatorExpr, _Expression19); var _super31 = _createSuper(BinaryOperatorExpr); function BinaryOperatorExpr(operator, lhs, rhs, type, sourceSpan) { var _this30; var parens = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; _classCallCheck(this, BinaryOperatorExpr); _this30 = _super31.call(this, type || lhs.type, sourceSpan); _this30.operator = operator; _this30.rhs = rhs; _this30.parens = parens; _this30.lhs = lhs; return _this30; } _createClass2(BinaryOperatorExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof BinaryOperatorExpr && this.operator === e.operator && this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitBinaryOperatorExpr(this, context); } }]); return BinaryOperatorExpr; }(Expression); var ReadPropExpr = /*#__PURE__*/function (_Expression20) { _inherits(ReadPropExpr, _Expression20); var _super32 = _createSuper(ReadPropExpr); function ReadPropExpr(receiver, name, type, sourceSpan) { var _this31; _classCallCheck(this, ReadPropExpr); _this31 = _super32.call(this, type, sourceSpan); _this31.receiver = receiver; _this31.name = name; return _this31; } _createClass2(ReadPropExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name; } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitReadPropExpr(this, context); } }, { key: "set", value: function set(value) { return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan); } }]); return ReadPropExpr; }(Expression); var ReadKeyExpr = /*#__PURE__*/function (_Expression21) { _inherits(ReadKeyExpr, _Expression21); var _super33 = _createSuper(ReadKeyExpr); function ReadKeyExpr(receiver, index, type, sourceSpan) { var _this32; _classCallCheck(this, ReadKeyExpr); _this32 = _super33.call(this, type, sourceSpan); _this32.receiver = receiver; _this32.index = index; return _this32; } _createClass2(ReadKeyExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) && this.index.isEquivalent(e.index); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitReadKeyExpr(this, context); } }, { key: "set", value: function set(value) { return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan); } }]); return ReadKeyExpr; }(Expression); var LiteralArrayExpr = /*#__PURE__*/function (_Expression22) { _inherits(LiteralArrayExpr, _Expression22); var _super34 = _createSuper(LiteralArrayExpr); function LiteralArrayExpr(entries, type, sourceSpan) { var _this33; _classCallCheck(this, LiteralArrayExpr); _this33 = _super34.call(this, type, sourceSpan); _this33.entries = entries; return _this33; } _createClass2(LiteralArrayExpr, [{ key: "isConstant", value: function isConstant() { return this.entries.every(function (e) { return e.isConstant(); }); } }, { key: "isEquivalent", value: function isEquivalent(e) { return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries); } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitLiteralArrayExpr(this, context); } }]); return LiteralArrayExpr; }(Expression); var LiteralMapEntry = /*#__PURE__*/function () { function LiteralMapEntry(key, value, quoted) { _classCallCheck(this, LiteralMapEntry); this.key = key; this.value = value; this.quoted = quoted; } _createClass2(LiteralMapEntry, [{ key: "isEquivalent", value: function isEquivalent(e) { return this.key === e.key && this.value.isEquivalent(e.value); } }]); return LiteralMapEntry; }(); var LiteralMapExpr = /*#__PURE__*/function (_Expression23) { _inherits(LiteralMapExpr, _Expression23); var _super35 = _createSuper(LiteralMapExpr); function LiteralMapExpr(entries, type, sourceSpan) { var _this34; _classCallCheck(this, LiteralMapExpr); _this34 = _super35.call(this, type, sourceSpan); _this34.entries = entries; _this34.valueType = null; if (type) { _this34.valueType = type.valueType; } return _this34; } _createClass2(LiteralMapExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries); } }, { key: "isConstant", value: function isConstant() { return this.entries.every(function (e) { return e.value.isConstant(); }); } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitLiteralMapExpr(this, context); } }]); return LiteralMapExpr; }(Expression); var CommaExpr = /*#__PURE__*/function (_Expression24) { _inherits(CommaExpr, _Expression24); var _super36 = _createSuper(CommaExpr); function CommaExpr(parts, sourceSpan) { var _this35; _classCallCheck(this, CommaExpr); _this35 = _super36.call(this, parts[parts.length - 1].type, sourceSpan); _this35.parts = parts; return _this35; } _createClass2(CommaExpr, [{ key: "isEquivalent", value: function isEquivalent(e) { return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts); } }, { key: "isConstant", value: function isConstant() { return false; } }, { key: "visitExpression", value: function visitExpression(visitor, context) { return visitor.visitCommaExpr(this, context); } }]); return CommaExpr; }(Expression); var THIS_EXPR = new ReadVarExpr(BuiltinVar.This, null, null); var SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super, null, null); var CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError, null, null); var CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack, null, null); var NULL_EXPR = new LiteralExpr(null, null, null); var TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null); //// Statements var StmtModifier; (function (StmtModifier) { StmtModifier[StmtModifier["Final"] = 0] = "Final"; StmtModifier[StmtModifier["Private"] = 1] = "Private"; StmtModifier[StmtModifier["Exported"] = 2] = "Exported"; StmtModifier[StmtModifier["Static"] = 3] = "Static"; })(StmtModifier || (StmtModifier = {})); var LeadingComment = /*#__PURE__*/function () { function LeadingComment(text, multiline, trailingNewline) { _classCallCheck(this, LeadingComment); this.text = text; this.multiline = multiline; this.trailingNewline = trailingNewline; } _createClass2(LeadingComment, [{ key: "toString", value: function toString() { return this.multiline ? " ".concat(this.text, " ") : this.text; } }]); return LeadingComment; }(); var JSDocComment = /*#__PURE__*/function (_LeadingComment) { _inherits(JSDocComment, _LeadingComment); var _super37 = _createSuper(JSDocComment); function JSDocComment(tags) { var _this36; _classCallCheck(this, JSDocComment); _this36 = _super37.call(this, '', /* multiline */ true, /* trailingNewline */ true); _this36.tags = tags; return _this36; } _createClass2(JSDocComment, [{ key: "toString", value: function toString() { return serializeTags(this.tags); } }]); return JSDocComment; }(LeadingComment); var Statement = /*#__PURE__*/function () { function Statement() { var modifiers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var sourceSpan = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var leadingComments = arguments.length > 2 ? arguments[2] : undefined; _classCallCheck(this, Statement); this.modifiers = modifiers; this.sourceSpan = sourceSpan; this.leadingComments = leadingComments; } _createClass2(Statement, [{ key: "hasModifier", value: function hasModifier(modifier) { return this.modifiers.indexOf(modifier) !== -1; } }, { key: "addLeadingComment", value: function addLeadingComment(leadingComment) { var _a; this.leadingComments = (_a = this.leadingComments) !== null && _a !== void 0 ? _a : []; this.leadingComments.push(leadingComment); } }]); return Statement; }(); var DeclareVarStmt = /*#__PURE__*/function (_Statement) { _inherits(DeclareVarStmt, _Statement); var _super38 = _createSuper(DeclareVarStmt); function DeclareVarStmt(name, value, type, modifiers, sourceSpan, leadingComments) { var _this37; _classCallCheck(this, DeclareVarStmt); _this37 = _super38.call(this, modifiers, sourceSpan, leadingComments); _this37.name = name; _this37.value = value; _this37.type = type || value && value.type || null; return _this37; } _createClass2(DeclareVarStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof DeclareVarStmt && this.name === stmt.name && (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitDeclareVarStmt(this, context); } }]); return DeclareVarStmt; }(Statement); var DeclareFunctionStmt = /*#__PURE__*/function (_Statement2) { _inherits(DeclareFunctionStmt, _Statement2); var _super39 = _createSuper(DeclareFunctionStmt); function DeclareFunctionStmt(name, params, statements, type, modifiers, sourceSpan, leadingComments) { var _this38; _classCallCheck(this, DeclareFunctionStmt); _this38 = _super39.call(this, modifiers, sourceSpan, leadingComments); _this38.name = name; _this38.params = params; _this38.statements = statements; _this38.type = type || null; return _this38; } _createClass2(DeclareFunctionStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) && areAllEquivalent(this.statements, stmt.statements); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitDeclareFunctionStmt(this, context); } }]); return DeclareFunctionStmt; }(Statement); var ExpressionStatement = /*#__PURE__*/function (_Statement3) { _inherits(ExpressionStatement, _Statement3); var _super40 = _createSuper(ExpressionStatement); function ExpressionStatement(expr, sourceSpan, leadingComments) { var _this39; _classCallCheck(this, ExpressionStatement); _this39 = _super40.call(this, [], sourceSpan, leadingComments); _this39.expr = expr; return _this39; } _createClass2(ExpressionStatement, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitExpressionStmt(this, context); } }]); return ExpressionStatement; }(Statement); var ReturnStatement = /*#__PURE__*/function (_Statement4) { _inherits(ReturnStatement, _Statement4); var _super41 = _createSuper(ReturnStatement); function ReturnStatement(value) { var _this40; var sourceSpan = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var leadingComments = arguments.length > 2 ? arguments[2] : undefined; _classCallCheck(this, ReturnStatement); _this40 = _super41.call(this, [], sourceSpan, leadingComments); _this40.value = value; return _this40; } _createClass2(ReturnStatement, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitReturnStmt(this, context); } }]); return ReturnStatement; }(Statement); var AbstractClassPart = /*#__PURE__*/function () { function AbstractClassPart() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var modifiers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; _classCallCheck(this, AbstractClassPart); this.type = type; this.modifiers = modifiers; } _createClass2(AbstractClassPart, [{ key: "hasModifier", value: function hasModifier(modifier) { return this.modifiers.indexOf(modifier) !== -1; } }]); return AbstractClassPart; }(); var ClassField = /*#__PURE__*/function (_AbstractClassPart) { _inherits(ClassField, _AbstractClassPart); var _super42 = _createSuper(ClassField); function ClassField(name, type, modifiers, initializer) { var _this41; _classCallCheck(this, ClassField); _this41 = _super42.call(this, type, modifiers); _this41.name = name; _this41.initializer = initializer; return _this41; } _createClass2(ClassField, [{ key: "isEquivalent", value: function isEquivalent(f) { return this.name === f.name; } }]); return ClassField; }(AbstractClassPart); var ClassMethod = /*#__PURE__*/function (_AbstractClassPart2) { _inherits(ClassMethod, _AbstractClassPart2); var _super43 = _createSuper(ClassMethod); function ClassMethod(name, params, body, type, modifiers) { var _this42; _classCallCheck(this, ClassMethod); _this42 = _super43.call(this, type, modifiers); _this42.name = name; _this42.params = params; _this42.body = body; return _this42; } _createClass2(ClassMethod, [{ key: "isEquivalent", value: function isEquivalent(m) { return this.name === m.name && areAllEquivalent(this.body, m.body); } }]); return ClassMethod; }(AbstractClassPart); var ClassGetter = /*#__PURE__*/function (_AbstractClassPart3) { _inherits(ClassGetter, _AbstractClassPart3); var _super44 = _createSuper(ClassGetter); function ClassGetter(name, body, type, modifiers) { var _this43; _classCallCheck(this, ClassGetter); _this43 = _super44.call(this, type, modifiers); _this43.name = name; _this43.body = body; return _this43; } _createClass2(ClassGetter, [{ key: "isEquivalent", value: function isEquivalent(m) { return this.name === m.name && areAllEquivalent(this.body, m.body); } }]); return ClassGetter; }(AbstractClassPart); var ClassStmt = /*#__PURE__*/function (_Statement5) { _inherits(ClassStmt, _Statement5); var _super45 = _createSuper(ClassStmt); function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers, sourceSpan, leadingComments) { var _this44; _classCallCheck(this, ClassStmt); _this44 = _super45.call(this, modifiers, sourceSpan, leadingComments); _this44.name = name; _this44.parent = parent; _this44.fields = fields; _this44.getters = getters; _this44.constructorMethod = constructorMethod; _this44.methods = methods; return _this44; } _createClass2(ClassStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof ClassStmt && this.name === stmt.name && nullSafeIsEquivalent(this.parent, stmt.parent) && areAllEquivalent(this.fields, stmt.fields) && areAllEquivalent(this.getters, stmt.getters) && this.constructorMethod.isEquivalent(stmt.constructorMethod) && areAllEquivalent(this.methods, stmt.methods); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitDeclareClassStmt(this, context); } }]); return ClassStmt; }(Statement); var IfStmt = /*#__PURE__*/function (_Statement6) { _inherits(IfStmt, _Statement6); var _super46 = _createSuper(IfStmt); function IfStmt(condition, trueCase) { var _this45; var falseCase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var sourceSpan = arguments.length > 3 ? arguments[3] : undefined; var leadingComments = arguments.length > 4 ? arguments[4] : undefined; _classCallCheck(this, IfStmt); _this45 = _super46.call(this, [], sourceSpan, leadingComments); _this45.condition = condition; _this45.trueCase = trueCase; _this45.falseCase = falseCase; return _this45; } _createClass2(IfStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) && areAllEquivalent(this.trueCase, stmt.trueCase) && areAllEquivalent(this.falseCase, stmt.falseCase); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitIfStmt(this, context); } }]); return IfStmt; }(Statement); var TryCatchStmt = /*#__PURE__*/function (_Statement7) { _inherits(TryCatchStmt, _Statement7); var _super47 = _createSuper(TryCatchStmt); function TryCatchStmt(bodyStmts, catchStmts) { var _this46; var sourceSpan = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var leadingComments = arguments.length > 3 ? arguments[3] : undefined; _classCallCheck(this, TryCatchStmt); _this46 = _super47.call(this, [], sourceSpan, leadingComments); _this46.bodyStmts = bodyStmts; _this46.catchStmts = catchStmts; return _this46; } _createClass2(TryCatchStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof TryCatchStmt && areAllEquivalent(this.bodyStmts, stmt.bodyStmts) && areAllEquivalent(this.catchStmts, stmt.catchStmts); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitTryCatchStmt(this, context); } }]); return TryCatchStmt; }(Statement); var ThrowStmt = /*#__PURE__*/function (_Statement8) { _inherits(ThrowStmt, _Statement8); var _super48 = _createSuper(ThrowStmt); function ThrowStmt(error) { var _this47; var sourceSpan = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var leadingComments = arguments.length > 2 ? arguments[2] : undefined; _classCallCheck(this, ThrowStmt); _this47 = _super48.call(this, [], sourceSpan, leadingComments); _this47.error = error; return _this47; } _createClass2(ThrowStmt, [{ key: "isEquivalent", value: function isEquivalent(stmt) { return stmt instanceof TryCatchStmt && this.error.isEquivalent(stmt.error); } }, { key: "visitStatement", value: function visitStatement(visitor, context) { return visitor.visitThrowStmt(this, context); } }]); return ThrowStmt; }(Statement); var AstTransformer = /*#__PURE__*/function () { function AstTransformer() { _classCallCheck(this, AstTransformer); } _createClass2(AstTransformer, [{ key: "transformExpr", value: function transformExpr(expr, context) { return expr; } }, { key: "transformStmt", value: function transformStmt(stmt, context) { return stmt; } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(ast, context) { return this.transformExpr(ast, context); } }, { key: "visitWrappedNodeExpr", value: function visitWrappedNodeExpr(ast, context) { return this.transformExpr(ast, context); } }, { key: "visitTypeofExpr", value: function visitTypeofExpr(expr, context) { return this.transformExpr(new TypeofExpr(expr.expr.visitExpression(this, context), expr.type, expr.sourceSpan), context); } }, { key: "visitWriteVarExpr", value: function visitWriteVarExpr(expr, context) { return this.transformExpr(new WriteVarExpr(expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); } }, { key: "visitWriteKeyExpr", value: function visitWriteKeyExpr(expr, context) { return this.transformExpr(new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); } }, { key: "visitWritePropExpr", value: function visitWritePropExpr(expr, context) { return this.transformExpr(new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context); } }, { key: "visitInvokeMethodExpr", value: function visitInvokeMethodExpr(ast, context) { var method = ast.builtin || ast.name; return this.transformExpr(new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); } }, { key: "visitInvokeFunctionExpr", value: function visitInvokeFunctionExpr(ast, context) { return this.transformExpr(new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); } }, { key: "visitInstantiateExpr", value: function visitInstantiateExpr(ast, context) { return this.transformExpr(new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context); } }, { key: "visitLiteralExpr", value: function visitLiteralExpr(ast, context) { return this.transformExpr(ast, context); } }, { key: "visitLocalizedString", value: function visitLocalizedString(ast, context) { return this.transformExpr(new LocalizedString(ast.metaBlock, ast.messageParts, ast.placeHolderNames, this.visitAllExpressions(ast.expressions, context), ast.sourceSpan), context); } }, { key: "visitExternalExpr", value: function visitExternalExpr(ast, context) { return this.transformExpr(ast, context); } }, { key: "visitConditionalExpr", value: function visitConditionalExpr(ast, context) { return this.transformExpr(new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context), ast.type, ast.sourceSpan), context); } }, { key: "visitNotExpr", value: function visitNotExpr(ast, context) { return this.transformExpr(new NotExpr(ast.condition.visitExpression(this, context), ast.sourceSpan), context); } }, { key: "visitAssertNotNullExpr", value: function visitAssertNotNullExpr(ast, context) { return this.transformExpr(new AssertNotNull(ast.condition.visitExpression(this, context), ast.sourceSpan), context); } }, { key: "visitCastExpr", value: function visitCastExpr(ast, context) { return this.transformExpr(new CastExpr(ast.value.visitExpression(this, context), ast.type, ast.sourceSpan), context); } }, { key: "visitFunctionExpr", value: function visitFunctionExpr(ast, context) { return this.transformExpr(new FunctionExpr(ast.params, this.visitAllStatements(ast.statements, context), ast.type, ast.sourceSpan), context); } }, { key: "visitUnaryOperatorExpr", value: function visitUnaryOperatorExpr(ast, context) { return this.transformExpr(new UnaryOperatorExpr(ast.operator, ast.expr.visitExpression(this, context), ast.type, ast.sourceSpan), context); } }, { key: "visitBinaryOperatorExpr", value: function visitBinaryOperatorExpr(ast, context) { return this.transformExpr(new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type, ast.sourceSpan), context); } }, { key: "visitReadPropExpr", value: function visitReadPropExpr(ast, context) { return this.transformExpr(new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type, ast.sourceSpan), context); } }, { key: "visitReadKeyExpr", value: function visitReadKeyExpr(ast, context) { return this.transformExpr(new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type, ast.sourceSpan), context); } }, { key: "visitLiteralArrayExpr", value: function visitLiteralArrayExpr(ast, context) { return this.transformExpr(new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context), ast.type, ast.sourceSpan), context); } }, { key: "visitLiteralMapExpr", value: function visitLiteralMapExpr(ast, context) { var _this48 = this; var entries = ast.entries.map(function (entry) { return new LiteralMapEntry(entry.key, entry.value.visitExpression(_this48, context), entry.quoted); }); var mapType = new MapType(ast.valueType); return this.transformExpr(new LiteralMapExpr(entries, mapType, ast.sourceSpan), context); } }, { key: "visitCommaExpr", value: function visitCommaExpr(ast, context) { return this.transformExpr(new CommaExpr(this.visitAllExpressions(ast.parts, context), ast.sourceSpan), context); } }, { key: "visitAllExpressions", value: function visitAllExpressions(exprs, context) { var _this49 = this; return exprs.map(function (expr) { return expr.visitExpression(_this49, context); }); } }, { key: "visitDeclareVarStmt", value: function visitDeclareVarStmt(stmt, context) { var value = stmt.value && stmt.value.visitExpression(this, context); return this.transformStmt(new DeclareVarStmt(stmt.name, value, stmt.type, stmt.modifiers, stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitDeclareFunctionStmt", value: function visitDeclareFunctionStmt(stmt, context) { return this.transformStmt(new DeclareFunctionStmt(stmt.name, stmt.params, this.visitAllStatements(stmt.statements, context), stmt.type, stmt.modifiers, stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitExpressionStmt", value: function visitExpressionStmt(stmt, context) { return this.transformStmt(new ExpressionStatement(stmt.expr.visitExpression(this, context), stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitReturnStmt", value: function visitReturnStmt(stmt, context) { return this.transformStmt(new ReturnStatement(stmt.value.visitExpression(this, context), stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitDeclareClassStmt", value: function visitDeclareClassStmt(stmt, context) { var _this50 = this; var parent = stmt.parent.visitExpression(this, context); var getters = stmt.getters.map(function (getter) { return new ClassGetter(getter.name, _this50.visitAllStatements(getter.body, context), getter.type, getter.modifiers); }); var ctorMethod = stmt.constructorMethod && new ClassMethod(stmt.constructorMethod.name, stmt.constructorMethod.params, this.visitAllStatements(stmt.constructorMethod.body, context), stmt.constructorMethod.type, stmt.constructorMethod.modifiers); var methods = stmt.methods.map(function (method) { return new ClassMethod(method.name, method.params, _this50.visitAllStatements(method.body, context), method.type, method.modifiers); }); return this.transformStmt(new ClassStmt(stmt.name, parent, stmt.fields, getters, ctorMethod, methods, stmt.modifiers, stmt.sourceSpan), context); } }, { key: "visitIfStmt", value: function visitIfStmt(stmt, context) { return this.transformStmt(new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context), stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitTryCatchStmt", value: function visitTryCatchStmt(stmt, context) { return this.transformStmt(new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context), stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitThrowStmt", value: function visitThrowStmt(stmt, context) { return this.transformStmt(new ThrowStmt(stmt.error.visitExpression(this, context), stmt.sourceSpan, stmt.leadingComments), context); } }, { key: "visitAllStatements", value: function visitAllStatements(stmts, context) { var _this51 = this; return stmts.map(function (stmt) { return stmt.visitStatement(_this51, context); }); } }]); return AstTransformer; }(); var RecursiveAstVisitor = /*#__PURE__*/function () { function RecursiveAstVisitor() { _classCallCheck(this, RecursiveAstVisitor); } _createClass2(RecursiveAstVisitor, [{ key: "visitType", value: function visitType(ast, context) { return ast; } }, { key: "visitExpression", value: function visitExpression(ast, context) { if (ast.type) { ast.type.visitType(this, context); } return ast; } }, { key: "visitBuiltinType", value: function visitBuiltinType(type, context) { return this.visitType(type, context); } }, { key: "visitExpressionType", value: function visitExpressionType(type, context) { var _this52 = this; type.value.visitExpression(this, context); if (type.typeParams !== null) { type.typeParams.forEach(function (param) { return _this52.visitType(param, context); }); } return this.visitType(type, context); } }, { key: "visitArrayType", value: function visitArrayType(type, context) { return this.visitType(type, context); } }, { key: "visitMapType", value: function visitMapType(type, context) { return this.visitType(type, context); } }, { key: "visitWrappedNodeExpr", value: function visitWrappedNodeExpr(ast, context) { return ast; } }, { key: "visitTypeofExpr", value: function visitTypeofExpr(ast, context) { return this.visitExpression(ast, context); } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(ast, context) { return this.visitExpression(ast, context); } }, { key: "visitWriteVarExpr", value: function visitWriteVarExpr(ast, context) { ast.value.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitWriteKeyExpr", value: function visitWriteKeyExpr(ast, context) { ast.receiver.visitExpression(this, context); ast.index.visitExpression(this, context); ast.value.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitWritePropExpr", value: function visitWritePropExpr(ast, context) { ast.receiver.visitExpression(this, context); ast.value.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitInvokeMethodExpr", value: function visitInvokeMethodExpr(ast, context) { ast.receiver.visitExpression(this, context); this.visitAllExpressions(ast.args, context); return this.visitExpression(ast, context); } }, { key: "visitInvokeFunctionExpr", value: function visitInvokeFunctionExpr(ast, context) { ast.fn.visitExpression(this, context); this.visitAllExpressions(ast.args, context); return this.visitExpression(ast, context); } }, { key: "visitInstantiateExpr", value: function visitInstantiateExpr(ast, context) { ast.classExpr.visitExpression(this, context); this.visitAllExpressions(ast.args, context); return this.visitExpression(ast, context); } }, { key: "visitLiteralExpr", value: function visitLiteralExpr(ast, context) { return this.visitExpression(ast, context); } }, { key: "visitLocalizedString", value: function visitLocalizedString(ast, context) { return this.visitExpression(ast, context); } }, { key: "visitExternalExpr", value: function visitExternalExpr(ast, context) { var _this53 = this; if (ast.typeParams) { ast.typeParams.forEach(function (type) { return type.visitType(_this53, context); }); } return this.visitExpression(ast, context); } }, { key: "visitConditionalExpr", value: function visitConditionalExpr(ast, context) { ast.condition.visitExpression(this, context); ast.trueCase.visitExpression(this, context); ast.falseCase.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitNotExpr", value: function visitNotExpr(ast, context) { ast.condition.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitAssertNotNullExpr", value: function visitAssertNotNullExpr(ast, context) { ast.condition.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitCastExpr", value: function visitCastExpr(ast, context) { ast.value.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitFunctionExpr", value: function visitFunctionExpr(ast, context) { this.visitAllStatements(ast.statements, context); return this.visitExpression(ast, context); } }, { key: "visitUnaryOperatorExpr", value: function visitUnaryOperatorExpr(ast, context) { ast.expr.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitBinaryOperatorExpr", value: function visitBinaryOperatorExpr(ast, context) { ast.lhs.visitExpression(this, context); ast.rhs.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitReadPropExpr", value: function visitReadPropExpr(ast, context) { ast.receiver.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitReadKeyExpr", value: function visitReadKeyExpr(ast, context) { ast.receiver.visitExpression(this, context); ast.index.visitExpression(this, context); return this.visitExpression(ast, context); } }, { key: "visitLiteralArrayExpr", value: function visitLiteralArrayExpr(ast, context) { this.visitAllExpressions(ast.entries, context); return this.visitExpression(ast, context); } }, { key: "visitLiteralMapExpr", value: function visitLiteralMapExpr(ast, context) { var _this54 = this; ast.entries.forEach(function (entry) { return entry.value.visitExpression(_this54, context); }); return this.visitExpression(ast, context); } }, { key: "visitCommaExpr", value: function visitCommaExpr(ast, context) { this.visitAllExpressions(ast.parts, context); return this.visitExpression(ast, context); } }, { key: "visitAllExpressions", value: function visitAllExpressions(exprs, context) { var _this55 = this; exprs.forEach(function (expr) { return expr.visitExpression(_this55, context); }); } }, { key: "visitDeclareVarStmt", value: function visitDeclareVarStmt(stmt, context) { if (stmt.value) { stmt.value.visitExpression(this, context); } if (stmt.type) { stmt.type.visitType(this, context); } return stmt; } }, { key: "visitDeclareFunctionStmt", value: function visitDeclareFunctionStmt(stmt, context) { this.visitAllStatements(stmt.statements, context); if (stmt.type) { stmt.type.visitType(this, context); } return stmt; } }, { key: "visitExpressionStmt", value: function visitExpressionStmt(stmt, context) { stmt.expr.visitExpression(this, context); return stmt; } }, { key: "visitReturnStmt", value: function visitReturnStmt(stmt, context) { stmt.value.visitExpression(this, context); return stmt; } }, { key: "visitDeclareClassStmt", value: function visitDeclareClassStmt(stmt, context) { var _this56 = this; stmt.parent.visitExpression(this, context); stmt.getters.forEach(function (getter) { return _this56.visitAllStatements(getter.body, context); }); if (stmt.constructorMethod) { this.visitAllStatements(stmt.constructorMethod.body, context); } stmt.methods.forEach(function (method) { return _this56.visitAllStatements(method.body, context); }); return stmt; } }, { key: "visitIfStmt", value: function visitIfStmt(stmt, context) { stmt.condition.visitExpression(this, context); this.visitAllStatements(stmt.trueCase, context); this.visitAllStatements(stmt.falseCase, context); return stmt; } }, { key: "visitTryCatchStmt", value: function visitTryCatchStmt(stmt, context) { this.visitAllStatements(stmt.bodyStmts, context); this.visitAllStatements(stmt.catchStmts, context); return stmt; } }, { key: "visitThrowStmt", value: function visitThrowStmt(stmt, context) { stmt.error.visitExpression(this, context); return stmt; } }, { key: "visitAllStatements", value: function visitAllStatements(stmts, context) { var _this57 = this; stmts.forEach(function (stmt) { return stmt.visitStatement(_this57, context); }); } }]); return RecursiveAstVisitor; }(); function findReadVarNames(stmts) { var visitor = new _ReadVarVisitor(); visitor.visitAllStatements(stmts, null); return visitor.varNames; } var _ReadVarVisitor = /*#__PURE__*/function (_RecursiveAstVisitor) { _inherits(_ReadVarVisitor, _RecursiveAstVisitor); var _super49 = _createSuper(_ReadVarVisitor); function _ReadVarVisitor() { var _this58; _classCallCheck(this, _ReadVarVisitor); _this58 = _super49.apply(this, arguments); _this58.varNames = new Set(); return _this58; } _createClass2(_ReadVarVisitor, [{ key: "visitDeclareFunctionStmt", value: function visitDeclareFunctionStmt(stmt, context) { // Don't descend into nested functions return stmt; } }, { key: "visitDeclareClassStmt", value: function visitDeclareClassStmt(stmt, context) { // Don't descend into nested classes return stmt; } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(ast, context) { if (ast.name) { this.varNames.add(ast.name); } return null; } }]); return _ReadVarVisitor; }(RecursiveAstVisitor); function collectExternalReferences(stmts) { var visitor = new _FindExternalReferencesVisitor(); visitor.visitAllStatements(stmts, null); return visitor.externalReferences; } var _FindExternalReferencesVisitor = /*#__PURE__*/function (_RecursiveAstVisitor2) { _inherits(_FindExternalReferencesVisitor, _RecursiveAstVisitor2); var _super50 = _createSuper(_FindExternalReferencesVisitor); function _FindExternalReferencesVisitor() { var _this59; _classCallCheck(this, _FindExternalReferencesVisitor); _this59 = _super50.apply(this, arguments); _this59.externalReferences = []; return _this59; } _createClass2(_FindExternalReferencesVisitor, [{ key: "visitExternalExpr", value: function visitExternalExpr(e, context) { this.externalReferences.push(e.value); return _get(_getPrototypeOf(_FindExternalReferencesVisitor.prototype), "visitExternalExpr", this).call(this, e, context); } }]); return _FindExternalReferencesVisitor; }(RecursiveAstVisitor); function applySourceSpanToStatementIfNeeded(stmt, sourceSpan) { if (!sourceSpan) { return stmt; } var transformer = new _ApplySourceSpanTransformer(sourceSpan); return stmt.visitStatement(transformer, null); } function applySourceSpanToExpressionIfNeeded(expr, sourceSpan) { if (!sourceSpan) { return expr; } var transformer = new _ApplySourceSpanTransformer(sourceSpan); return expr.visitExpression(transformer, null); } var _ApplySourceSpanTransformer = /*#__PURE__*/function (_AstTransformer) { _inherits(_ApplySourceSpanTransformer, _AstTransformer); var _super51 = _createSuper(_ApplySourceSpanTransformer); function _ApplySourceSpanTransformer(sourceSpan) { var _this60; _classCallCheck(this, _ApplySourceSpanTransformer); _this60 = _super51.call(this); _this60.sourceSpan = sourceSpan; return _this60; } _createClass2(_ApplySourceSpanTransformer, [{ key: "_clone", value: function _clone(obj) { var clone = Object.create(obj.constructor.prototype); for (var _i5 = 0, _Object$keys = Object.keys(obj); _i5 < _Object$keys.length; _i5++) { var prop = _Object$keys[_i5]; clone[prop] = obj[prop]; } return clone; } }, { key: "transformExpr", value: function transformExpr(expr, context) { if (!expr.sourceSpan) { expr = this._clone(expr); expr.sourceSpan = this.sourceSpan; } return expr; } }, { key: "transformStmt", value: function transformStmt(stmt, context) { if (!stmt.sourceSpan) { stmt = this._clone(stmt); stmt.sourceSpan = this.sourceSpan; } return stmt; } }]); return _ApplySourceSpanTransformer; }(AstTransformer); function leadingComment(text) { var multiline = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var trailingNewline = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; return new LeadingComment(text, multiline, trailingNewline); } function jsDocComment() { var tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return new JSDocComment(tags); } function variable(name, type, sourceSpan) { return new ReadVarExpr(name, type, sourceSpan); } function importExpr(id) { var typeParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var sourceSpan = arguments.length > 2 ? arguments[2] : undefined; return new ExternalExpr(id, null, typeParams, sourceSpan); } function importType(id, typeParams, typeModifiers) { return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null; } function expressionType(expr, typeModifiers, typeParams) { return new ExpressionType(expr, typeModifiers, typeParams); } function typeofExpr(expr) { return new TypeofExpr(expr); } function literalArr(values, type, sourceSpan) { return new LiteralArrayExpr(values, type, sourceSpan); } function literalMap(values) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return new LiteralMapExpr(values.map(function (e) { return new LiteralMapEntry(e.key, e.value, e.quoted); }), type, null); } function unary(operator, expr, type, sourceSpan) { return new UnaryOperatorExpr(operator, expr, type, sourceSpan); } function not(expr, sourceSpan) { return new NotExpr(expr, sourceSpan); } function assertNotNull(expr, sourceSpan) { return new AssertNotNull(expr, sourceSpan); } function fn(params, body, type, sourceSpan, name) { return new FunctionExpr(params, body, type, sourceSpan, name); } function ifStmt(condition, thenClause, elseClause, sourceSpan, leadingComments) { return new IfStmt(condition, thenClause, elseClause, sourceSpan, leadingComments); } function literal(value, type, sourceSpan) { return new LiteralExpr(value, type, sourceSpan); } function localizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan) { return new LocalizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan); } function isNull(exp) { return exp instanceof LiteralExpr && exp.value === null; } /* * Serializes a `Tag` into a string. * Returns a string like " @foo {bar} baz" (note the leading whitespace before `@foo`). */ function tagToString(tag) { var out = ''; if (tag.tagName) { out += " @".concat(tag.tagName); } if (tag.text) { if (tag.text.match(/\/\*|\*\//)) { throw new Error('JSDoc text cannot contain "/*" and "*/"'); } out += ' ' + tag.text.replace(/@/g, '\\@'); } return out; } function serializeTags(tags) { if (tags.length === 0) return ''; if (tags.length === 1 && tags[0].tagName && !tags[0].text) { // The JSDOC comment is a single simple tag: e.g `/** @tagname */`. return "*".concat(tagToString(tags[0]), " "); } var out = '*\n'; var _iterator = _createForOfIteratorHelper(tags), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var tag = _step.value; out += ' *'; // If the tagToString is multi-line, insert " * " prefixes on lines. out += tagToString(tag).replace(/\n/g, '\n * '); out += '\n'; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } out += ' '; return out; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var DASH_CASE_REGEXP = /-+([a-z0-9])/g; function dashCaseToCamelCase(input) { return input.replace(DASH_CASE_REGEXP, function () { for (var _len3 = arguments.length, m = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { m[_key3] = arguments[_key3]; } return m[1].toUpperCase(); }); } function splitAtColon(input, defaultValues) { return _splitAt(input, ':', defaultValues); } function splitAtPeriod(input, defaultValues) { return _splitAt(input, '.', defaultValues); } function _splitAt(input, character, defaultValues) { var characterIndex = input.indexOf(character); if (characterIndex == -1) return defaultValues; return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()]; } function visitValue(value, visitor, context) { if (Array.isArray(value)) { return visitor.visitArray(value, context); } if (isStrictStringMap(value)) { return visitor.visitStringMap(value, context); } if (value == null || typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') { return visitor.visitPrimitive(value, context); } return visitor.visitOther(value, context); } function isDefined(val) { return val !== null && val !== undefined; } function noUndefined(val) { return val === undefined ? null : val; } var ValueTransformer = /*#__PURE__*/function () { function ValueTransformer() { _classCallCheck(this, ValueTransformer); } _createClass2(ValueTransformer, [{ key: "visitArray", value: function visitArray(arr, context) { var _this61 = this; return arr.map(function (value) { return visitValue(value, _this61, context); }); } }, { key: "visitStringMap", value: function visitStringMap(map, context) { var _this62 = this; var result = {}; Object.keys(map).forEach(function (key) { result[key] = visitValue(map[key], _this62, context); }); return result; } }, { key: "visitPrimitive", value: function visitPrimitive(value, context) { return value; } }, { key: "visitOther", value: function visitOther(value, context) { return value; } }]); return ValueTransformer; }(); var SyncAsync = { assertSync: function assertSync(value) { if (isPromise(value)) { throw new Error("Illegal state: value cannot be a promise"); } return value; }, then: function then(value, cb) { return isPromise(value) ? value.then(cb) : cb(value); }, all: function all(syncAsyncValues) { return syncAsyncValues.some(isPromise) ? Promise.all(syncAsyncValues) : syncAsyncValues; } }; function error(msg) { throw new Error("Internal Error: ".concat(msg)); } function syntaxError(msg, parseErrors) { var error = Error(msg); error[ERROR_SYNTAX_ERROR] = true; if (parseErrors) error[ERROR_PARSE_ERRORS] = parseErrors; return error; } var ERROR_SYNTAX_ERROR = 'ngSyntaxError'; var ERROR_PARSE_ERRORS = 'ngParseErrors'; function isSyntaxError(error) { return error[ERROR_SYNTAX_ERROR]; } function getParseErrors(error) { return error[ERROR_PARSE_ERRORS] || []; } // Escape characters that have a special meaning in Regular Expressions function escapeRegExp(s) { return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); } var STRING_MAP_PROTO = Object.getPrototypeOf({}); function isStrictStringMap(obj) { return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO; } function utf8Encode(str) { var encoded = []; for (var index = 0; index < str.length; index++) { var codePoint = str.charCodeAt(index); // decode surrogate // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > index + 1) { var low = str.charCodeAt(index + 1); if (low >= 0xdc00 && low <= 0xdfff) { index++; codePoint = (codePoint - 0xd800 << 10) + low - 0xdc00 + 0x10000; } } if (codePoint <= 0x7f) { encoded.push(codePoint); } else if (codePoint <= 0x7ff) { encoded.push(codePoint >> 6 & 0x1F | 0xc0, codePoint & 0x3f | 0x80); } else if (codePoint <= 0xffff) { encoded.push(codePoint >> 12 | 0xe0, codePoint >> 6 & 0x3f | 0x80, codePoint & 0x3f | 0x80); } else if (codePoint <= 0x1fffff) { encoded.push(codePoint >> 18 & 0x07 | 0xf0, codePoint >> 12 & 0x3f | 0x80, codePoint >> 6 & 0x3f | 0x80, codePoint & 0x3f | 0x80); } } return encoded; } function stringify(token) { if (typeof token === 'string') { return token; } if (Array.isArray(token)) { return '[' + token.map(stringify).join(', ') + ']'; } if (token == null) { return '' + token; } if (token.overriddenName) { return "".concat(token.overriddenName); } if (token.name) { return "".concat(token.name); } if (!token.toString) { return 'object'; } // WARNING: do not try to `JSON.stringify(token)` here // see https://github.com/angular/angular/issues/23440 var res = token.toString(); if (res == null) { return '' + res; } var newLineIndex = res.indexOf('\n'); return newLineIndex === -1 ? res : res.substring(0, newLineIndex); } /** * Lazily retrieves the reference value from a forwardRef. */ function resolveForwardRef(type) { if (typeof type === 'function' && type.hasOwnProperty('__forward_ref__')) { return type(); } else { return type; } } /** * Determine if the argument is shaped like a Promise */ function isPromise(obj) { // allow any Promise/A+ compliant thenable. // It's up to the caller to ensure that obj.then conforms to the spec return !!obj && typeof obj.then === 'function'; } var Version = /*#__PURE__*/_createClass2(function Version(full) { _classCallCheck(this, Version); this.full = full; var splits = full.split('.'); this.major = splits[0]; this.minor = splits[1]; this.patch = splits.slice(2).join('.'); }); var __window = typeof window !== 'undefined' && window; var __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && self; var __global = typeof global !== 'undefined' && global; // Check __global first, because in Node tests both __global and __window may be defined and _global // should be __global in that case. var _global = __global || __window || __self; function newArray(size, value) { var list = []; for (var i = 0; i < size; i++) { list.push(value); } return list; } /** * Partitions a given array into 2 arrays, based on a boolean value returned by the condition * function. * * @param arr Input array that should be partitioned * @param conditionFn Condition function that is called for each item in a given array and returns a * boolean value. */ function partitionArray(arr, conditionFn) { var truthy = []; var falsy = []; var _iterator2 = _createForOfIteratorHelper(arr), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var item = _step2.value; (conditionFn(item) ? truthy : falsy).push(item); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } return [truthy, falsy]; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var CONSTANT_PREFIX = '_c'; /** * `ConstantPool` tries to reuse literal factories when two or more literals are identical. * We determine whether literals are identical by creating a key out of their AST using the * `KeyVisitor`. This constant is used to replace dynamic expressions which can't be safely * converted into a key. E.g. given an expression `{foo: bar()}`, since we don't know what * the result of `bar` will be, we create a key that looks like `{foo: }`. Note * that we use a variable, rather than something like `null` in order to avoid collisions. */ var UNKNOWN_VALUE_KEY = variable(''); /** * Context to use when producing a key. * * This ensures we see the constant not the reference variable when producing * a key. */ var KEY_CONTEXT = {}; /** * Generally all primitive values are excluded from the `ConstantPool`, but there is an exclusion * for strings that reach a certain length threshold. This constant defines the length threshold for * strings. */ var POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS = 50; /** * A node that is a place-holder that allows the node to be replaced when the actual * node is known. * * This allows the constant pool to change an expression from a direct reference to * a constant to a shared constant. It returns a fix-up node that is later allowed to * change the referenced expression. */ var FixupExpression = /*#__PURE__*/function (_Expression25) { _inherits(FixupExpression, _Expression25); var _super52 = _createSuper(FixupExpression); function FixupExpression(resolved) { var _this63; _classCallCheck(this, FixupExpression); _this63 = _super52.call(this, resolved.type); _this63.resolved = resolved; _this63.original = resolved; return _this63; } _createClass2(FixupExpression, [{ key: "visitExpression", value: function visitExpression(visitor, context) { if (context === KEY_CONTEXT) { // When producing a key we want to traverse the constant not the // variable used to refer to it. return this.original.visitExpression(visitor, context); } else { return this.resolved.visitExpression(visitor, context); } } }, { key: "isEquivalent", value: function isEquivalent(e) { return e instanceof FixupExpression && this.resolved.isEquivalent(e.resolved); } }, { key: "isConstant", value: function isConstant() { return true; } }, { key: "fixup", value: function fixup(expression) { this.resolved = expression; this.shared = true; } }]); return FixupExpression; }(Expression); /** * A constant pool allows a code emitter to share constant in an output context. * * The constant pool also supports sharing access to ivy definitions references. */ var ConstantPool = /*#__PURE__*/function () { function ConstantPool() { var isClosureCompilerEnabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; _classCallCheck(this, ConstantPool); this.isClosureCompilerEnabled = isClosureCompilerEnabled; this.statements = []; this.literals = new Map(); this.literalFactories = new Map(); this.injectorDefinitions = new Map(); this.directiveDefinitions = new Map(); this.componentDefinitions = new Map(); this.pipeDefinitions = new Map(); this.nextNameIndex = 0; } _createClass2(ConstantPool, [{ key: "getConstLiteral", value: function getConstLiteral(literal, forceShared) { if (literal instanceof LiteralExpr && !isLongStringLiteral(literal) || literal instanceof FixupExpression) { // Do no put simple literals into the constant pool or try to produce a constant for a // reference to a constant. return literal; } var key = this.keyOf(literal); var fixup = this.literals.get(key); var newValue = false; if (!fixup) { fixup = new FixupExpression(literal); this.literals.set(key, fixup); newValue = true; } if (!newValue && !fixup.shared || newValue && forceShared) { // Replace the expression with a variable var name = this.freshName(); var definition; var usage; if (this.isClosureCompilerEnabled && isLongStringLiteral(literal)) { // For string literals, Closure will **always** inline the string at // **all** usages, duplicating it each time. For large strings, this // unnecessarily bloats bundle size. To work around this restriction, we // wrap the string in a function, and call that function for each usage. // This tricks Closure into using inline logic for functions instead of // string literals. Function calls are only inlined if the body is small // enough to be worth it. By doing this, very large strings will be // shared across multiple usages, rather than duplicating the string at // each usage site. // // const myStr = function() { return "very very very long string"; }; // const usage1 = myStr(); // const usage2 = myStr(); definition = variable(name).set(new FunctionExpr([], // Params. [// Statements. new ReturnStatement(literal)])); usage = variable(name).callFn([]); } else { // Just declare and use the variable directly, without a function call // indirection. This saves a few bytes and avoids an unncessary call. definition = variable(name).set(literal); usage = variable(name); } this.statements.push(definition.toDeclStmt(INFERRED_TYPE, [StmtModifier.Final])); fixup.fixup(usage); } return fixup; } }, { key: "getDefinition", value: function getDefinition(type, kind, ctx) { var forceShared = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; var definitions = this.definitionsOf(kind); var fixup = definitions.get(type); var newValue = false; if (!fixup) { var property = this.propertyNameOf(kind); fixup = new FixupExpression(ctx.importExpr(type).prop(property)); definitions.set(type, fixup); newValue = true; } if (!newValue && !fixup.shared || newValue && forceShared) { var name = this.freshName(); this.statements.push(variable(name).set(fixup.resolved).toDeclStmt(INFERRED_TYPE, [StmtModifier.Final])); fixup.fixup(variable(name)); } return fixup; } }, { key: "getLiteralFactory", value: function getLiteralFactory(literal) { // Create a pure function that builds an array of a mix of constant and variable expressions if (literal instanceof LiteralArrayExpr) { var argumentsForKey = literal.entries.map(function (e) { return e.isConstant() ? e : UNKNOWN_VALUE_KEY; }); var key = this.keyOf(literalArr(argumentsForKey)); return this._getLiteralFactory(key, literal.entries, function (entries) { return literalArr(entries); }); } else { var expressionForKey = literalMap(literal.entries.map(function (e) { return { key: e.key, value: e.value.isConstant() ? e.value : UNKNOWN_VALUE_KEY, quoted: e.quoted }; })); var _key4 = this.keyOf(expressionForKey); return this._getLiteralFactory(_key4, literal.entries.map(function (e) { return e.value; }), function (entries) { return literalMap(entries.map(function (value, index) { return { key: literal.entries[index].key, value: value, quoted: literal.entries[index].quoted }; })); }); } } }, { key: "_getLiteralFactory", value: function _getLiteralFactory(key, values, resultMap) { var _this64 = this; var literalFactory = this.literalFactories.get(key); var literalFactoryArguments = values.filter(function (e) { return !e.isConstant(); }); if (!literalFactory) { var resultExpressions = values.map(function (e, index) { return e.isConstant() ? _this64.getConstLiteral(e, true) : variable("a".concat(index)); }); var parameters = resultExpressions.filter(isVariable).map(function (e) { return new FnParam(e.name, DYNAMIC_TYPE); }); var pureFunctionDeclaration = fn(parameters, [new ReturnStatement(resultMap(resultExpressions))], INFERRED_TYPE); var name = this.freshName(); this.statements.push(variable(name).set(pureFunctionDeclaration).toDeclStmt(INFERRED_TYPE, [StmtModifier.Final])); literalFactory = variable(name); this.literalFactories.set(key, literalFactory); } return { literalFactory: literalFactory, literalFactoryArguments: literalFactoryArguments }; } /** * Produce a unique name. * * The name might be unique among different prefixes if any of the prefixes end in * a digit so the prefix should be a constant string (not based on user input) and * must not end in a digit. */ }, { key: "uniqueName", value: function uniqueName(prefix) { return "".concat(prefix).concat(this.nextNameIndex++); } }, { key: "definitionsOf", value: function definitionsOf(kind) { switch (kind) { case 2 /* Component */ : return this.componentDefinitions; case 1 /* Directive */ : return this.directiveDefinitions; case 0 /* Injector */ : return this.injectorDefinitions; case 3 /* Pipe */ : return this.pipeDefinitions; } error("Unknown definition kind ".concat(kind)); return this.componentDefinitions; } }, { key: "propertyNameOf", value: function propertyNameOf(kind) { switch (kind) { case 2 /* Component */ : return 'ɵcmp'; case 1 /* Directive */ : return 'ɵdir'; case 0 /* Injector */ : return 'ɵinj'; case 3 /* Pipe */ : return 'ɵpipe'; } error("Unknown definition kind ".concat(kind)); return ''; } }, { key: "freshName", value: function freshName() { return this.uniqueName(CONSTANT_PREFIX); } }, { key: "keyOf", value: function keyOf(expression) { return expression.visitExpression(new KeyVisitor(), KEY_CONTEXT); } }]); return ConstantPool; }(); /** * Visitor used to determine if 2 expressions are equivalent and can be shared in the * `ConstantPool`. * * When the id (string) generated by the visitor is equal, expressions are considered equivalent. */ var KeyVisitor = /*#__PURE__*/function () { function KeyVisitor() { _classCallCheck(this, KeyVisitor); this.visitWrappedNodeExpr = invalid; this.visitWriteVarExpr = invalid; this.visitWriteKeyExpr = invalid; this.visitWritePropExpr = invalid; this.visitInvokeMethodExpr = invalid; this.visitInvokeFunctionExpr = invalid; this.visitInstantiateExpr = invalid; this.visitConditionalExpr = invalid; this.visitNotExpr = invalid; this.visitAssertNotNullExpr = invalid; this.visitCastExpr = invalid; this.visitFunctionExpr = invalid; this.visitUnaryOperatorExpr = invalid; this.visitBinaryOperatorExpr = invalid; this.visitReadPropExpr = invalid; this.visitReadKeyExpr = invalid; this.visitCommaExpr = invalid; this.visitLocalizedString = invalid; } _createClass2(KeyVisitor, [{ key: "visitLiteralExpr", value: function visitLiteralExpr(ast) { return "".concat(typeof ast.value === 'string' ? '"' + ast.value + '"' : ast.value); } }, { key: "visitLiteralArrayExpr", value: function visitLiteralArrayExpr(ast, context) { var _this65 = this; return "[".concat(ast.entries.map(function (entry) { return entry.visitExpression(_this65, context); }).join(','), "]"); } }, { key: "visitLiteralMapExpr", value: function visitLiteralMapExpr(ast, context) { var _this66 = this; var mapKey = function mapKey(entry) { var quote = entry.quoted ? '"' : ''; return "".concat(quote).concat(entry.key).concat(quote); }; var mapEntry = function mapEntry(entry) { return "".concat(mapKey(entry), ":").concat(entry.value.visitExpression(_this66, context)); }; return "{".concat(ast.entries.map(mapEntry).join(',')); } }, { key: "visitExternalExpr", value: function visitExternalExpr(ast) { return ast.value.moduleName ? "EX:".concat(ast.value.moduleName, ":").concat(ast.value.name) : "EX:".concat(ast.value.runtime.name); } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(node) { return "VAR:".concat(node.name); } }, { key: "visitTypeofExpr", value: function visitTypeofExpr(node, context) { return "TYPEOF:".concat(node.expr.visitExpression(this, context)); } }]); return KeyVisitor; }(); function invalid(arg) { throw new Error("Invalid state: Visitor ".concat(this.constructor.name, " doesn't handle ").concat(arg.constructor.name)); } function isVariable(e) { return e instanceof ReadVarExpr; } function isLongStringLiteral(expr) { return expr instanceof LiteralExpr && typeof expr.value === 'string' && expr.value.length >= POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var CORE = '@angular/core'; var Identifiers = /*#__PURE__*/_createClass2(function Identifiers() { _classCallCheck(this, Identifiers); }); Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS = { name: 'ANALYZE_FOR_ENTRY_COMPONENTS', moduleName: CORE }; Identifiers.ElementRef = { name: 'ElementRef', moduleName: CORE }; Identifiers.NgModuleRef = { name: 'NgModuleRef', moduleName: CORE }; Identifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleName: CORE }; Identifiers.ChangeDetectorRef = { name: 'ChangeDetectorRef', moduleName: CORE }; Identifiers.QueryList = { name: 'QueryList', moduleName: CORE }; Identifiers.TemplateRef = { name: 'TemplateRef', moduleName: CORE }; Identifiers.Renderer2 = { name: 'Renderer2', moduleName: CORE }; Identifiers.CodegenComponentFactoryResolver = { name: 'ɵCodegenComponentFactoryResolver', moduleName: CORE }; Identifiers.ComponentFactoryResolver = { name: 'ComponentFactoryResolver', moduleName: CORE }; Identifiers.ComponentFactory = { name: 'ComponentFactory', moduleName: CORE }; Identifiers.ComponentRef = { name: 'ComponentRef', moduleName: CORE }; Identifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleName: CORE }; Identifiers.createModuleFactory = { name: 'ɵcmf', moduleName: CORE }; Identifiers.moduleDef = { name: 'ɵmod', moduleName: CORE }; Identifiers.moduleProviderDef = { name: 'ɵmpd', moduleName: CORE }; Identifiers.RegisterModuleFactoryFn = { name: 'ɵregisterModuleFactory', moduleName: CORE }; Identifiers.inject = { name: 'ɵɵinject', moduleName: CORE }; Identifiers.directiveInject = { name: 'ɵɵdirectiveInject', moduleName: CORE }; Identifiers.INJECTOR = { name: 'INJECTOR', moduleName: CORE }; Identifiers.Injector = { name: 'Injector', moduleName: CORE }; Identifiers.ɵɵdefineInjectable = { name: 'ɵɵdefineInjectable', moduleName: CORE }; Identifiers.InjectableDef = { name: 'ɵɵInjectableDef', moduleName: CORE }; Identifiers.ViewEncapsulation = { name: 'ViewEncapsulation', moduleName: CORE }; Identifiers.ChangeDetectionStrategy = { name: 'ChangeDetectionStrategy', moduleName: CORE }; Identifiers.SecurityContext = { name: 'SecurityContext', moduleName: CORE }; Identifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleName: CORE }; Identifiers.TRANSLATIONS_FORMAT = { name: 'TRANSLATIONS_FORMAT', moduleName: CORE }; Identifiers.inlineInterpolate = { name: 'ɵinlineInterpolate', moduleName: CORE }; Identifiers.interpolate = { name: 'ɵinterpolate', moduleName: CORE }; Identifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleName: CORE }; Identifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleName: CORE }; Identifiers.Renderer = { name: 'Renderer', moduleName: CORE }; Identifiers.viewDef = { name: 'ɵvid', moduleName: CORE }; Identifiers.elementDef = { name: 'ɵeld', moduleName: CORE }; Identifiers.anchorDef = { name: 'ɵand', moduleName: CORE }; Identifiers.textDef = { name: 'ɵted', moduleName: CORE }; Identifiers.directiveDef = { name: 'ɵdid', moduleName: CORE }; Identifiers.providerDef = { name: 'ɵprd', moduleName: CORE }; Identifiers.queryDef = { name: 'ɵqud', moduleName: CORE }; Identifiers.pureArrayDef = { name: 'ɵpad', moduleName: CORE }; Identifiers.pureObjectDef = { name: 'ɵpod', moduleName: CORE }; Identifiers.purePipeDef = { name: 'ɵppd', moduleName: CORE }; Identifiers.pipeDef = { name: 'ɵpid', moduleName: CORE }; Identifiers.nodeValue = { name: 'ɵnov', moduleName: CORE }; Identifiers.ngContentDef = { name: 'ɵncd', moduleName: CORE }; Identifiers.unwrapValue = { name: 'ɵunv', moduleName: CORE }; Identifiers.createRendererType2 = { name: 'ɵcrt', moduleName: CORE }; // type only Identifiers.RendererType2 = { name: 'RendererType2', moduleName: CORE }; // type only Identifiers.ViewDefinition = { name: 'ɵViewDefinition', moduleName: CORE }; Identifiers.createComponentFactory = { name: 'ɵccf', moduleName: CORE }; Identifiers.setClassMetadata = { name: 'ɵsetClassMetadata', moduleName: CORE }; function createTokenForReference(reference) { return { identifier: { reference: reference } }; } function createTokenForExternalReference(reflector, reference) { return createTokenForReference(reflector.resolveExternalReference(reference)); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A token representing the a reference to a static type. * * This token is unique for a filePath and name and can be used as a hash table key. */ var StaticSymbol = /*#__PURE__*/function () { function StaticSymbol(filePath, name, members) { _classCallCheck(this, StaticSymbol); this.filePath = filePath; this.name = name; this.members = members; } _createClass2(StaticSymbol, [{ key: "assertNoMembers", value: function assertNoMembers() { if (this.members.length) { throw new Error("Illegal state: symbol without members expected, but got ".concat(JSON.stringify(this), ".")); } } }]); return StaticSymbol; }(); /** * A cache of static symbol used by the StaticReflector to return the same symbol for the * same symbol values. */ var StaticSymbolCache = /*#__PURE__*/function () { function StaticSymbolCache() { _classCallCheck(this, StaticSymbolCache); this.cache = new Map(); } _createClass2(StaticSymbolCache, [{ key: "get", value: function get(declarationFile, name, members) { members = members || []; var memberSuffix = members.length ? ".".concat(members.join('.')) : ''; var key = "\"".concat(declarationFile, "\".").concat(name).concat(memberSuffix); var result = this.cache.get(key); if (!result) { result = new StaticSymbol(declarationFile, name, members); this.cache.set(key, result); } return result; } }]); return StaticSymbolCache; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // group 0: "[prop] or (event) or @trigger" // group 1: "prop" from "[prop]" // group 2: "event" from "(event)" // group 3: "@trigger" from "@trigger" var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/; function sanitizeIdentifier(name) { return name.replace(/\W/g, '_'); } var _anonymousTypeIndex = 0; function identifierName(compileIdentifier) { if (!compileIdentifier || !compileIdentifier.reference) { return null; } var ref = compileIdentifier.reference; if (ref instanceof StaticSymbol) { return ref.name; } if (ref['__anonymousType']) { return ref['__anonymousType']; } var identifier = stringify(ref); if (identifier.indexOf('(') >= 0) { // case: anonymous functions! identifier = "anonymous_".concat(_anonymousTypeIndex++); ref['__anonymousType'] = identifier; } else { identifier = sanitizeIdentifier(identifier); } return identifier; } function identifierModuleUrl(compileIdentifier) { var ref = compileIdentifier.reference; if (ref instanceof StaticSymbol) { return ref.filePath; } // Runtime type return "./".concat(stringify(ref)); } function viewClassName(compType, embeddedTemplateIndex) { return "View_".concat(identifierName({ reference: compType }), "_").concat(embeddedTemplateIndex); } function rendererTypeName(compType) { return "RenderType_".concat(identifierName({ reference: compType })); } function hostViewClassName(compType) { return "HostView_".concat(identifierName({ reference: compType })); } function componentFactoryName(compType) { return "".concat(identifierName({ reference: compType }), "NgFactory"); } var CompileSummaryKind; (function (CompileSummaryKind) { CompileSummaryKind[CompileSummaryKind["Pipe"] = 0] = "Pipe"; CompileSummaryKind[CompileSummaryKind["Directive"] = 1] = "Directive"; CompileSummaryKind[CompileSummaryKind["NgModule"] = 2] = "NgModule"; CompileSummaryKind[CompileSummaryKind["Injectable"] = 3] = "Injectable"; })(CompileSummaryKind || (CompileSummaryKind = {})); function tokenName(token) { return token.value != null ? sanitizeIdentifier(token.value) : identifierName(token.identifier); } function tokenReference(token) { if (token.identifier != null) { return token.identifier.reference; } else { return token.value; } } /** * Metadata about a stylesheet */ var CompileStylesheetMetadata = /*#__PURE__*/_createClass2(function CompileStylesheetMetadata() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, moduleUrl = _ref3.moduleUrl, styles = _ref3.styles, styleUrls = _ref3.styleUrls; _classCallCheck(this, CompileStylesheetMetadata); this.moduleUrl = moduleUrl || null; this.styles = _normalizeArray(styles); this.styleUrls = _normalizeArray(styleUrls); }); /** * Metadata regarding compilation of a template. */ var CompileTemplateMetadata = /*#__PURE__*/function () { function CompileTemplateMetadata(_ref4) { var encapsulation = _ref4.encapsulation, template = _ref4.template, templateUrl = _ref4.templateUrl, htmlAst = _ref4.htmlAst, styles = _ref4.styles, styleUrls = _ref4.styleUrls, externalStylesheets = _ref4.externalStylesheets, animations = _ref4.animations, ngContentSelectors = _ref4.ngContentSelectors, interpolation = _ref4.interpolation, isInline = _ref4.isInline, preserveWhitespaces = _ref4.preserveWhitespaces; _classCallCheck(this, CompileTemplateMetadata); this.encapsulation = encapsulation; this.template = template; this.templateUrl = templateUrl; this.htmlAst = htmlAst; this.styles = _normalizeArray(styles); this.styleUrls = _normalizeArray(styleUrls); this.externalStylesheets = _normalizeArray(externalStylesheets); this.animations = animations ? flatten(animations) : []; this.ngContentSelectors = ngContentSelectors || []; if (interpolation && interpolation.length != 2) { throw new Error("'interpolation' should have a start and an end symbol."); } this.interpolation = interpolation; this.isInline = isInline; this.preserveWhitespaces = preserveWhitespaces; } _createClass2(CompileTemplateMetadata, [{ key: "toSummary", value: function toSummary() { return { ngContentSelectors: this.ngContentSelectors, encapsulation: this.encapsulation, styles: this.styles, animations: this.animations }; } }]); return CompileTemplateMetadata; }(); /** * Metadata regarding compilation of a directive. */ var CompileDirectiveMetadata = /*#__PURE__*/function () { function CompileDirectiveMetadata(_ref5) { var isHost = _ref5.isHost, type = _ref5.type, isComponent = _ref5.isComponent, selector = _ref5.selector, exportAs = _ref5.exportAs, changeDetection = _ref5.changeDetection, inputs = _ref5.inputs, outputs = _ref5.outputs, hostListeners = _ref5.hostListeners, hostProperties = _ref5.hostProperties, hostAttributes = _ref5.hostAttributes, providers = _ref5.providers, viewProviders = _ref5.viewProviders, queries = _ref5.queries, guards = _ref5.guards, viewQueries = _ref5.viewQueries, entryComponents = _ref5.entryComponents, template = _ref5.template, componentViewType = _ref5.componentViewType, rendererType = _ref5.rendererType, componentFactory = _ref5.componentFactory; _classCallCheck(this, CompileDirectiveMetadata); this.isHost = !!isHost; this.type = type; this.isComponent = isComponent; this.selector = selector; this.exportAs = exportAs; this.changeDetection = changeDetection; this.inputs = inputs; this.outputs = outputs; this.hostListeners = hostListeners; this.hostProperties = hostProperties; this.hostAttributes = hostAttributes; this.providers = _normalizeArray(providers); this.viewProviders = _normalizeArray(viewProviders); this.queries = _normalizeArray(queries); this.guards = guards; this.viewQueries = _normalizeArray(viewQueries); this.entryComponents = _normalizeArray(entryComponents); this.template = template; this.componentViewType = componentViewType; this.rendererType = rendererType; this.componentFactory = componentFactory; } _createClass2(CompileDirectiveMetadata, [{ key: "toSummary", value: function toSummary() { return { summaryKind: CompileSummaryKind.Directive, type: this.type, isComponent: this.isComponent, selector: this.selector, exportAs: this.exportAs, inputs: this.inputs, outputs: this.outputs, hostListeners: this.hostListeners, hostProperties: this.hostProperties, hostAttributes: this.hostAttributes, providers: this.providers, viewProviders: this.viewProviders, queries: this.queries, guards: this.guards, viewQueries: this.viewQueries, entryComponents: this.entryComponents, changeDetection: this.changeDetection, template: this.template && this.template.toSummary(), componentViewType: this.componentViewType, rendererType: this.rendererType, componentFactory: this.componentFactory }; } }], [{ key: "create", value: function create(_ref6) { var isHost = _ref6.isHost, type = _ref6.type, isComponent = _ref6.isComponent, selector = _ref6.selector, exportAs = _ref6.exportAs, changeDetection = _ref6.changeDetection, inputs = _ref6.inputs, outputs = _ref6.outputs, host = _ref6.host, providers = _ref6.providers, viewProviders = _ref6.viewProviders, queries = _ref6.queries, guards = _ref6.guards, viewQueries = _ref6.viewQueries, entryComponents = _ref6.entryComponents, template = _ref6.template, componentViewType = _ref6.componentViewType, rendererType = _ref6.rendererType, componentFactory = _ref6.componentFactory; var hostListeners = {}; var hostProperties = {}; var hostAttributes = {}; if (host != null) { Object.keys(host).forEach(function (key) { var value = host[key]; var matches = key.match(HOST_REG_EXP); if (matches === null) { hostAttributes[key] = value; } else if (matches[1] != null) { hostProperties[matches[1]] = value; } else if (matches[2] != null) { hostListeners[matches[2]] = value; } }); } var inputsMap = {}; if (inputs != null) { inputs.forEach(function (bindConfig) { // canonical syntax: `dirProp: elProp` // if there is no `:`, use dirProp = elProp var parts = splitAtColon(bindConfig, [bindConfig, bindConfig]); inputsMap[parts[0]] = parts[1]; }); } var outputsMap = {}; if (outputs != null) { outputs.forEach(function (bindConfig) { // canonical syntax: `dirProp: elProp` // if there is no `:`, use dirProp = elProp var parts = splitAtColon(bindConfig, [bindConfig, bindConfig]); outputsMap[parts[0]] = parts[1]; }); } return new CompileDirectiveMetadata({ isHost: isHost, type: type, isComponent: !!isComponent, selector: selector, exportAs: exportAs, changeDetection: changeDetection, inputs: inputsMap, outputs: outputsMap, hostListeners: hostListeners, hostProperties: hostProperties, hostAttributes: hostAttributes, providers: providers, viewProviders: viewProviders, queries: queries, guards: guards, viewQueries: viewQueries, entryComponents: entryComponents, template: template, componentViewType: componentViewType, rendererType: rendererType, componentFactory: componentFactory }); } }]); return CompileDirectiveMetadata; }(); var CompilePipeMetadata = /*#__PURE__*/function () { function CompilePipeMetadata(_ref7) { var type = _ref7.type, name = _ref7.name, pure = _ref7.pure; _classCallCheck(this, CompilePipeMetadata); this.type = type; this.name = name; this.pure = !!pure; } _createClass2(CompilePipeMetadata, [{ key: "toSummary", value: function toSummary() { return { summaryKind: CompileSummaryKind.Pipe, type: this.type, name: this.name, pure: this.pure }; } }]); return CompilePipeMetadata; }(); var CompileShallowModuleMetadata = /*#__PURE__*/_createClass2(function CompileShallowModuleMetadata() { _classCallCheck(this, CompileShallowModuleMetadata); }); /** * Metadata regarding compilation of a module. */ var CompileNgModuleMetadata = /*#__PURE__*/function () { function CompileNgModuleMetadata(_ref8) { var type = _ref8.type, providers = _ref8.providers, declaredDirectives = _ref8.declaredDirectives, exportedDirectives = _ref8.exportedDirectives, declaredPipes = _ref8.declaredPipes, exportedPipes = _ref8.exportedPipes, entryComponents = _ref8.entryComponents, bootstrapComponents = _ref8.bootstrapComponents, importedModules = _ref8.importedModules, exportedModules = _ref8.exportedModules, schemas = _ref8.schemas, transitiveModule = _ref8.transitiveModule, id = _ref8.id; _classCallCheck(this, CompileNgModuleMetadata); this.type = type || null; this.declaredDirectives = _normalizeArray(declaredDirectives); this.exportedDirectives = _normalizeArray(exportedDirectives); this.declaredPipes = _normalizeArray(declaredPipes); this.exportedPipes = _normalizeArray(exportedPipes); this.providers = _normalizeArray(providers); this.entryComponents = _normalizeArray(entryComponents); this.bootstrapComponents = _normalizeArray(bootstrapComponents); this.importedModules = _normalizeArray(importedModules); this.exportedModules = _normalizeArray(exportedModules); this.schemas = _normalizeArray(schemas); this.id = id || null; this.transitiveModule = transitiveModule || null; } _createClass2(CompileNgModuleMetadata, [{ key: "toSummary", value: function toSummary() { var module = this.transitiveModule; return { summaryKind: CompileSummaryKind.NgModule, type: this.type, entryComponents: module.entryComponents, providers: module.providers, modules: module.modules, exportedDirectives: module.exportedDirectives, exportedPipes: module.exportedPipes }; } }]); return CompileNgModuleMetadata; }(); var TransitiveCompileNgModuleMetadata = /*#__PURE__*/function () { function TransitiveCompileNgModuleMetadata() { _classCallCheck(this, TransitiveCompileNgModuleMetadata); this.directivesSet = new Set(); this.directives = []; this.exportedDirectivesSet = new Set(); this.exportedDirectives = []; this.pipesSet = new Set(); this.pipes = []; this.exportedPipesSet = new Set(); this.exportedPipes = []; this.modulesSet = new Set(); this.modules = []; this.entryComponentsSet = new Set(); this.entryComponents = []; this.providers = []; } _createClass2(TransitiveCompileNgModuleMetadata, [{ key: "addProvider", value: function addProvider(provider, module) { this.providers.push({ provider: provider, module: module }); } }, { key: "addDirective", value: function addDirective(id) { if (!this.directivesSet.has(id.reference)) { this.directivesSet.add(id.reference); this.directives.push(id); } } }, { key: "addExportedDirective", value: function addExportedDirective(id) { if (!this.exportedDirectivesSet.has(id.reference)) { this.exportedDirectivesSet.add(id.reference); this.exportedDirectives.push(id); } } }, { key: "addPipe", value: function addPipe(id) { if (!this.pipesSet.has(id.reference)) { this.pipesSet.add(id.reference); this.pipes.push(id); } } }, { key: "addExportedPipe", value: function addExportedPipe(id) { if (!this.exportedPipesSet.has(id.reference)) { this.exportedPipesSet.add(id.reference); this.exportedPipes.push(id); } } }, { key: "addModule", value: function addModule(id) { if (!this.modulesSet.has(id.reference)) { this.modulesSet.add(id.reference); this.modules.push(id); } } }, { key: "addEntryComponent", value: function addEntryComponent(ec) { if (!this.entryComponentsSet.has(ec.componentType)) { this.entryComponentsSet.add(ec.componentType); this.entryComponents.push(ec); } } }]); return TransitiveCompileNgModuleMetadata; }(); function _normalizeArray(obj) { return obj || []; } var ProviderMeta = /*#__PURE__*/_createClass2(function ProviderMeta(token, _ref9) { var useClass = _ref9.useClass, useValue = _ref9.useValue, useExisting = _ref9.useExisting, useFactory = _ref9.useFactory, deps = _ref9.deps, multi = _ref9.multi; _classCallCheck(this, ProviderMeta); this.token = token; this.useClass = useClass || null; this.useValue = useValue; this.useExisting = useExisting; this.useFactory = useFactory || null; this.dependencies = deps || null; this.multi = !!multi; }); function flatten(list) { return list.reduce(function (flat, item) { var flatItem = Array.isArray(item) ? flatten(item) : item; return flat.concat(flatItem); }, []); } function jitSourceUrl(url) { // Note: We need 3 "/" so that ng shows up as a separate domain // in the chrome dev tools. return url.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/, 'ng:///'); } function templateSourceUrl(ngModuleType, compMeta, templateMeta) { var url; if (templateMeta.isInline) { if (compMeta.type.reference instanceof StaticSymbol) { // Note: a .ts file might contain multiple components with inline templates, // so we need to give them unique urls, as these will be used for sourcemaps. url = "".concat(compMeta.type.reference.filePath, ".").concat(compMeta.type.reference.name, ".html"); } else { url = "".concat(identifierName(ngModuleType), "/").concat(identifierName(compMeta.type), ".html"); } } else { url = templateMeta.templateUrl; } return compMeta.type.reference instanceof StaticSymbol ? url : jitSourceUrl(url); } function sharedStylesheetJitUrl(meta, id) { var pathParts = meta.moduleUrl.split(/\/\\/g); var baseName = pathParts[pathParts.length - 1]; return jitSourceUrl("css/".concat(id).concat(baseName, ".ngstyle.js")); } function ngModuleJitUrl(moduleMeta) { return jitSourceUrl("".concat(identifierName(moduleMeta.type), "/module.ngfactory.js")); } function templateJitUrl(ngModuleType, compMeta) { return jitSourceUrl("".concat(identifierName(ngModuleType), "/").concat(identifierName(compMeta.type), ".ngfactory.js")); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var CORE$1 = '@angular/core'; var Identifiers$1 = /*#__PURE__*/_createClass2(function Identifiers$1() { _classCallCheck(this, Identifiers$1); }); /* Methods */ Identifiers$1.NEW_METHOD = 'factory'; Identifiers$1.TRANSFORM_METHOD = 'transform'; Identifiers$1.PATCH_DEPS = 'patchedDeps'; /* Instructions */ Identifiers$1.namespaceHTML = { name: 'ɵɵnamespaceHTML', moduleName: CORE$1 }; Identifiers$1.namespaceMathML = { name: 'ɵɵnamespaceMathML', moduleName: CORE$1 }; Identifiers$1.namespaceSVG = { name: 'ɵɵnamespaceSVG', moduleName: CORE$1 }; Identifiers$1.element = { name: 'ɵɵelement', moduleName: CORE$1 }; Identifiers$1.elementStart = { name: 'ɵɵelementStart', moduleName: CORE$1 }; Identifiers$1.elementEnd = { name: 'ɵɵelementEnd', moduleName: CORE$1 }; Identifiers$1.advance = { name: 'ɵɵadvance', moduleName: CORE$1 }; Identifiers$1.syntheticHostProperty = { name: 'ɵɵsyntheticHostProperty', moduleName: CORE$1 }; Identifiers$1.syntheticHostListener = { name: 'ɵɵsyntheticHostListener', moduleName: CORE$1 }; Identifiers$1.attribute = { name: 'ɵɵattribute', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate1 = { name: 'ɵɵattributeInterpolate1', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate2 = { name: 'ɵɵattributeInterpolate2', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate3 = { name: 'ɵɵattributeInterpolate3', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate4 = { name: 'ɵɵattributeInterpolate4', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate5 = { name: 'ɵɵattributeInterpolate5', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate6 = { name: 'ɵɵattributeInterpolate6', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate7 = { name: 'ɵɵattributeInterpolate7', moduleName: CORE$1 }; Identifiers$1.attributeInterpolate8 = { name: 'ɵɵattributeInterpolate8', moduleName: CORE$1 }; Identifiers$1.attributeInterpolateV = { name: 'ɵɵattributeInterpolateV', moduleName: CORE$1 }; Identifiers$1.classProp = { name: 'ɵɵclassProp', moduleName: CORE$1 }; Identifiers$1.elementContainerStart = { name: 'ɵɵelementContainerStart', moduleName: CORE$1 }; Identifiers$1.elementContainerEnd = { name: 'ɵɵelementContainerEnd', moduleName: CORE$1 }; Identifiers$1.elementContainer = { name: 'ɵɵelementContainer', moduleName: CORE$1 }; Identifiers$1.styleMap = { name: 'ɵɵstyleMap', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate1 = { name: 'ɵɵstyleMapInterpolate1', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate2 = { name: 'ɵɵstyleMapInterpolate2', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate3 = { name: 'ɵɵstyleMapInterpolate3', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate4 = { name: 'ɵɵstyleMapInterpolate4', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate5 = { name: 'ɵɵstyleMapInterpolate5', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate6 = { name: 'ɵɵstyleMapInterpolate6', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate7 = { name: 'ɵɵstyleMapInterpolate7', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolate8 = { name: 'ɵɵstyleMapInterpolate8', moduleName: CORE$1 }; Identifiers$1.styleMapInterpolateV = { name: 'ɵɵstyleMapInterpolateV', moduleName: CORE$1 }; Identifiers$1.classMap = { name: 'ɵɵclassMap', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate1 = { name: 'ɵɵclassMapInterpolate1', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate2 = { name: 'ɵɵclassMapInterpolate2', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate3 = { name: 'ɵɵclassMapInterpolate3', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate4 = { name: 'ɵɵclassMapInterpolate4', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate5 = { name: 'ɵɵclassMapInterpolate5', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate6 = { name: 'ɵɵclassMapInterpolate6', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate7 = { name: 'ɵɵclassMapInterpolate7', moduleName: CORE$1 }; Identifiers$1.classMapInterpolate8 = { name: 'ɵɵclassMapInterpolate8', moduleName: CORE$1 }; Identifiers$1.classMapInterpolateV = { name: 'ɵɵclassMapInterpolateV', moduleName: CORE$1 }; Identifiers$1.styleProp = { name: 'ɵɵstyleProp', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate1 = { name: 'ɵɵstylePropInterpolate1', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate2 = { name: 'ɵɵstylePropInterpolate2', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate3 = { name: 'ɵɵstylePropInterpolate3', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate4 = { name: 'ɵɵstylePropInterpolate4', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate5 = { name: 'ɵɵstylePropInterpolate5', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate6 = { name: 'ɵɵstylePropInterpolate6', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate7 = { name: 'ɵɵstylePropInterpolate7', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolate8 = { name: 'ɵɵstylePropInterpolate8', moduleName: CORE$1 }; Identifiers$1.stylePropInterpolateV = { name: 'ɵɵstylePropInterpolateV', moduleName: CORE$1 }; Identifiers$1.nextContext = { name: 'ɵɵnextContext', moduleName: CORE$1 }; Identifiers$1.templateCreate = { name: 'ɵɵtemplate', moduleName: CORE$1 }; Identifiers$1.text = { name: 'ɵɵtext', moduleName: CORE$1 }; Identifiers$1.enableBindings = { name: 'ɵɵenableBindings', moduleName: CORE$1 }; Identifiers$1.disableBindings = { name: 'ɵɵdisableBindings', moduleName: CORE$1 }; Identifiers$1.getCurrentView = { name: 'ɵɵgetCurrentView', moduleName: CORE$1 }; Identifiers$1.textInterpolate = { name: 'ɵɵtextInterpolate', moduleName: CORE$1 }; Identifiers$1.textInterpolate1 = { name: 'ɵɵtextInterpolate1', moduleName: CORE$1 }; Identifiers$1.textInterpolate2 = { name: 'ɵɵtextInterpolate2', moduleName: CORE$1 }; Identifiers$1.textInterpolate3 = { name: 'ɵɵtextInterpolate3', moduleName: CORE$1 }; Identifiers$1.textInterpolate4 = { name: 'ɵɵtextInterpolate4', moduleName: CORE$1 }; Identifiers$1.textInterpolate5 = { name: 'ɵɵtextInterpolate5', moduleName: CORE$1 }; Identifiers$1.textInterpolate6 = { name: 'ɵɵtextInterpolate6', moduleName: CORE$1 }; Identifiers$1.textInterpolate7 = { name: 'ɵɵtextInterpolate7', moduleName: CORE$1 }; Identifiers$1.textInterpolate8 = { name: 'ɵɵtextInterpolate8', moduleName: CORE$1 }; Identifiers$1.textInterpolateV = { name: 'ɵɵtextInterpolateV', moduleName: CORE$1 }; Identifiers$1.restoreView = { name: 'ɵɵrestoreView', moduleName: CORE$1 }; Identifiers$1.pureFunction0 = { name: 'ɵɵpureFunction0', moduleName: CORE$1 }; Identifiers$1.pureFunction1 = { name: 'ɵɵpureFunction1', moduleName: CORE$1 }; Identifiers$1.pureFunction2 = { name: 'ɵɵpureFunction2', moduleName: CORE$1 }; Identifiers$1.pureFunction3 = { name: 'ɵɵpureFunction3', moduleName: CORE$1 }; Identifiers$1.pureFunction4 = { name: 'ɵɵpureFunction4', moduleName: CORE$1 }; Identifiers$1.pureFunction5 = { name: 'ɵɵpureFunction5', moduleName: CORE$1 }; Identifiers$1.pureFunction6 = { name: 'ɵɵpureFunction6', moduleName: CORE$1 }; Identifiers$1.pureFunction7 = { name: 'ɵɵpureFunction7', moduleName: CORE$1 }; Identifiers$1.pureFunction8 = { name: 'ɵɵpureFunction8', moduleName: CORE$1 }; Identifiers$1.pureFunctionV = { name: 'ɵɵpureFunctionV', moduleName: CORE$1 }; Identifiers$1.pipeBind1 = { name: 'ɵɵpipeBind1', moduleName: CORE$1 }; Identifiers$1.pipeBind2 = { name: 'ɵɵpipeBind2', moduleName: CORE$1 }; Identifiers$1.pipeBind3 = { name: 'ɵɵpipeBind3', moduleName: CORE$1 }; Identifiers$1.pipeBind4 = { name: 'ɵɵpipeBind4', moduleName: CORE$1 }; Identifiers$1.pipeBindV = { name: 'ɵɵpipeBindV', moduleName: CORE$1 }; Identifiers$1.hostProperty = { name: 'ɵɵhostProperty', moduleName: CORE$1 }; Identifiers$1.property = { name: 'ɵɵproperty', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate = { name: 'ɵɵpropertyInterpolate', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate1 = { name: 'ɵɵpropertyInterpolate1', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate2 = { name: 'ɵɵpropertyInterpolate2', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate3 = { name: 'ɵɵpropertyInterpolate3', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate4 = { name: 'ɵɵpropertyInterpolate4', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate5 = { name: 'ɵɵpropertyInterpolate5', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate6 = { name: 'ɵɵpropertyInterpolate6', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate7 = { name: 'ɵɵpropertyInterpolate7', moduleName: CORE$1 }; Identifiers$1.propertyInterpolate8 = { name: 'ɵɵpropertyInterpolate8', moduleName: CORE$1 }; Identifiers$1.propertyInterpolateV = { name: 'ɵɵpropertyInterpolateV', moduleName: CORE$1 }; Identifiers$1.i18n = { name: 'ɵɵi18n', moduleName: CORE$1 }; Identifiers$1.i18nAttributes = { name: 'ɵɵi18nAttributes', moduleName: CORE$1 }; Identifiers$1.i18nExp = { name: 'ɵɵi18nExp', moduleName: CORE$1 }; Identifiers$1.i18nStart = { name: 'ɵɵi18nStart', moduleName: CORE$1 }; Identifiers$1.i18nEnd = { name: 'ɵɵi18nEnd', moduleName: CORE$1 }; Identifiers$1.i18nApply = { name: 'ɵɵi18nApply', moduleName: CORE$1 }; Identifiers$1.i18nPostprocess = { name: 'ɵɵi18nPostprocess', moduleName: CORE$1 }; Identifiers$1.pipe = { name: 'ɵɵpipe', moduleName: CORE$1 }; Identifiers$1.projection = { name: 'ɵɵprojection', moduleName: CORE$1 }; Identifiers$1.projectionDef = { name: 'ɵɵprojectionDef', moduleName: CORE$1 }; Identifiers$1.reference = { name: 'ɵɵreference', moduleName: CORE$1 }; Identifiers$1.inject = { name: 'ɵɵinject', moduleName: CORE$1 }; Identifiers$1.injectAttribute = { name: 'ɵɵinjectAttribute', moduleName: CORE$1 }; Identifiers$1.injectPipeChangeDetectorRef = { name: 'ɵɵinjectPipeChangeDetectorRef', moduleName: CORE$1 }; Identifiers$1.directiveInject = { name: 'ɵɵdirectiveInject', moduleName: CORE$1 }; Identifiers$1.invalidFactory = { name: 'ɵɵinvalidFactory', moduleName: CORE$1 }; Identifiers$1.invalidFactoryDep = { name: 'ɵɵinvalidFactoryDep', moduleName: CORE$1 }; Identifiers$1.templateRefExtractor = { name: 'ɵɵtemplateRefExtractor', moduleName: CORE$1 }; Identifiers$1.resolveWindow = { name: 'ɵɵresolveWindow', moduleName: CORE$1 }; Identifiers$1.resolveDocument = { name: 'ɵɵresolveDocument', moduleName: CORE$1 }; Identifiers$1.resolveBody = { name: 'ɵɵresolveBody', moduleName: CORE$1 }; Identifiers$1.defineComponent = { name: 'ɵɵdefineComponent', moduleName: CORE$1 }; Identifiers$1.setComponentScope = { name: 'ɵɵsetComponentScope', moduleName: CORE$1 }; Identifiers$1.ComponentDefWithMeta = { name: 'ɵɵComponentDefWithMeta', moduleName: CORE$1 }; Identifiers$1.FactoryDef = { name: 'ɵɵFactoryDef', moduleName: CORE$1 }; Identifiers$1.defineDirective = { name: 'ɵɵdefineDirective', moduleName: CORE$1 }; Identifiers$1.DirectiveDefWithMeta = { name: 'ɵɵDirectiveDefWithMeta', moduleName: CORE$1 }; Identifiers$1.InjectorDef = { name: 'ɵɵInjectorDef', moduleName: CORE$1 }; Identifiers$1.defineInjector = { name: 'ɵɵdefineInjector', moduleName: CORE$1 }; Identifiers$1.NgModuleDefWithMeta = { name: 'ɵɵNgModuleDefWithMeta', moduleName: CORE$1 }; Identifiers$1.ModuleWithProviders = { name: 'ModuleWithProviders', moduleName: CORE$1 }; Identifiers$1.defineNgModule = { name: 'ɵɵdefineNgModule', moduleName: CORE$1 }; Identifiers$1.setNgModuleScope = { name: 'ɵɵsetNgModuleScope', moduleName: CORE$1 }; Identifiers$1.PipeDefWithMeta = { name: 'ɵɵPipeDefWithMeta', moduleName: CORE$1 }; Identifiers$1.definePipe = { name: 'ɵɵdefinePipe', moduleName: CORE$1 }; Identifiers$1.queryRefresh = { name: 'ɵɵqueryRefresh', moduleName: CORE$1 }; Identifiers$1.viewQuery = { name: 'ɵɵviewQuery', moduleName: CORE$1 }; Identifiers$1.staticViewQuery = { name: 'ɵɵstaticViewQuery', moduleName: CORE$1 }; Identifiers$1.staticContentQuery = { name: 'ɵɵstaticContentQuery', moduleName: CORE$1 }; Identifiers$1.loadQuery = { name: 'ɵɵloadQuery', moduleName: CORE$1 }; Identifiers$1.contentQuery = { name: 'ɵɵcontentQuery', moduleName: CORE$1 }; Identifiers$1.NgOnChangesFeature = { name: 'ɵɵNgOnChangesFeature', moduleName: CORE$1 }; Identifiers$1.InheritDefinitionFeature = { name: 'ɵɵInheritDefinitionFeature', moduleName: CORE$1 }; Identifiers$1.CopyDefinitionFeature = { name: 'ɵɵCopyDefinitionFeature', moduleName: CORE$1 }; Identifiers$1.ProvidersFeature = { name: 'ɵɵProvidersFeature', moduleName: CORE$1 }; Identifiers$1.listener = { name: 'ɵɵlistener', moduleName: CORE$1 }; Identifiers$1.getFactoryOf = { name: 'ɵɵgetFactoryOf', moduleName: CORE$1 }; Identifiers$1.getInheritedFactory = { name: 'ɵɵgetInheritedFactory', moduleName: CORE$1 }; // sanitization-related functions Identifiers$1.sanitizeHtml = { name: 'ɵɵsanitizeHtml', moduleName: CORE$1 }; Identifiers$1.sanitizeStyle = { name: 'ɵɵsanitizeStyle', moduleName: CORE$1 }; Identifiers$1.sanitizeResourceUrl = { name: 'ɵɵsanitizeResourceUrl', moduleName: CORE$1 }; Identifiers$1.sanitizeScript = { name: 'ɵɵsanitizeScript', moduleName: CORE$1 }; Identifiers$1.sanitizeUrl = { name: 'ɵɵsanitizeUrl', moduleName: CORE$1 }; Identifiers$1.sanitizeUrlOrResourceUrl = { name: 'ɵɵsanitizeUrlOrResourceUrl', moduleName: CORE$1 }; Identifiers$1.trustConstantHtml = { name: 'ɵɵtrustConstantHtml', moduleName: CORE$1 }; Identifiers$1.trustConstantScript = { name: 'ɵɵtrustConstantScript', moduleName: CORE$1 }; Identifiers$1.trustConstantResourceUrl = { name: 'ɵɵtrustConstantResourceUrl', moduleName: CORE$1 }; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Convert an object map with `Expression` values into a `LiteralMapExpr`. */ function mapToMapExpression(map) { var result = Object.keys(map).map(function (key) { return { key: key, // The assertion here is because really TypeScript doesn't allow us to express that if the // key is present, it will have a value, but this is true in reality. value: map[key], quoted: false }; }); return literalMap(result); } /** * Convert metadata into an `Expression` in the given `OutputContext`. * * This operation will handle arrays, references to symbols, or literal `null` or `undefined`. */ function convertMetaToOutput(meta, ctx) { if (Array.isArray(meta)) { return literalArr(meta.map(function (entry) { return convertMetaToOutput(entry, ctx); })); } if (meta instanceof StaticSymbol) { return ctx.importExpr(meta); } if (meta == null) { return literal(meta); } throw new Error("Internal error: Unsupported or unknown metadata: ".concat(meta)); } function typeWithParameters(type, numParams) { if (numParams === 0) { return expressionType(type); } var params = []; for (var i = 0; i < numParams; i++) { params.push(DYNAMIC_TYPE); } return expressionType(type, undefined, params); } var ANIMATE_SYMBOL_PREFIX = '@'; function prepareSyntheticPropertyName(name) { return "".concat(ANIMATE_SYMBOL_PREFIX).concat(name); } function prepareSyntheticListenerName(name, phase) { return "".concat(ANIMATE_SYMBOL_PREFIX).concat(name, ".").concat(phase); } function isSyntheticPropertyOrListener(name) { return name.charAt(0) == ANIMATE_SYMBOL_PREFIX; } function getSyntheticPropertyName(name) { // this will strip out listener phase values... // @foo.start => @foo var i = name.indexOf('.'); name = i > 0 ? name.substring(0, i) : name; if (name.charAt(0) !== ANIMATE_SYMBOL_PREFIX) { name = ANIMATE_SYMBOL_PREFIX + name; } return name; } function prepareSyntheticListenerFunctionName(name, phase) { return "animation_".concat(name, "_").concat(phase); } function jitOnlyGuardedExpression(expr) { var ngJitMode = new ExternalExpr({ name: 'ngJitMode', moduleName: null }); var jitFlagNotDefined = new BinaryOperatorExpr(BinaryOperator.Identical, new TypeofExpr(ngJitMode), literal('undefined')); var jitFlagUndefinedOrTrue = new BinaryOperatorExpr(BinaryOperator.Or, jitFlagNotDefined, ngJitMode, /* type */ undefined, /* sourceSpan */ undefined, true); return new BinaryOperatorExpr(BinaryOperator.And, jitFlagUndefinedOrTrue, expr); } function wrapReference(value) { var wrapped = new WrappedNodeExpr(value); return { value: wrapped, type: wrapped }; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var Text = /*#__PURE__*/function () { function Text(value, sourceSpan) { _classCallCheck(this, Text); this.value = value; this.sourceSpan = sourceSpan; } _createClass2(Text, [{ key: "visit", value: function visit(visitor) { return visitor.visitText(this); } }]); return Text; }(); var BoundText = /*#__PURE__*/function () { function BoundText(value, sourceSpan, i18n) { _classCallCheck(this, BoundText); this.value = value; this.sourceSpan = sourceSpan; this.i18n = i18n; } _createClass2(BoundText, [{ key: "visit", value: function visit(visitor) { return visitor.visitBoundText(this); } }]); return BoundText; }(); var TextAttribute = /*#__PURE__*/function () { function TextAttribute(name, value, sourceSpan, valueSpan, i18n) { _classCallCheck(this, TextAttribute); this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.valueSpan = valueSpan; this.i18n = i18n; } _createClass2(TextAttribute, [{ key: "visit", value: function visit(visitor) { return visitor.visitTextAttribute(this); } }]); return TextAttribute; }(); var BoundAttribute = /*#__PURE__*/function () { function BoundAttribute(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan, i18n) { _classCallCheck(this, BoundAttribute); this.name = name; this.type = type; this.securityContext = securityContext; this.value = value; this.unit = unit; this.sourceSpan = sourceSpan; this.keySpan = keySpan; this.valueSpan = valueSpan; this.i18n = i18n; } _createClass2(BoundAttribute, [{ key: "visit", value: function visit(visitor) { return visitor.visitBoundAttribute(this); } }], [{ key: "fromBoundElementProperty", value: function fromBoundElementProperty(prop, i18n) { if (prop.keySpan === undefined) { throw new Error("Unexpected state: keySpan must be defined for bound attributes but was not for ".concat(prop.name, ": ").concat(prop.sourceSpan)); } return new BoundAttribute(prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan, prop.keySpan, prop.valueSpan, i18n); } }]); return BoundAttribute; }(); var BoundEvent = /*#__PURE__*/function () { function BoundEvent(name, type, handler, target, phase, sourceSpan, handlerSpan) { _classCallCheck(this, BoundEvent); this.name = name; this.type = type; this.handler = handler; this.target = target; this.phase = phase; this.sourceSpan = sourceSpan; this.handlerSpan = handlerSpan; } _createClass2(BoundEvent, [{ key: "visit", value: function visit(visitor) { return visitor.visitBoundEvent(this); } }], [{ key: "fromParsedEvent", value: function fromParsedEvent(event) { var target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; var phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; return new BoundEvent(event.name, event.type, event.handler, target, phase, event.sourceSpan, event.handlerSpan); } }]); return BoundEvent; }(); var Element = /*#__PURE__*/function () { function Element(name, attributes, inputs, outputs, children, references, sourceSpan, startSourceSpan, endSourceSpan, i18n) { _classCallCheck(this, Element); this.name = name; this.attributes = attributes; this.inputs = inputs; this.outputs = outputs; this.children = children; this.references = references; this.sourceSpan = sourceSpan; this.startSourceSpan = startSourceSpan; this.endSourceSpan = endSourceSpan; this.i18n = i18n; } _createClass2(Element, [{ key: "visit", value: function visit(visitor) { return visitor.visitElement(this); } }]); return Element; }(); var Template = /*#__PURE__*/function () { function Template(tagName, attributes, inputs, outputs, templateAttrs, children, references, variables, sourceSpan, startSourceSpan, endSourceSpan, i18n) { _classCallCheck(this, Template); this.tagName = tagName; this.attributes = attributes; this.inputs = inputs; this.outputs = outputs; this.templateAttrs = templateAttrs; this.children = children; this.references = references; this.variables = variables; this.sourceSpan = sourceSpan; this.startSourceSpan = startSourceSpan; this.endSourceSpan = endSourceSpan; this.i18n = i18n; } _createClass2(Template, [{ key: "visit", value: function visit(visitor) { return visitor.visitTemplate(this); } }]); return Template; }(); var Content = /*#__PURE__*/function () { function Content(selector, attributes, sourceSpan, i18n) { _classCallCheck(this, Content); this.selector = selector; this.attributes = attributes; this.sourceSpan = sourceSpan; this.i18n = i18n; this.name = 'ng-content'; } _createClass2(Content, [{ key: "visit", value: function visit(visitor) { return visitor.visitContent(this); } }]); return Content; }(); var Variable = /*#__PURE__*/function () { function Variable(name, value, sourceSpan, keySpan, valueSpan) { _classCallCheck(this, Variable); this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.keySpan = keySpan; this.valueSpan = valueSpan; } _createClass2(Variable, [{ key: "visit", value: function visit(visitor) { return visitor.visitVariable(this); } }]); return Variable; }(); var Reference = /*#__PURE__*/function () { function Reference(name, value, sourceSpan, valueSpan) { _classCallCheck(this, Reference); this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.valueSpan = valueSpan; } _createClass2(Reference, [{ key: "visit", value: function visit(visitor) { return visitor.visitReference(this); } }]); return Reference; }(); var Icu = /*#__PURE__*/function () { function Icu(vars, placeholders, sourceSpan, i18n) { _classCallCheck(this, Icu); this.vars = vars; this.placeholders = placeholders; this.sourceSpan = sourceSpan; this.i18n = i18n; } _createClass2(Icu, [{ key: "visit", value: function visit(visitor) { return visitor.visitIcu(this); } }]); return Icu; }(); var NullVisitor = /*#__PURE__*/function () { function NullVisitor() { _classCallCheck(this, NullVisitor); } _createClass2(NullVisitor, [{ key: "visitElement", value: function visitElement(element) {} }, { key: "visitTemplate", value: function visitTemplate(template) {} }, { key: "visitContent", value: function visitContent(content) {} }, { key: "visitVariable", value: function visitVariable(variable) {} }, { key: "visitReference", value: function visitReference(reference) {} }, { key: "visitTextAttribute", value: function visitTextAttribute(attribute) {} }, { key: "visitBoundAttribute", value: function visitBoundAttribute(attribute) {} }, { key: "visitBoundEvent", value: function visitBoundEvent(attribute) {} }, { key: "visitText", value: function visitText(text) {} }, { key: "visitBoundText", value: function visitBoundText(text) {} }, { key: "visitIcu", value: function visitIcu(icu) {} }]); return NullVisitor; }(); var RecursiveVisitor = /*#__PURE__*/function () { function RecursiveVisitor() { _classCallCheck(this, RecursiveVisitor); } _createClass2(RecursiveVisitor, [{ key: "visitElement", value: function visitElement(element) { visitAll(this, element.attributes); visitAll(this, element.children); visitAll(this, element.references); } }, { key: "visitTemplate", value: function visitTemplate(template) { visitAll(this, template.attributes); visitAll(this, template.children); visitAll(this, template.references); visitAll(this, template.variables); } }, { key: "visitContent", value: function visitContent(content) {} }, { key: "visitVariable", value: function visitVariable(variable) {} }, { key: "visitReference", value: function visitReference(reference) {} }, { key: "visitTextAttribute", value: function visitTextAttribute(attribute) {} }, { key: "visitBoundAttribute", value: function visitBoundAttribute(attribute) {} }, { key: "visitBoundEvent", value: function visitBoundEvent(attribute) {} }, { key: "visitText", value: function visitText(text) {} }, { key: "visitBoundText", value: function visitBoundText(text) {} }, { key: "visitIcu", value: function visitIcu(icu) {} }]); return RecursiveVisitor; }(); var TransformVisitor = /*#__PURE__*/function () { function TransformVisitor() { _classCallCheck(this, TransformVisitor); } _createClass2(TransformVisitor, [{ key: "visitElement", value: function visitElement(element) { var newAttributes = transformAll(this, element.attributes); var newInputs = transformAll(this, element.inputs); var newOutputs = transformAll(this, element.outputs); var newChildren = transformAll(this, element.children); var newReferences = transformAll(this, element.references); if (newAttributes != element.attributes || newInputs != element.inputs || newOutputs != element.outputs || newChildren != element.children || newReferences != element.references) { return new Element(element.name, newAttributes, newInputs, newOutputs, newChildren, newReferences, element.sourceSpan, element.startSourceSpan, element.endSourceSpan); } return element; } }, { key: "visitTemplate", value: function visitTemplate(template) { var newAttributes = transformAll(this, template.attributes); var newInputs = transformAll(this, template.inputs); var newOutputs = transformAll(this, template.outputs); var newTemplateAttrs = transformAll(this, template.templateAttrs); var newChildren = transformAll(this, template.children); var newReferences = transformAll(this, template.references); var newVariables = transformAll(this, template.variables); if (newAttributes != template.attributes || newInputs != template.inputs || newOutputs != template.outputs || newTemplateAttrs != template.templateAttrs || newChildren != template.children || newReferences != template.references || newVariables != template.variables) { return new Template(template.tagName, newAttributes, newInputs, newOutputs, newTemplateAttrs, newChildren, newReferences, newVariables, template.sourceSpan, template.startSourceSpan, template.endSourceSpan); } return template; } }, { key: "visitContent", value: function visitContent(content) { return content; } }, { key: "visitVariable", value: function visitVariable(variable) { return variable; } }, { key: "visitReference", value: function visitReference(reference) { return reference; } }, { key: "visitTextAttribute", value: function visitTextAttribute(attribute) { return attribute; } }, { key: "visitBoundAttribute", value: function visitBoundAttribute(attribute) { return attribute; } }, { key: "visitBoundEvent", value: function visitBoundEvent(attribute) { return attribute; } }, { key: "visitText", value: function visitText(text) { return text; } }, { key: "visitBoundText", value: function visitBoundText(text) { return text; } }, { key: "visitIcu", value: function visitIcu(icu) { return icu; } }]); return TransformVisitor; }(); function visitAll(visitor, nodes) { var result = []; if (visitor.visit) { var _iterator3 = _createForOfIteratorHelper(nodes), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var node = _step3.value; var newNode = visitor.visit(node) || node.visit(visitor); } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } } else { var _iterator4 = _createForOfIteratorHelper(nodes), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var _node = _step4.value; var _newNode = _node.visit(visitor); if (_newNode) { result.push(_newNode); } } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } } return result; } function transformAll(visitor, nodes) { var result = []; var changed = false; var _iterator5 = _createForOfIteratorHelper(nodes), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var node = _step5.value; var newNode = node.visit(visitor); if (newNode) { result.push(newNode); } changed = changed || newNode != node; } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } return changed ? result : nodes; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var Message = /*#__PURE__*/_createClass2( /** * @param nodes message AST * @param placeholders maps placeholder names to static content and their source spans * @param placeholderToMessage maps placeholder names to messages (used for nested ICU messages) * @param meaning * @param description * @param customId */ function Message(nodes, placeholders, placeholderToMessage, meaning, description, customId) { _classCallCheck(this, Message); this.nodes = nodes; this.placeholders = placeholders; this.placeholderToMessage = placeholderToMessage; this.meaning = meaning; this.description = description; this.customId = customId; this.id = this.customId; /** The ids to use if there are no custom id and if `i18nLegacyMessageIdFormat` is not empty */ this.legacyIds = []; if (nodes.length) { this.sources = [{ filePath: nodes[0].sourceSpan.start.file.url, startLine: nodes[0].sourceSpan.start.line + 1, startCol: nodes[0].sourceSpan.start.col + 1, endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1, endCol: nodes[0].sourceSpan.start.col + 1 }]; } else { this.sources = []; } }); var Text$1 = /*#__PURE__*/function () { function Text$1(value, sourceSpan) { _classCallCheck(this, Text$1); this.value = value; this.sourceSpan = sourceSpan; } _createClass2(Text$1, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitText(this, context); } }]); return Text$1; }(); // TODO(vicb): do we really need this node (vs an array) ? var Container = /*#__PURE__*/function () { function Container(children, sourceSpan) { _classCallCheck(this, Container); this.children = children; this.sourceSpan = sourceSpan; } _createClass2(Container, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitContainer(this, context); } }]); return Container; }(); var Icu$1 = /*#__PURE__*/function () { function Icu$1(expression, type, cases, sourceSpan) { _classCallCheck(this, Icu$1); this.expression = expression; this.type = type; this.cases = cases; this.sourceSpan = sourceSpan; } _createClass2(Icu$1, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitIcu(this, context); } }]); return Icu$1; }(); var TagPlaceholder = /*#__PURE__*/function () { function TagPlaceholder(tag, attrs, startName, closeName, children, isVoid, // TODO sourceSpan should cover all (we need a startSourceSpan and endSourceSpan) sourceSpan, startSourceSpan, endSourceSpan) { _classCallCheck(this, TagPlaceholder); this.tag = tag; this.attrs = attrs; this.startName = startName; this.closeName = closeName; this.children = children; this.isVoid = isVoid; this.sourceSpan = sourceSpan; this.startSourceSpan = startSourceSpan; this.endSourceSpan = endSourceSpan; } _createClass2(TagPlaceholder, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitTagPlaceholder(this, context); } }]); return TagPlaceholder; }(); var Placeholder = /*#__PURE__*/function () { function Placeholder(value, name, sourceSpan) { _classCallCheck(this, Placeholder); this.value = value; this.name = name; this.sourceSpan = sourceSpan; } _createClass2(Placeholder, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitPlaceholder(this, context); } }]); return Placeholder; }(); var IcuPlaceholder = /*#__PURE__*/function () { function IcuPlaceholder(value, name, sourceSpan) { _classCallCheck(this, IcuPlaceholder); this.value = value; this.name = name; this.sourceSpan = sourceSpan; } _createClass2(IcuPlaceholder, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitIcuPlaceholder(this, context); } }]); return IcuPlaceholder; }(); // Clone the AST var CloneVisitor = /*#__PURE__*/function () { function CloneVisitor() { _classCallCheck(this, CloneVisitor); } _createClass2(CloneVisitor, [{ key: "visitText", value: function visitText(text, context) { return new Text$1(text.value, text.sourceSpan); } }, { key: "visitContainer", value: function visitContainer(container, context) { var _this67 = this; var children = container.children.map(function (n) { return n.visit(_this67, context); }); return new Container(children, container.sourceSpan); } }, { key: "visitIcu", value: function visitIcu(icu, context) { var _this68 = this; var cases = {}; Object.keys(icu.cases).forEach(function (key) { return cases[key] = icu.cases[key].visit(_this68, context); }); var msg = new Icu$1(icu.expression, icu.type, cases, icu.sourceSpan); msg.expressionPlaceholder = icu.expressionPlaceholder; return msg; } }, { key: "visitTagPlaceholder", value: function visitTagPlaceholder(ph, context) { var _this69 = this; var children = ph.children.map(function (n) { return n.visit(_this69, context); }); return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan); } }, { key: "visitPlaceholder", value: function visitPlaceholder(ph, context) { return new Placeholder(ph.value, ph.name, ph.sourceSpan); } }, { key: "visitIcuPlaceholder", value: function visitIcuPlaceholder(ph, context) { return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan); } }]); return CloneVisitor; }(); // Visit all the nodes recursively var RecurseVisitor = /*#__PURE__*/function () { function RecurseVisitor() { _classCallCheck(this, RecurseVisitor); } _createClass2(RecurseVisitor, [{ key: "visitText", value: function visitText(text, context) {} }, { key: "visitContainer", value: function visitContainer(container, context) { var _this70 = this; container.children.forEach(function (child) { return child.visit(_this70); }); } }, { key: "visitIcu", value: function visitIcu(icu, context) { var _this71 = this; Object.keys(icu.cases).forEach(function (k) { icu.cases[k].visit(_this71); }); } }, { key: "visitTagPlaceholder", value: function visitTagPlaceholder(ph, context) { var _this72 = this; ph.children.forEach(function (child) { return child.visit(_this72); }); } }, { key: "visitPlaceholder", value: function visitPlaceholder(ph, context) {} }, { key: "visitIcuPlaceholder", value: function visitIcuPlaceholder(ph, context) {} }]); return RecurseVisitor; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Represents a big integer using a buffer of its individual digits, with the least significant * digit stored at the beginning of the array (little endian). * * For performance reasons, each instance is mutable. The addition operation can be done in-place * to reduce memory pressure of allocation for the digits array. */ var BigInteger = /*#__PURE__*/function () { /** * Creates a big integer using its individual digits in little endian storage. */ function BigInteger(digits) { _classCallCheck(this, BigInteger); this.digits = digits; } _createClass2(BigInteger, [{ key: "clone", value: /** * Creates a clone of this instance. */ function clone() { return new BigInteger(this.digits.slice()); } /** * Returns a new big integer with the sum of `this` and `other` as its value. This does not mutate * `this` but instead returns a new instance, unlike `addToSelf`. */ }, { key: "add", value: function add(other) { var result = this.clone(); result.addToSelf(other); return result; } /** * Adds `other` to the instance itself, thereby mutating its value. */ }, { key: "addToSelf", value: function addToSelf(other) { var maxNrOfDigits = Math.max(this.digits.length, other.digits.length); var carry = 0; for (var i = 0; i < maxNrOfDigits; i++) { var digitSum = carry; if (i < this.digits.length) { digitSum += this.digits[i]; } if (i < other.digits.length) { digitSum += other.digits[i]; } if (digitSum >= 10) { this.digits[i] = digitSum - 10; carry = 1; } else { this.digits[i] = digitSum; carry = 0; } } // Apply a remaining carry if needed. if (carry > 0) { this.digits[maxNrOfDigits] = 1; } } /** * Builds the decimal string representation of the big integer. As this is stored in * little endian, the digits are concatenated in reverse order. */ }, { key: "toString", value: function toString() { var res = ''; for (var i = this.digits.length - 1; i >= 0; i--) { res += this.digits[i]; } return res; } }], [{ key: "zero", value: function zero() { return new BigInteger([0]); } }, { key: "one", value: function one() { return new BigInteger([1]); } }]); return BigInteger; }(); /** * Represents a big integer which is optimized for multiplication operations, as its power-of-twos * are memoized. See `multiplyBy()` for details on the multiplication algorithm. */ var BigIntForMultiplication = /*#__PURE__*/function () { function BigIntForMultiplication(value) { _classCallCheck(this, BigIntForMultiplication); this.powerOfTwos = [value]; } /** * Returns the big integer itself. */ _createClass2(BigIntForMultiplication, [{ key: "getValue", value: function getValue() { return this.powerOfTwos[0]; } /** * Computes the value for `num * b`, where `num` is a JS number and `b` is a big integer. The * value for `b` is represented by a storage model that is optimized for this computation. * * This operation is implemented in N(log2(num)) by continuous halving of the number, where the * least-significant bit (LSB) is tested in each iteration. If the bit is set, the bit's index is * used as exponent into the power-of-two multiplication of `b`. * * As an example, consider the multiplication num=42, b=1337. In binary 42 is 0b00101010 and the * algorithm unrolls into the following iterations: * * Iteration | num | LSB | b * 2^iter | Add? | product * -----------|------------|------|------------|------|-------- * 0 | 0b00101010 | 0 | 1337 | No | 0 * 1 | 0b00010101 | 1 | 2674 | Yes | 2674 * 2 | 0b00001010 | 0 | 5348 | No | 2674 * 3 | 0b00000101 | 1 | 10696 | Yes | 13370 * 4 | 0b00000010 | 0 | 21392 | No | 13370 * 5 | 0b00000001 | 1 | 42784 | Yes | 56154 * 6 | 0b00000000 | 0 | 85568 | No | 56154 * * The computed product of 56154 is indeed the correct result. * * The `BigIntForMultiplication` representation for a big integer provides memoized access to the * power-of-two values to reduce the workload in computing those values. */ }, { key: "multiplyBy", value: function multiplyBy(num) { var product = BigInteger.zero(); this.multiplyByAndAddTo(num, product); return product; } /** * See `multiplyBy()` for details. This function allows for the computed product to be added * directly to the provided result big integer. */ }, { key: "multiplyByAndAddTo", value: function multiplyByAndAddTo(num, result) { for (var exponent = 0; num !== 0; num = num >>> 1, exponent++) { if (num & 1) { var value = this.getMultipliedByPowerOfTwo(exponent); result.addToSelf(value); } } } /** * Computes and memoizes the big integer value for `this.number * 2^exponent`. */ }, { key: "getMultipliedByPowerOfTwo", value: function getMultipliedByPowerOfTwo(exponent) { // Compute the powers up until the requested exponent, where each value is computed from its // predecessor. This is simple as `this.number * 2^(exponent - 1)` only has to be doubled (i.e. // added to itself) to reach `this.number * 2^exponent`. for (var i = this.powerOfTwos.length; i <= exponent; i++) { var previousPower = this.powerOfTwos[i - 1]; this.powerOfTwos[i] = previousPower.add(previousPower); } return this.powerOfTwos[exponent]; } }]); return BigIntForMultiplication; }(); /** * Represents an exponentiation operation for the provided base, of which exponents are computed and * memoized. The results are represented by a `BigIntForMultiplication` which is tailored for * multiplication operations by memoizing the power-of-twos. This effectively results in a matrix * representation that is lazily computed upon request. */ var BigIntExponentiation = /*#__PURE__*/function () { function BigIntExponentiation(base) { _classCallCheck(this, BigIntExponentiation); this.base = base; this.exponents = [new BigIntForMultiplication(BigInteger.one())]; } /** * Compute the value for `this.base^exponent`, resulting in a big integer that is optimized for * further multiplication operations. */ _createClass2(BigIntExponentiation, [{ key: "toThePowerOf", value: function toThePowerOf(exponent) { // Compute the results up until the requested exponent, where every value is computed from its // predecessor. This is because `this.base^(exponent - 1)` only has to be multiplied by `base` // to reach `this.base^exponent`. for (var i = this.exponents.length; i <= exponent; i++) { var value = this.exponents[i - 1].multiplyBy(this.base); this.exponents[i] = new BigIntForMultiplication(value); } return this.exponents[exponent]; } }]); return BigIntExponentiation; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Return the message id or compute it using the XLIFF1 digest. */ function _digest2(message) { return message.id || computeDigest(message); } /** * Compute the message id using the XLIFF1 digest. */ function computeDigest(message) { return sha1(serializeNodes(message.nodes).join('') + "[".concat(message.meaning, "]")); } /** * Return the message id or compute it using the XLIFF2/XMB/$localize digest. */ function decimalDigest(message) { return message.id || computeDecimalDigest(message); } /** * Compute the message id using the XLIFF2/XMB/$localize digest. */ function computeDecimalDigest(message) { var visitor = new _SerializerIgnoreIcuExpVisitor(); var parts = message.nodes.map(function (a) { return a.visit(visitor, null); }); return computeMsgId(parts.join(''), message.meaning); } /** * Serialize the i18n ast to something xml-like in order to generate an UID. * * The visitor is also used in the i18n parser tests * * @internal */ var _SerializerVisitor = /*#__PURE__*/function () { function _SerializerVisitor() { _classCallCheck(this, _SerializerVisitor); } _createClass2(_SerializerVisitor, [{ key: "visitText", value: function visitText(text, context) { return text.value; } }, { key: "visitContainer", value: function visitContainer(container, context) { var _this73 = this; return "[".concat(container.children.map(function (child) { return child.visit(_this73); }).join(', '), "]"); } }, { key: "visitIcu", value: function visitIcu(icu, context) { var _this74 = this; var strCases = Object.keys(icu.cases).map(function (k) { return "".concat(k, " {").concat(icu.cases[k].visit(_this74), "}"); }); return "{".concat(icu.expression, ", ").concat(icu.type, ", ").concat(strCases.join(', '), "}"); } }, { key: "visitTagPlaceholder", value: function visitTagPlaceholder(ph, context) { var _this75 = this; return ph.isVoid ? "") : "").concat(ph.children.map(function (child) { return child.visit(_this75); }).join(', '), ""); } }, { key: "visitPlaceholder", value: function visitPlaceholder(ph, context) { return ph.value ? "").concat(ph.value, "") : ""); } }, { key: "visitIcuPlaceholder", value: function visitIcuPlaceholder(ph, context) { return "").concat(ph.value.visit(this), ""); } }]); return _SerializerVisitor; }(); var serializerVisitor = new _SerializerVisitor(); function serializeNodes(nodes) { return nodes.map(function (a) { return a.visit(serializerVisitor, null); }); } /** * Serialize the i18n ast to something xml-like in order to generate an UID. * * Ignore the ICU expressions so that message IDs stays identical if only the expression changes. * * @internal */ var _SerializerIgnoreIcuExpVisitor = /*#__PURE__*/function (_SerializerVisitor2) { _inherits(_SerializerIgnoreIcuExpVisitor, _SerializerVisitor2); var _super53 = _createSuper(_SerializerIgnoreIcuExpVisitor); function _SerializerIgnoreIcuExpVisitor() { _classCallCheck(this, _SerializerIgnoreIcuExpVisitor); return _super53.apply(this, arguments); } _createClass2(_SerializerIgnoreIcuExpVisitor, [{ key: "visitIcu", value: function visitIcu(icu, context) { var _this76 = this; var strCases = Object.keys(icu.cases).map(function (k) { return "".concat(k, " {").concat(icu.cases[k].visit(_this76), "}"); }); // Do not take the expression into account return "{".concat(icu.type, ", ").concat(strCases.join(', '), "}"); } }]); return _SerializerIgnoreIcuExpVisitor; }(_SerializerVisitor); /** * Compute the SHA1 of the given string * * see https://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf * * WARNING: this function has not been designed not tested with security in mind. * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT. */ function sha1(str) { var utf8 = utf8Encode(str); var words32 = bytesToWords32(utf8, Endian.Big); var len = utf8.length * 8; var w = newArray(80); var a = 0x67452301, b = 0xefcdab89, c = 0x98badcfe, d = 0x10325476, e = 0xc3d2e1f0; words32[len >> 5] |= 0x80 << 24 - len % 32; words32[(len + 64 >> 9 << 4) + 15] = len; for (var i = 0; i < words32.length; i += 16) { var h0 = a, h1 = b, h2 = c, h3 = d, h4 = e; for (var j = 0; j < 80; j++) { if (j < 16) { w[j] = words32[i + j]; } else { w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); } var fkVal = fk(j, b, c, d); var f = fkVal[0]; var k = fkVal[1]; var temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); e = d; d = c; c = rol32(b, 30); b = a; a = temp; } a = add32(a, h0); b = add32(b, h1); c = add32(c, h2); d = add32(d, h3); e = add32(e, h4); } return bytesToHexString(words32ToByteString([a, b, c, d, e])); } function fk(index, b, c, d) { if (index < 20) { return [b & c | ~b & d, 0x5a827999]; } if (index < 40) { return [b ^ c ^ d, 0x6ed9eba1]; } if (index < 60) { return [b & c | b & d | c & d, 0x8f1bbcdc]; } return [b ^ c ^ d, 0xca62c1d6]; } /** * Compute the fingerprint of the given string * * The output is 64 bit number encoded as a decimal string * * based on: * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java */ function fingerprint(str) { var utf8 = utf8Encode(str); var hi = hash32(utf8, 0); var lo = hash32(utf8, 102072); if (hi == 0 && (lo == 0 || lo == 1)) { hi = hi ^ 0x130f9bef; lo = lo ^ -0x6b5f56d8; } return [hi, lo]; } function computeMsgId(msg) { var meaning = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var msgFingerprint = fingerprint(msg); if (meaning) { var meaningFingerprint = fingerprint(meaning); msgFingerprint = add64(rol64(msgFingerprint, 1), meaningFingerprint); } var hi = msgFingerprint[0]; var lo = msgFingerprint[1]; return wordsToDecimalString(hi & 0x7fffffff, lo); } function hash32(bytes, c) { var a = 0x9e3779b9, b = 0x9e3779b9; var i; var len = bytes.length; for (i = 0; i + 12 <= len; i += 12) { a = add32(a, wordAt(bytes, i, Endian.Little)); b = add32(b, wordAt(bytes, i + 4, Endian.Little)); c = add32(c, wordAt(bytes, i + 8, Endian.Little)); var res = mix(a, b, c); a = res[0], b = res[1], c = res[2]; } a = add32(a, wordAt(bytes, i, Endian.Little)); b = add32(b, wordAt(bytes, i + 4, Endian.Little)); // the first byte of c is reserved for the length c = add32(c, len); c = add32(c, wordAt(bytes, i + 8, Endian.Little) << 8); return mix(a, b, c)[2]; } // clang-format off function mix(a, b, c) { a = sub32(a, b); a = sub32(a, c); a ^= c >>> 13; b = sub32(b, c); b = sub32(b, a); b ^= a << 8; c = sub32(c, a); c = sub32(c, b); c ^= b >>> 13; a = sub32(a, b); a = sub32(a, c); a ^= c >>> 12; b = sub32(b, c); b = sub32(b, a); b ^= a << 16; c = sub32(c, a); c = sub32(c, b); c ^= b >>> 5; a = sub32(a, b); a = sub32(a, c); a ^= c >>> 3; b = sub32(b, c); b = sub32(b, a); b ^= a << 10; c = sub32(c, a); c = sub32(c, b); c ^= b >>> 15; return [a, b, c]; } // clang-format on // Utils var Endian; (function (Endian) { Endian[Endian["Little"] = 0] = "Little"; Endian[Endian["Big"] = 1] = "Big"; })(Endian || (Endian = {})); function add32(a, b) { return add32to64(a, b)[1]; } function add32to64(a, b) { var low = (a & 0xffff) + (b & 0xffff); var high = (a >>> 16) + (b >>> 16) + (low >>> 16); return [high >>> 16, high << 16 | low & 0xffff]; } function add64(a, b) { var ah = a[0], al = a[1]; var bh = b[0], bl = b[1]; var result = add32to64(al, bl); var carry = result[0]; var l = result[1]; var h = add32(add32(ah, bh), carry); return [h, l]; } function sub32(a, b) { var low = (a & 0xffff) - (b & 0xffff); var high = (a >> 16) - (b >> 16) + (low >> 16); return high << 16 | low & 0xffff; } // Rotate a 32b number left `count` position function rol32(a, count) { return a << count | a >>> 32 - count; } // Rotate a 64b number left `count` position function rol64(num, count) { var hi = num[0], lo = num[1]; var h = hi << count | lo >>> 32 - count; var l = lo << count | hi >>> 32 - count; return [h, l]; } function bytesToWords32(bytes, endian) { var size = bytes.length + 3 >>> 2; var words32 = []; for (var i = 0; i < size; i++) { words32[i] = wordAt(bytes, i * 4, endian); } return words32; } function byteAt(bytes, index) { return index >= bytes.length ? 0 : bytes[index]; } function wordAt(bytes, index, endian) { var word = 0; if (endian === Endian.Big) { for (var i = 0; i < 4; i++) { word += byteAt(bytes, index + i) << 24 - 8 * i; } } else { for (var _i6 = 0; _i6 < 4; _i6++) { word += byteAt(bytes, index + _i6) << 8 * _i6; } } return word; } function words32ToByteString(words32) { return words32.reduce(function (bytes, word) { return bytes.concat(word32ToByteString(word)); }, []); } function word32ToByteString(word) { var bytes = []; for (var i = 0; i < 4; i++) { bytes.push(word >>> 8 * (3 - i) & 0xff); } return bytes; } function bytesToHexString(bytes) { var hex = ''; for (var i = 0; i < bytes.length; i++) { var b = byteAt(bytes, i); hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16); } return hex.toLowerCase(); } /** * Create a shared exponentiation pool for base-256 computations. This shared pool provides memoized * power-of-256 results with memoized power-of-two computations for efficient multiplication. * * For our purposes, this can be safely stored as a global without memory concerns. The reason is * that we encode two words, so only need the 0th (for the low word) and 4th (for the high word) * exponent. */ var base256 = new BigIntExponentiation(256); /** * Represents two 32-bit words as a single decimal number. This requires a big integer storage * model as JS numbers are not accurate enough to represent the 64-bit number. * * Based on https://www.danvk.org/hex2dec.html */ function wordsToDecimalString(hi, lo) { // Encode the four bytes in lo in the lower digits of the decimal number. // Note: the multiplication results in lo itself but represented by a big integer using its // decimal digits. var decimal = base256.toThePowerOf(0).multiplyBy(lo); // Encode the four bytes in hi above the four lo bytes. lo is a maximum of (2^8)^4, which is why // this multiplication factor is applied. base256.toThePowerOf(4).multiplyByAndAddTo(hi, decimal); return decimal.toString(); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var Serializer = /*#__PURE__*/function () { function Serializer() { _classCallCheck(this, Serializer); } _createClass2(Serializer, [{ key: "createNameMapper", value: // Creates a name mapper, see `PlaceholderMapper` // Returning `null` means that no name mapping is used. function createNameMapper(message) { return null; } }]); return Serializer; }(); /** * A simple mapper that take a function to transform an internal name to a public name */ var SimplePlaceholderMapper = /*#__PURE__*/function (_RecurseVisitor) { _inherits(SimplePlaceholderMapper, _RecurseVisitor); var _super54 = _createSuper(SimplePlaceholderMapper); // create a mapping from the message function SimplePlaceholderMapper(message, mapName) { var _this77; _classCallCheck(this, SimplePlaceholderMapper); _this77 = _super54.call(this); _this77.mapName = mapName; _this77.internalToPublic = {}; _this77.publicToNextId = {}; _this77.publicToInternal = {}; message.nodes.forEach(function (node) { return node.visit(_assertThisInitialized(_this77)); }); return _this77; } _createClass2(SimplePlaceholderMapper, [{ key: "toPublicName", value: function toPublicName(internalName) { return this.internalToPublic.hasOwnProperty(internalName) ? this.internalToPublic[internalName] : null; } }, { key: "toInternalName", value: function toInternalName(publicName) { return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] : null; } }, { key: "visitText", value: function visitText(text, context) { return null; } }, { key: "visitTagPlaceholder", value: function visitTagPlaceholder(ph, context) { this.visitPlaceholderName(ph.startName); _get(_getPrototypeOf(SimplePlaceholderMapper.prototype), "visitTagPlaceholder", this).call(this, ph, context); this.visitPlaceholderName(ph.closeName); } }, { key: "visitPlaceholder", value: function visitPlaceholder(ph, context) { this.visitPlaceholderName(ph.name); } }, { key: "visitIcuPlaceholder", value: function visitIcuPlaceholder(ph, context) { this.visitPlaceholderName(ph.name); } // XMB placeholders could only contains A-Z, 0-9 and _ }, { key: "visitPlaceholderName", value: function visitPlaceholderName(internalName) { if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) { return; } var publicName = this.mapName(internalName); if (this.publicToInternal.hasOwnProperty(publicName)) { // Create a new XMB when it has already been used var nextId = this.publicToNextId[publicName]; this.publicToNextId[publicName] = nextId + 1; publicName = "".concat(publicName, "_").concat(nextId); } else { this.publicToNextId[publicName] = 1; } this.internalToPublic[internalName] = publicName; this.publicToInternal[publicName] = internalName; } }]); return SimplePlaceholderMapper; }(RecurseVisitor); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var _Visitor = /*#__PURE__*/function () { function _Visitor() { _classCallCheck(this, _Visitor); } _createClass2(_Visitor, [{ key: "visitTag", value: function visitTag(tag) { var _this78 = this; var strAttrs = this._serializeAttributes(tag.attrs); if (tag.children.length == 0) { return "<".concat(tag.name).concat(strAttrs, "/>"); } var strChildren = tag.children.map(function (node) { return node.visit(_this78); }); return "<".concat(tag.name).concat(strAttrs, ">").concat(strChildren.join(''), ""); } }, { key: "visitText", value: function visitText(text) { return text.value; } }, { key: "visitDeclaration", value: function visitDeclaration(decl) { return ""); } }, { key: "_serializeAttributes", value: function _serializeAttributes(attrs) { var strAttrs = Object.keys(attrs).map(function (name) { return "".concat(name, "=\"").concat(attrs[name], "\""); }).join(' '); return strAttrs.length > 0 ? ' ' + strAttrs : ''; } }, { key: "visitDoctype", value: function visitDoctype(doctype) { return ""); } }]); return _Visitor; }(); var _visitor = new _Visitor(); function serialize(nodes) { return nodes.map(function (node) { return node.visit(_visitor); }).join(''); } var Declaration = /*#__PURE__*/function () { function Declaration(unescapedAttrs) { var _this79 = this; _classCallCheck(this, Declaration); this.attrs = {}; Object.keys(unescapedAttrs).forEach(function (k) { _this79.attrs[k] = escapeXml(unescapedAttrs[k]); }); } _createClass2(Declaration, [{ key: "visit", value: function visit(visitor) { return visitor.visitDeclaration(this); } }]); return Declaration; }(); var Doctype = /*#__PURE__*/function () { function Doctype(rootTag, dtd) { _classCallCheck(this, Doctype); this.rootTag = rootTag; this.dtd = dtd; } _createClass2(Doctype, [{ key: "visit", value: function visit(visitor) { return visitor.visitDoctype(this); } }]); return Doctype; }(); var Tag = /*#__PURE__*/function () { function Tag(name) { var _this80 = this; var unescapedAttrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; _classCallCheck(this, Tag); this.name = name; this.children = children; this.attrs = {}; Object.keys(unescapedAttrs).forEach(function (k) { _this80.attrs[k] = escapeXml(unescapedAttrs[k]); }); } _createClass2(Tag, [{ key: "visit", value: function visit(visitor) { return visitor.visitTag(this); } }]); return Tag; }(); var Text$2 = /*#__PURE__*/function () { function Text$2(unescapedValue) { _classCallCheck(this, Text$2); this.value = escapeXml(unescapedValue); } _createClass2(Text$2, [{ key: "visit", value: function visit(visitor) { return visitor.visitText(this); } }]); return Text$2; }(); var CR = /*#__PURE__*/function (_Text$) { _inherits(CR, _Text$); var _super55 = _createSuper(CR); function CR() { var ws = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; _classCallCheck(this, CR); return _super55.call(this, "\n".concat(new Array(ws + 1).join(' '))); } return _createClass2(CR); }(Text$2); var _ESCAPED_CHARS = [[/&/g, '&'], [/"/g, '"'], [/'/g, '''], [//g, '>']]; // Escape `_ESCAPED_CHARS` characters in the given text with encoded entities function escapeXml(text) { return _ESCAPED_CHARS.reduce(function (text, entry) { return text.replace(entry[0], entry[1]); }, text); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var _MESSAGES_TAG = 'messagebundle'; var _MESSAGE_TAG = 'msg'; var _PLACEHOLDER_TAG = 'ph'; var _EXAMPLE_TAG = 'ex'; var _SOURCE_TAG = 'source'; var _DOCTYPE = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; var Xmb = /*#__PURE__*/function (_Serializer) { _inherits(Xmb, _Serializer); var _super56 = _createSuper(Xmb); function Xmb() { _classCallCheck(this, Xmb); return _super56.apply(this, arguments); } _createClass2(Xmb, [{ key: "write", value: function write(messages, locale) { var exampleVisitor = new ExampleVisitor(); var visitor = new _Visitor$1(); var rootNode = new Tag(_MESSAGES_TAG); messages.forEach(function (message) { var attrs = { id: message.id }; if (message.description) { attrs['desc'] = message.description; } if (message.meaning) { attrs['meaning'] = message.meaning; } var sourceTags = []; message.sources.forEach(function (source) { sourceTags.push(new Tag(_SOURCE_TAG, {}, [new Text$2("".concat(source.filePath, ":").concat(source.startLine).concat(source.endLine !== source.startLine ? ',' + source.endLine : ''))])); }); rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, [].concat(sourceTags, _toConsumableArray(visitor.serialize(message.nodes))))); }); rootNode.children.push(new CR()); return serialize([new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), new Doctype(_MESSAGES_TAG, _DOCTYPE), new CR(), exampleVisitor.addDefaultExamples(rootNode), new CR()]); } }, { key: "load", value: function load(content, url) { throw new Error('Unsupported'); } }, { key: "digest", value: function digest(message) { return digest$1(message); } }, { key: "createNameMapper", value: function createNameMapper(message) { return new SimplePlaceholderMapper(message, toPublicName); } }]); return Xmb; }(Serializer); var _Visitor$1 = /*#__PURE__*/function () { function _Visitor$1() { _classCallCheck(this, _Visitor$1); } _createClass2(_Visitor$1, [{ key: "visitText", value: function visitText(text, context) { return [new Text$2(text.value)]; } }, { key: "visitContainer", value: function visitContainer(container, context) { var _this81 = this; var nodes = []; container.children.forEach(function (node) { return nodes.push.apply(nodes, _toConsumableArray(node.visit(_this81))); }); return nodes; } }, { key: "visitIcu", value: function visitIcu(icu, context) { var _this82 = this; var nodes = [new Text$2("{".concat(icu.expressionPlaceholder, ", ").concat(icu.type, ", "))]; Object.keys(icu.cases).forEach(function (c) { nodes.push.apply(nodes, [new Text$2("".concat(c, " {"))].concat(_toConsumableArray(icu.cases[c].visit(_this82)), [new Text$2("} ")])); }); nodes.push(new Text$2("}")); return nodes; } }, { key: "visitTagPlaceholder", value: function visitTagPlaceholder(ph, context) { var startTagAsText = new Text$2("<".concat(ph.tag, ">")); var startEx = new Tag(_EXAMPLE_TAG, {}, [startTagAsText]); // TC requires PH to have a non empty EX, and uses the text node to show the "original" value. var startTagPh = new Tag(_PLACEHOLDER_TAG, { name: ph.startName }, [startEx, startTagAsText]); if (ph.isVoid) { // void tags have no children nor closing tags return [startTagPh]; } var closeTagAsText = new Text$2("")); var closeEx = new Tag(_EXAMPLE_TAG, {}, [closeTagAsText]); // TC requires PH to have a non empty EX, and uses the text node to show the "original" value. var closeTagPh = new Tag(_PLACEHOLDER_TAG, { name: ph.closeName }, [closeEx, closeTagAsText]); return [startTagPh].concat(_toConsumableArray(this.serialize(ph.children)), [closeTagPh]); } }, { key: "visitPlaceholder", value: function visitPlaceholder(ph, context) { var interpolationAsText = new Text$2("{{".concat(ph.value, "}}")); // Example tag needs to be not-empty for TC. var exTag = new Tag(_EXAMPLE_TAG, {}, [interpolationAsText]); return [// TC requires PH to have a non empty EX, and uses the text node to show the "original" value. new Tag(_PLACEHOLDER_TAG, { name: ph.name }, [exTag, interpolationAsText])]; } }, { key: "visitIcuPlaceholder", value: function visitIcuPlaceholder(ph, context) { var icuExpression = ph.value.expression; var icuType = ph.value.type; var icuCases = Object.keys(ph.value.cases).map(function (value) { return value + ' {...}'; }).join(' '); var icuAsText = new Text$2("{".concat(icuExpression, ", ").concat(icuType, ", ").concat(icuCases, "}")); var exTag = new Tag(_EXAMPLE_TAG, {}, [icuAsText]); return [// TC requires PH to have a non empty EX, and uses the text node to show the "original" value. new Tag(_PLACEHOLDER_TAG, { name: ph.name }, [exTag, icuAsText])]; } }, { key: "serialize", value: function serialize(nodes) { var _ref10, _this83 = this; return (_ref10 = []).concat.apply(_ref10, _toConsumableArray(nodes.map(function (node) { return node.visit(_this83); }))); } }]); return _Visitor$1; }(); function digest$1(message) { return decimalDigest(message); } // TC requires at least one non-empty example on placeholders var ExampleVisitor = /*#__PURE__*/function () { function ExampleVisitor() { _classCallCheck(this, ExampleVisitor); } _createClass2(ExampleVisitor, [{ key: "addDefaultExamples", value: function addDefaultExamples(node) { node.visit(this); return node; } }, { key: "visitTag", value: function visitTag(tag) { var _this84 = this; if (tag.name === _PLACEHOLDER_TAG) { if (!tag.children || tag.children.length == 0) { var exText = new Text$2(tag.attrs['name'] || '...'); tag.children = [new Tag(_EXAMPLE_TAG, {}, [exText])]; } } else if (tag.children) { tag.children.forEach(function (node) { return node.visit(_this84); }); } } }, { key: "visitText", value: function visitText(text) {} }, { key: "visitDeclaration", value: function visitDeclaration(decl) {} }, { key: "visitDoctype", value: function visitDoctype(doctype) {} }]); return ExampleVisitor; }(); // XMB/XTB placeholders can only contain A-Z, 0-9 and _ function toPublicName(internalName) { return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_'); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /* Closure variables holding messages must be named `MSG_[A-Z0-9]+` */ var CLOSURE_TRANSLATION_VAR_PREFIX = 'MSG_'; /** * Prefix for non-`goog.getMsg` i18n-related vars. * Note: the prefix uses lowercase characters intentionally due to a Closure behavior that * considers variables like `I18N_0` as constants and throws an error when their value changes. */ var TRANSLATION_VAR_PREFIX = 'i18n_'; /** Name of the i18n attributes **/ var I18N_ATTR = 'i18n'; var I18N_ATTR_PREFIX = 'i18n-'; /** Prefix of var expressions used in ICUs */ var I18N_ICU_VAR_PREFIX = 'VAR_'; /** Prefix of ICU expressions for post processing */ var I18N_ICU_MAPPING_PREFIX = 'I18N_EXP_'; /** Placeholder wrapper for i18n expressions **/ var I18N_PLACEHOLDER_SYMBOL = '�'; function isI18nAttribute(name) { return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX); } function isI18nRootNode(meta) { return meta instanceof Message; } function isSingleI18nIcu(meta) { return isI18nRootNode(meta) && meta.nodes.length === 1 && meta.nodes[0] instanceof Icu$1; } function hasI18nMeta(node) { return !!node.i18n; } function hasI18nAttrs(element) { return element.attrs.some(function (attr) { return isI18nAttribute(attr.name); }); } function icuFromI18nMessage(message) { return message.nodes[0]; } function wrapI18nPlaceholder(content) { var contextId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var blockId = contextId > 0 ? ":".concat(contextId) : ''; return "".concat(I18N_PLACEHOLDER_SYMBOL).concat(content).concat(blockId).concat(I18N_PLACEHOLDER_SYMBOL); } function assembleI18nBoundString(strings) { var bindingStartIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var contextId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; if (!strings.length) return ''; var acc = ''; var lastIdx = strings.length - 1; for (var i = 0; i < lastIdx; i++) { acc += "".concat(strings[i]).concat(wrapI18nPlaceholder(bindingStartIndex + i, contextId)); } acc += strings[lastIdx]; return acc; } function getSeqNumberGenerator() { var startsAt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var current = startsAt; return function () { return current++; }; } function placeholdersToParams(placeholders) { var params = {}; placeholders.forEach(function (values, key) { params[key] = literal(values.length > 1 ? "[".concat(values.join('|'), "]") : values[0]); }); return params; } function updatePlaceholderMap(map, name) { var current = map.get(name) || []; for (var _len4 = arguments.length, values = new Array(_len4 > 2 ? _len4 - 2 : 0), _key5 = 2; _key5 < _len4; _key5++) { values[_key5 - 2] = arguments[_key5]; } current.push.apply(current, values); map.set(name, current); } function assembleBoundTextPlaceholders(meta) { var bindingStartIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var contextId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; var startIdx = bindingStartIndex; var placeholders = new Map(); var node = meta instanceof Message ? meta.nodes.find(function (node) { return node instanceof Container; }) : meta; if (node) { node.children.filter(function (child) { return child instanceof Placeholder; }).forEach(function (child, idx) { var content = wrapI18nPlaceholder(startIdx + idx, contextId); updatePlaceholderMap(placeholders, child.name, content); }); } return placeholders; } /** * Format the placeholder names in a map of placeholders to expressions. * * The placeholder names are converted from "internal" format (e.g. `START_TAG_DIV_1`) to "external" * format (e.g. `startTagDiv_1`). * * @param params A map of placeholder names to expressions. * @param useCamelCase whether to camelCase the placeholder name when formatting. * @returns A new map of formatted placeholder names to expressions. */ function i18nFormatPlaceholderNames() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var useCamelCase = arguments.length > 1 ? arguments[1] : undefined; var _params = {}; if (params && Object.keys(params).length) { Object.keys(params).forEach(function (key) { return _params[formatI18nPlaceholderName(key, useCamelCase)] = params[key]; }); } return _params; } /** * Converts internal placeholder names to public-facing format * (for example to use in goog.getMsg call). * Example: `START_TAG_DIV_1` is converted to `startTagDiv_1`. * * @param name The placeholder name that should be formatted * @returns Formatted placeholder name */ function formatI18nPlaceholderName(name) { var useCamelCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var publicName = toPublicName(name); if (!useCamelCase) { return publicName; } var chunks = publicName.split('_'); if (chunks.length === 1) { // if no "_" found - just lowercase the value return name.toLowerCase(); } var postfix; // eject last element if it's a number if (/^\d+$/.test(chunks[chunks.length - 1])) { postfix = chunks.pop(); } var raw = chunks.shift().toLowerCase(); if (chunks.length) { raw += chunks.map(function (c) { return c.charAt(0).toUpperCase() + c.slice(1).toLowerCase(); }).join(''); } return postfix ? "".concat(raw, "_").concat(postfix) : raw; } /** * Generates a prefix for translation const name. * * @param extra Additional local prefix that should be injected into translation var name * @returns Complete translation const prefix */ function getTranslationConstPrefix(extra) { return "".concat(CLOSURE_TRANSLATION_VAR_PREFIX).concat(extra).toUpperCase(); } /** * Generate AST to declare a variable. E.g. `var I18N_1;`. * @param variable the name of the variable to declare. */ function declareI18nVariable(variable) { return new DeclareVarStmt(variable.name, undefined, INFERRED_TYPE, undefined, variable.sourceSpan); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Checks whether an object key contains potentially unsafe chars, thus the key should be wrapped in * quotes. Note: we do not wrap all keys into quotes, as it may have impact on minification and may * bot work in some cases when object keys are mangled by minifier. * * TODO(FW-1136): this is a temporary solution, we need to come up with a better way of working with * inputs that contain potentially unsafe chars. */ var UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/; /** Name of the temporary to use during data binding */ var TEMPORARY_NAME = '_t'; /** Name of the context parameter passed into a template function */ var CONTEXT_NAME = 'ctx'; /** Name of the RenderFlag passed into a template function */ var RENDER_FLAGS = 'rf'; /** The prefix reference variables */ var REFERENCE_PREFIX = '_r'; /** The name of the implicit context reference */ var IMPLICIT_REFERENCE = '$implicit'; /** Non bindable attribute name **/ var NON_BINDABLE_ATTR = 'ngNonBindable'; /** * Creates an allocator for a temporary variable. * * A variable declaration is added to the statements the first time the allocator is invoked. */ function temporaryAllocator(statements, name) { var temp = null; return function () { if (!temp) { statements.push(new DeclareVarStmt(TEMPORARY_NAME, undefined, DYNAMIC_TYPE)); temp = variable(name); } return temp; }; } function unsupported(feature) { if (this) { throw new Error("Builder ".concat(this.constructor.name, " doesn't support ").concat(feature, " yet")); } throw new Error("Feature ".concat(feature, " is not supported yet")); } function invalid$1(arg) { throw new Error("Invalid state: Visitor ".concat(this.constructor.name, " doesn't handle ").concat(arg.constructor.name)); } function asLiteral(value) { if (Array.isArray(value)) { return literalArr(value.map(asLiteral)); } return literal(value, INFERRED_TYPE); } function conditionallyCreateMapObjectLiteral(keys, keepDeclared) { if (Object.getOwnPropertyNames(keys).length > 0) { return mapToExpression(keys, keepDeclared); } return null; } function mapToExpression(map, keepDeclared) { return literalMap(Object.getOwnPropertyNames(map).map(function (key) { // canonical syntax: `dirProp: publicProp` // if there is no `:`, use dirProp = elProp var value = map[key]; var declaredName; var publicName; var minifiedName; if (Array.isArray(value)) { var _value2 = _slicedToArray(value, 2); publicName = _value2[0]; declaredName = _value2[1]; } else { var _splitAtColon = splitAtColon(key, [key, value]); var _splitAtColon2 = _slicedToArray(_splitAtColon, 2); declaredName = _splitAtColon2[0]; publicName = _splitAtColon2[1]; } minifiedName = declaredName; return { key: minifiedName, // put quotes around keys that contain potentially unsafe characters quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(minifiedName), value: keepDeclared && publicName !== declaredName ? literalArr([asLiteral(publicName), asLiteral(declaredName)]) : asLiteral(publicName) }; })); } /** * Remove trailing null nodes as they are implied. */ function trimTrailingNulls(parameters) { while (isNull(parameters[parameters.length - 1])) { parameters.pop(); } return parameters; } function getQueryPredicate(query, constantPool) { if (Array.isArray(query.predicate)) { var predicate = []; query.predicate.forEach(function (selector) { // Each item in predicates array may contain strings with comma-separated refs // (for ex. 'ref, ref1, ..., refN'), thus we extract individual refs and store them // as separate array entities var selectors = selector.split(',').map(function (token) { return literal(token.trim()); }); predicate.push.apply(predicate, _toConsumableArray(selectors)); }); return constantPool.getConstLiteral(literalArr(predicate), true); } else { return query.predicate; } } var DefinitionMap = /*#__PURE__*/function () { function DefinitionMap() { _classCallCheck(this, DefinitionMap); this.values = []; } _createClass2(DefinitionMap, [{ key: "set", value: function set(key, value) { if (value) { this.values.push({ key: key, value: value, quoted: false }); } } }, { key: "toLiteralMap", value: function toLiteralMap() { return literalMap(this.values); } }]); return DefinitionMap; }(); /** * Extract a map of properties to values for a given element or template node, which can be used * by the directive matching machinery. * * @param elOrTpl the element or template in question * @return an object set up for directive matching. For attributes on the element/template, this * object maps a property name to its (static) value. For any bindings, this map simply maps the * property name to an empty string. */ function getAttrsForDirectiveMatching(elOrTpl) { var attributesMap = {}; if (elOrTpl instanceof Template && elOrTpl.tagName !== 'ng-template') { elOrTpl.templateAttrs.forEach(function (a) { return attributesMap[a.name] = ''; }); } else { elOrTpl.attributes.forEach(function (a) { if (!isI18nAttribute(a.name)) { attributesMap[a.name] = a.value; } }); elOrTpl.inputs.forEach(function (i) { attributesMap[i.name] = ''; }); elOrTpl.outputs.forEach(function (o) { attributesMap[o.name] = ''; }); } return attributesMap; } /** Returns a call expression to a chained instruction, e.g. `property(params[0])(params[1])`. */ function chainedInstruction(reference, calls, span) { var expression = importExpr(reference, null, span); if (calls.length > 0) { for (var i = 0; i < calls.length; i++) { expression = expression.callFn(calls[i], span); } } else { // Add a blank invocation, in case the `calls` array is empty. expression = expression.callFn([], span); } return expression; } /** * Gets the number of arguments expected to be passed to a generated instruction in the case of * interpolation instructions. * @param interpolation An interpolation ast */ function getInterpolationArgsLength(interpolation) { var expressions = interpolation.expressions, strings = interpolation.strings; if (expressions.length === 1 && strings.length === 2 && strings[0] === '' && strings[1] === '') { // If the interpolation has one interpolated value, but the prefix and suffix are both empty // strings, we only pass one argument, to a special instruction like `propertyInterpolate` or // `textInterpolate`. return 1; } else { return expressions.length + strings.length; } } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var R3FactoryDelegateType; (function (R3FactoryDelegateType) { R3FactoryDelegateType[R3FactoryDelegateType["Class"] = 0] = "Class"; R3FactoryDelegateType[R3FactoryDelegateType["Function"] = 1] = "Function"; R3FactoryDelegateType[R3FactoryDelegateType["Factory"] = 2] = "Factory"; })(R3FactoryDelegateType || (R3FactoryDelegateType = {})); var R3FactoryTarget; (function (R3FactoryTarget) { R3FactoryTarget[R3FactoryTarget["Directive"] = 0] = "Directive"; R3FactoryTarget[R3FactoryTarget["Component"] = 1] = "Component"; R3FactoryTarget[R3FactoryTarget["Injectable"] = 2] = "Injectable"; R3FactoryTarget[R3FactoryTarget["Pipe"] = 3] = "Pipe"; R3FactoryTarget[R3FactoryTarget["NgModule"] = 4] = "NgModule"; })(R3FactoryTarget || (R3FactoryTarget = {})); /** * Resolved type of a dependency. * * Occasionally, dependencies will have special significance which is known statically. In that * case the `R3ResolvedDependencyType` informs the factory generator that a particular dependency * should be generated specially (usually by calling a special injection function instead of the * standard one). */ var R3ResolvedDependencyType; (function (R3ResolvedDependencyType) { /** * A normal token dependency. */ R3ResolvedDependencyType[R3ResolvedDependencyType["Token"] = 0] = "Token"; /** * The dependency is for an attribute. * * The token expression is a string representing the attribute name. */ R3ResolvedDependencyType[R3ResolvedDependencyType["Attribute"] = 1] = "Attribute"; /** * Injecting the `ChangeDetectorRef` token. Needs special handling when injected into a pipe. */ R3ResolvedDependencyType[R3ResolvedDependencyType["ChangeDetectorRef"] = 2] = "ChangeDetectorRef"; /** * An invalid dependency (no token could be determined). An error should be thrown at runtime. */ R3ResolvedDependencyType[R3ResolvedDependencyType["Invalid"] = 3] = "Invalid"; })(R3ResolvedDependencyType || (R3ResolvedDependencyType = {})); /** * Construct a factory function expression for the given `R3FactoryMetadata`. */ function compileFactoryFunction(meta) { var t = variable('t'); var statements = []; var ctorDepsType = NONE_TYPE; // The type to instantiate via constructor invocation. If there is no delegated factory, meaning // this type is always created by constructor invocation, then this is the type-to-create // parameter provided by the user (t) if specified, or the current type if not. If there is a // delegated factory (which is used to create the current type) then this is only the type-to- // create parameter (t). var typeForCtor = !isDelegatedMetadata(meta) ? new BinaryOperatorExpr(BinaryOperator.Or, t, meta.internalType) : t; var ctorExpr = null; if (meta.deps !== null) { // There is a constructor (either explicitly or implicitly defined). if (meta.deps !== 'invalid') { ctorExpr = new InstantiateExpr(typeForCtor, injectDependencies(meta.deps, meta.injectFn, meta.target === R3FactoryTarget.Pipe)); ctorDepsType = createCtorDepsType(meta.deps); } } else { var baseFactory = variable("\u0275".concat(meta.name, "_BaseFactory")); var getInheritedFactory = importExpr(Identifiers$1.getInheritedFactory); var baseFactoryStmt = baseFactory.set(getInheritedFactory.callFn([meta.internalType], /* sourceSpan */ undefined, /* pure */ true)).toDeclStmt(INFERRED_TYPE, [StmtModifier.Exported, StmtModifier.Final]); statements.push(baseFactoryStmt); // There is no constructor, use the base class' factory to construct typeForCtor. ctorExpr = baseFactory.callFn([typeForCtor]); } var ctorExprFinal = ctorExpr; var body = []; var retExpr = null; function makeConditionalFactory(nonCtorExpr) { var r = variable('r'); body.push(r.set(NULL_EXPR).toDeclStmt()); var ctorStmt = null; if (ctorExprFinal !== null) { ctorStmt = r.set(ctorExprFinal).toStmt(); } else { ctorStmt = importExpr(Identifiers$1.invalidFactory).callFn([]).toStmt(); } body.push(ifStmt(t, [ctorStmt], [r.set(nonCtorExpr).toStmt()])); return r; } if (isDelegatedMetadata(meta) && meta.delegateType === R3FactoryDelegateType.Factory) { var delegateFactory = variable("\u0275".concat(meta.name, "_BaseFactory")); var getFactoryOf = importExpr(Identifiers$1.getFactoryOf); if (meta.delegate.isEquivalent(meta.internalType)) { throw new Error("Illegal state: compiling factory that delegates to itself"); } var delegateFactoryStmt = delegateFactory.set(getFactoryOf.callFn([meta.delegate])).toDeclStmt(INFERRED_TYPE, [StmtModifier.Exported, StmtModifier.Final]); statements.push(delegateFactoryStmt); retExpr = makeConditionalFactory(delegateFactory.callFn([])); } else if (isDelegatedMetadata(meta)) { // This type is created with a delegated factory. If a type parameter is not specified, call // the factory instead. var delegateArgs = injectDependencies(meta.delegateDeps, meta.injectFn, meta.target === R3FactoryTarget.Pipe); // Either call `new delegate(...)` or `delegate(...)` depending on meta.delegateType. var factoryExpr = new (meta.delegateType === R3FactoryDelegateType.Class ? InstantiateExpr : InvokeFunctionExpr)(meta.delegate, delegateArgs); retExpr = makeConditionalFactory(factoryExpr); } else if (isExpressionFactoryMetadata(meta)) { // TODO(alxhub): decide whether to lower the value here or in the caller retExpr = makeConditionalFactory(meta.expression); } else { retExpr = ctorExpr; } if (retExpr !== null) { body.push(new ReturnStatement(retExpr)); } else { body.push(importExpr(Identifiers$1.invalidFactory).callFn([]).toStmt()); } return { factory: fn([new FnParam('t', DYNAMIC_TYPE)], body, INFERRED_TYPE, undefined, "".concat(meta.name, "_Factory")), statements: statements, type: expressionType(importExpr(Identifiers$1.FactoryDef, [typeWithParameters(meta.type.type, meta.typeArgumentCount), ctorDepsType])) }; } function injectDependencies(deps, injectFn, isPipe) { return deps.map(function (dep, index) { return compileInjectDependency(dep, injectFn, isPipe, index); }); } function compileInjectDependency(dep, injectFn, isPipe, index) { // Interpret the dependency according to its resolved type. switch (dep.resolved) { case R3ResolvedDependencyType.Token: case R3ResolvedDependencyType.ChangeDetectorRef: // Build up the injection flags according to the metadata. var flags = 0 /* Default */ | (dep.self ? 2 /* Self */ : 0) | (dep.skipSelf ? 4 /* SkipSelf */ : 0) | (dep.host ? 1 /* Host */ : 0) | (dep.optional ? 8 /* Optional */ : 0); // If this dependency is optional or otherwise has non-default flags, then additional // parameters describing how to inject the dependency must be passed to the inject function // that's being used. var flagsParam = flags !== 0 /* Default */ || dep.optional ? literal(flags) : null; // We have a separate instruction for injecting ChangeDetectorRef into a pipe. if (isPipe && dep.resolved === R3ResolvedDependencyType.ChangeDetectorRef) { return importExpr(Identifiers$1.injectPipeChangeDetectorRef).callFn(flagsParam ? [flagsParam] : []); } // Build up the arguments to the injectFn call. var injectArgs = [dep.token]; if (flagsParam) { injectArgs.push(flagsParam); } return importExpr(injectFn).callFn(injectArgs); case R3ResolvedDependencyType.Attribute: // In the case of attributes, the attribute name in question is given as the token. return importExpr(Identifiers$1.injectAttribute).callFn([dep.token]); case R3ResolvedDependencyType.Invalid: return importExpr(Identifiers$1.invalidFactoryDep).callFn([literal(index)]); default: return unsupported("Unknown R3ResolvedDependencyType: ".concat(R3ResolvedDependencyType[dep.resolved])); } } function createCtorDepsType(deps) { var hasTypes = false; var attributeTypes = deps.map(function (dep) { var type = createCtorDepType(dep); if (type !== null) { hasTypes = true; return type; } else { return literal(null); } }); if (hasTypes) { return expressionType(literalArr(attributeTypes)); } else { return NONE_TYPE; } } function createCtorDepType(dep) { var entries = []; if (dep.resolved === R3ResolvedDependencyType.Attribute) { if (dep.attribute !== null) { entries.push({ key: 'attribute', value: dep.attribute, quoted: false }); } } if (dep.optional) { entries.push({ key: 'optional', value: literal(true), quoted: false }); } if (dep.host) { entries.push({ key: 'host', value: literal(true), quoted: false }); } if (dep.self) { entries.push({ key: 'self', value: literal(true), quoted: false }); } if (dep.skipSelf) { entries.push({ key: 'skipSelf', value: literal(true), quoted: false }); } return entries.length > 0 ? literalMap(entries) : null; } /** * A helper function useful for extracting `R3DependencyMetadata` from a Render2 * `CompileTypeMetadata` instance. */ function dependenciesFromGlobalMetadata(type, outputCtx, reflector) { // Use the `CompileReflector` to look up references to some well-known Angular types. These will // be compared with the token to statically determine whether the token has significance to // Angular, and set the correct `R3ResolvedDependencyType` as a result. var injectorRef = reflector.resolveExternalReference(Identifiers.Injector); // Iterate through the type's DI dependencies and produce `R3DependencyMetadata` for each of them. var deps = []; var _iterator6 = _createForOfIteratorHelper(type.diDeps), _step6; try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { var dependency = _step6.value; if (dependency.token) { var tokenRef = tokenReference(dependency.token); var resolved = dependency.isAttribute ? R3ResolvedDependencyType.Attribute : R3ResolvedDependencyType.Token; // In the case of most dependencies, the token will be a reference to a type. Sometimes, // however, it can be a string, in the case of older Angular code or @Attribute injection. var token = tokenRef instanceof StaticSymbol ? outputCtx.importExpr(tokenRef) : literal(tokenRef); // Construct the dependency. deps.push({ token: token, attribute: null, resolved: resolved, host: !!dependency.isHost, optional: !!dependency.isOptional, self: !!dependency.isSelf, skipSelf: !!dependency.isSkipSelf }); } else { unsupported('dependency without a token'); } } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } return deps; } function isDelegatedMetadata(meta) { return meta.delegateType !== undefined; } function isExpressionFactoryMetadata(meta) { return meta.expression !== undefined; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function _compileInjectable(meta) { var result = null; var factoryMeta = { name: meta.name, type: meta.type, internalType: meta.internalType, typeArgumentCount: meta.typeArgumentCount, deps: [], injectFn: Identifiers.inject, target: R3FactoryTarget.Injectable }; if (meta.useClass !== undefined) { // meta.useClass has two modes of operation. Either deps are specified, in which case `new` is // used to instantiate the class with dependencies injected, or deps are not specified and // the factory of the class is used to instantiate it. // // A special case exists for useClass: Type where Type is the injectable type itself and no // deps are specified, in which case 'useClass' is effectively ignored. var useClassOnSelf = meta.useClass.isEquivalent(meta.internalType); var deps = undefined; if (meta.userDeps !== undefined) { deps = meta.userDeps; } if (deps !== undefined) { // factory: () => new meta.useClass(...deps) result = compileFactoryFunction(Object.assign(Object.assign({}, factoryMeta), { delegate: meta.useClass, delegateDeps: deps, delegateType: R3FactoryDelegateType.Class })); } else if (useClassOnSelf) { result = compileFactoryFunction(factoryMeta); } else { result = delegateToFactory(meta.type.value, meta.useClass); } } else if (meta.useFactory !== undefined) { if (meta.userDeps !== undefined) { result = compileFactoryFunction(Object.assign(Object.assign({}, factoryMeta), { delegate: meta.useFactory, delegateDeps: meta.userDeps || [], delegateType: R3FactoryDelegateType.Function })); } else { result = { statements: [], factory: fn([], [new ReturnStatement(meta.useFactory.callFn([]))]) }; } } else if (meta.useValue !== undefined) { // Note: it's safe to use `meta.useValue` instead of the `USE_VALUE in meta` check used for // client code because meta.useValue is an Expression which will be defined even if the actual // value is undefined. result = compileFactoryFunction(Object.assign(Object.assign({}, factoryMeta), { expression: meta.useValue })); } else if (meta.useExisting !== undefined) { // useExisting is an `inject` call on the existing token. result = compileFactoryFunction(Object.assign(Object.assign({}, factoryMeta), { expression: importExpr(Identifiers.inject).callFn([meta.useExisting]) })); } else { result = delegateToFactory(meta.type.value, meta.internalType); } var token = meta.internalType; var injectableProps = { token: token, factory: result.factory }; // Only generate providedIn property if it has a non-null value if (meta.providedIn.value !== null) { injectableProps.providedIn = meta.providedIn; } var expression = importExpr(Identifiers.ɵɵdefineInjectable).callFn([mapToMapExpression(injectableProps)]); var type = new ExpressionType(importExpr(Identifiers.InjectableDef, [typeWithParameters(meta.type.type, meta.typeArgumentCount)])); return { expression: expression, type: type, statements: result.statements }; } function delegateToFactory(type, internalType) { return { statements: [], // If types are the same, we can generate `factory: type.ɵfac` // If types are different, we have to generate a wrapper function to ensure // the internal type has been resolved (`factory: function(t) { return type.ɵfac(t); }`) factory: type.node === internalType.node ? internalType.prop('ɵfac') : fn([new FnParam('t', DYNAMIC_TYPE)], [new ReturnStatement(internalType.callMethod('ɵfac', [variable('t')]))]) }; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function assertArrayOfStrings(identifier, value) { if (value == null) { return; } if (!Array.isArray(value)) { throw new Error("Expected '".concat(identifier, "' to be an array of strings.")); } for (var i = 0; i < value.length; i += 1) { if (typeof value[i] !== 'string') { throw new Error("Expected '".concat(identifier, "' to be an array of strings.")); } } } var UNUSABLE_INTERPOLATION_REGEXPS = [/^\s*$/, /[<>]/, /^[{}]$/, /&(#|[a-z])/i, /^\/\//]; function assertInterpolationSymbols(identifier, value) { if (value != null && !(Array.isArray(value) && value.length == 2)) { throw new Error("Expected '".concat(identifier, "' to be an array, [start, end].")); } else if (value != null) { var start = value[0]; var end = value[1]; // Check for unusable interpolation symbols UNUSABLE_INTERPOLATION_REGEXPS.forEach(function (regexp) { if (regexp.test(start) || regexp.test(end)) { throw new Error("['".concat(start, "', '").concat(end, "'] contains unusable interpolation symbol.")); } }); } } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var InterpolationConfig = /*#__PURE__*/function () { function InterpolationConfig(start, end) { _classCallCheck(this, InterpolationConfig); this.start = start; this.end = end; } _createClass2(InterpolationConfig, null, [{ key: "fromArray", value: function fromArray(markers) { if (!markers) { return DEFAULT_INTERPOLATION_CONFIG; } assertInterpolationSymbols('interpolation', markers); return new InterpolationConfig(markers[0], markers[1]); } }]); return InterpolationConfig; }(); var DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}'); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit var VERSION = 3; var JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,'; var SourceMapGenerator = /*#__PURE__*/function () { function SourceMapGenerator() { var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; _classCallCheck(this, SourceMapGenerator); this.file = file; this.sourcesContent = new Map(); this.lines = []; this.lastCol0 = 0; this.hasMappings = false; } // The content is `null` when the content is expected to be loaded using the URL _createClass2(SourceMapGenerator, [{ key: "addSource", value: function addSource(url) { var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (!this.sourcesContent.has(url)) { this.sourcesContent.set(url, content); } return this; } }, { key: "addLine", value: function addLine() { this.lines.push([]); this.lastCol0 = 0; return this; } }, { key: "addMapping", value: function addMapping(col0, sourceUrl, sourceLine0, sourceCol0) { if (!this.currentLine) { throw new Error("A line must be added before mappings can be added"); } if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) { throw new Error("Unknown source file \"".concat(sourceUrl, "\"")); } if (col0 == null) { throw new Error("The column in the generated code must be provided"); } if (col0 < this.lastCol0) { throw new Error("Mapping should be added in output order"); } if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) { throw new Error("The source location must be provided when a source url is provided"); } this.hasMappings = true; this.lastCol0 = col0; this.currentLine.push({ col0: col0, sourceUrl: sourceUrl, sourceLine0: sourceLine0, sourceCol0: sourceCol0 }); return this; } /** * @internal strip this from published d.ts files due to * https://github.com/microsoft/TypeScript/issues/36216 */ }, { key: "currentLine", get: function get() { return this.lines.slice(-1)[0]; } }, { key: "toJSON", value: function toJSON() { var _this85 = this; if (!this.hasMappings) { return null; } var sourcesIndex = new Map(); var sources = []; var sourcesContent = []; Array.from(this.sourcesContent.keys()).forEach(function (url, i) { sourcesIndex.set(url, i); sources.push(url); sourcesContent.push(_this85.sourcesContent.get(url) || null); }); var mappings = ''; var lastCol0 = 0; var lastSourceIndex = 0; var lastSourceLine0 = 0; var lastSourceCol0 = 0; this.lines.forEach(function (segments) { lastCol0 = 0; mappings += segments.map(function (segment) { // zero-based starting column of the line in the generated code var segAsStr = toBase64VLQ(segment.col0 - lastCol0); lastCol0 = segment.col0; if (segment.sourceUrl != null) { // zero-based index into the “sources” list segAsStr += toBase64VLQ(sourcesIndex.get(segment.sourceUrl) - lastSourceIndex); lastSourceIndex = sourcesIndex.get(segment.sourceUrl); // the zero-based starting line in the original source segAsStr += toBase64VLQ(segment.sourceLine0 - lastSourceLine0); lastSourceLine0 = segment.sourceLine0; // the zero-based starting column in the original source segAsStr += toBase64VLQ(segment.sourceCol0 - lastSourceCol0); lastSourceCol0 = segment.sourceCol0; } return segAsStr; }).join(','); mappings += ';'; }); mappings = mappings.slice(0, -1); return { 'file': this.file || '', 'version': VERSION, 'sourceRoot': '', 'sources': sources, 'sourcesContent': sourcesContent, 'mappings': mappings }; } }, { key: "toJsComment", value: function toJsComment() { return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) : ''; } }]); return SourceMapGenerator; }(); function toBase64String(value) { var b64 = ''; var encoded = utf8Encode(value); for (var i = 0; i < encoded.length;) { var i1 = encoded[i++]; var i2 = i < encoded.length ? encoded[i++] : null; var i3 = i < encoded.length ? encoded[i++] : null; b64 += toBase64Digit(i1 >> 2); b64 += toBase64Digit((i1 & 3) << 4 | (i2 === null ? 0 : i2 >> 4)); b64 += i2 === null ? '=' : toBase64Digit((i2 & 15) << 2 | (i3 === null ? 0 : i3 >> 6)); b64 += i2 === null || i3 === null ? '=' : toBase64Digit(i3 & 63); } return b64; } function toBase64VLQ(value) { value = value < 0 ? (-value << 1) + 1 : value << 1; var out = ''; do { var digit = value & 31; value = value >> 5; if (value > 0) { digit = digit | 32; } out += toBase64Digit(digit); } while (value > 0); return out; } var B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; function toBase64Digit(value) { if (value < 0 || value >= 64) { throw new Error("Can only encode value in the range [0, 63]"); } return B64_DIGITS[value]; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\|\n|\r|\$/g; var _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i; var _INDENT_WITH = ' '; var CATCH_ERROR_VAR$1 = variable('error', null, null); var CATCH_STACK_VAR$1 = variable('stack', null, null); var _EmittedLine = /*#__PURE__*/_createClass2(function _EmittedLine(indent) { _classCallCheck(this, _EmittedLine); this.indent = indent; this.partsLength = 0; this.parts = []; this.srcSpans = []; }); var EmitterVisitorContext = /*#__PURE__*/function () { function EmitterVisitorContext(_indent) { _classCallCheck(this, EmitterVisitorContext); this._indent = _indent; this._classes = []; this._preambleLineCount = 0; this._lines = [new _EmittedLine(_indent)]; } _createClass2(EmitterVisitorContext, [{ key: "_currentLine", get: /** * @internal strip this from published d.ts files due to * https://github.com/microsoft/TypeScript/issues/36216 */ function get() { return this._lines[this._lines.length - 1]; } }, { key: "println", value: function println(from) { var lastPart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; this.print(from || null, lastPart, true); } }, { key: "lineIsEmpty", value: function lineIsEmpty() { return this._currentLine.parts.length === 0; } }, { key: "lineLength", value: function lineLength() { return this._currentLine.indent * _INDENT_WITH.length + this._currentLine.partsLength; } }, { key: "print", value: function print(from, part) { var newLine = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (part.length > 0) { this._currentLine.parts.push(part); this._currentLine.partsLength += part.length; this._currentLine.srcSpans.push(from && from.sourceSpan || null); } if (newLine) { this._lines.push(new _EmittedLine(this._indent)); } } }, { key: "removeEmptyLastLine", value: function removeEmptyLastLine() { if (this.lineIsEmpty()) { this._lines.pop(); } } }, { key: "incIndent", value: function incIndent() { this._indent++; if (this.lineIsEmpty()) { this._currentLine.indent = this._indent; } } }, { key: "decIndent", value: function decIndent() { this._indent--; if (this.lineIsEmpty()) { this._currentLine.indent = this._indent; } } }, { key: "pushClass", value: function pushClass(clazz) { this._classes.push(clazz); } }, { key: "popClass", value: function popClass() { return this._classes.pop(); } }, { key: "currentClass", get: function get() { return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null; } }, { key: "toSource", value: function toSource() { return this.sourceLines.map(function (l) { return l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : ''; }).join('\n'); } }, { key: "toSourceMapGenerator", value: function toSourceMapGenerator(genFilePath) { var startsAtLine = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var map = new SourceMapGenerator(genFilePath); var firstOffsetMapped = false; var mapFirstOffsetIfNeeded = function mapFirstOffsetIfNeeded() { if (!firstOffsetMapped) { // Add a single space so that tools won't try to load the file from disk. // Note: We are using virtual urls like `ng:///`, so we have to // provide a content here. map.addSource(genFilePath, ' ').addMapping(0, genFilePath, 0, 0); firstOffsetMapped = true; } }; for (var i = 0; i < startsAtLine; i++) { map.addLine(); mapFirstOffsetIfNeeded(); } this.sourceLines.forEach(function (line, lineIdx) { map.addLine(); var spans = line.srcSpans; var parts = line.parts; var col0 = line.indent * _INDENT_WITH.length; var spanIdx = 0; // skip leading parts without source spans while (spanIdx < spans.length && !spans[spanIdx]) { col0 += parts[spanIdx].length; spanIdx++; } if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) { firstOffsetMapped = true; } else { mapFirstOffsetIfNeeded(); } while (spanIdx < spans.length) { var span = spans[spanIdx]; var source = span.start.file; var sourceLine = span.start.line; var sourceCol = span.start.col; map.addSource(source.url, source.content).addMapping(col0, source.url, sourceLine, sourceCol); col0 += parts[spanIdx].length; spanIdx++; // assign parts without span or the same span to the previous segment while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) { col0 += parts[spanIdx].length; spanIdx++; } } }); return map; } }, { key: "setPreambleLineCount", value: function setPreambleLineCount(count) { return this._preambleLineCount = count; } }, { key: "spanOf", value: function spanOf(line, column) { var emittedLine = this._lines[line - this._preambleLineCount]; if (emittedLine) { var columnsLeft = column - _createIndent(emittedLine.indent).length; for (var partIndex = 0; partIndex < emittedLine.parts.length; partIndex++) { var part = emittedLine.parts[partIndex]; if (part.length > columnsLeft) { return emittedLine.srcSpans[partIndex]; } columnsLeft -= part.length; } } return null; } /** * @internal strip this from published d.ts files due to * https://github.com/microsoft/TypeScript/issues/36216 */ }, { key: "sourceLines", get: function get() { if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) { return this._lines.slice(0, -1); } return this._lines; } }], [{ key: "createRoot", value: function createRoot() { return new EmitterVisitorContext(0); } }]); return EmitterVisitorContext; }(); var AbstractEmitterVisitor = /*#__PURE__*/function () { function AbstractEmitterVisitor(_escapeDollarInStrings) { _classCallCheck(this, AbstractEmitterVisitor); this._escapeDollarInStrings = _escapeDollarInStrings; } _createClass2(AbstractEmitterVisitor, [{ key: "printLeadingComments", value: function printLeadingComments(stmt, ctx) { if (stmt.leadingComments === undefined) { return; } var _iterator7 = _createForOfIteratorHelper(stmt.leadingComments), _step7; try { for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { var comment = _step7.value; if (comment instanceof JSDocComment) { ctx.print(stmt, "/*".concat(comment.toString(), "*/"), comment.trailingNewline); } else { if (comment.multiline) { ctx.print(stmt, "/* ".concat(comment.text, " */"), comment.trailingNewline); } else { comment.text.split('\n').forEach(function (line) { ctx.println(stmt, "// ".concat(line)); }); } } } } catch (err) { _iterator7.e(err); } finally { _iterator7.f(); } } }, { key: "visitExpressionStmt", value: function visitExpressionStmt(stmt, ctx) { this.printLeadingComments(stmt, ctx); stmt.expr.visitExpression(this, ctx); ctx.println(stmt, ';'); return null; } }, { key: "visitReturnStmt", value: function visitReturnStmt(stmt, ctx) { this.printLeadingComments(stmt, ctx); ctx.print(stmt, "return "); stmt.value.visitExpression(this, ctx); ctx.println(stmt, ';'); return null; } }, { key: "visitIfStmt", value: function visitIfStmt(stmt, ctx) { this.printLeadingComments(stmt, ctx); ctx.print(stmt, "if ("); stmt.condition.visitExpression(this, ctx); ctx.print(stmt, ") {"); var hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0; if (stmt.trueCase.length <= 1 && !hasElseCase) { ctx.print(stmt, " "); this.visitAllStatements(stmt.trueCase, ctx); ctx.removeEmptyLastLine(); ctx.print(stmt, " "); } else { ctx.println(); ctx.incIndent(); this.visitAllStatements(stmt.trueCase, ctx); ctx.decIndent(); if (hasElseCase) { ctx.println(stmt, "} else {"); ctx.incIndent(); this.visitAllStatements(stmt.falseCase, ctx); ctx.decIndent(); } } ctx.println(stmt, "}"); return null; } }, { key: "visitThrowStmt", value: function visitThrowStmt(stmt, ctx) { this.printLeadingComments(stmt, ctx); ctx.print(stmt, "throw "); stmt.error.visitExpression(this, ctx); ctx.println(stmt, ";"); return null; } }, { key: "visitWriteVarExpr", value: function visitWriteVarExpr(expr, ctx) { var lineWasEmpty = ctx.lineIsEmpty(); if (!lineWasEmpty) { ctx.print(expr, '('); } ctx.print(expr, "".concat(expr.name, " = ")); expr.value.visitExpression(this, ctx); if (!lineWasEmpty) { ctx.print(expr, ')'); } return null; } }, { key: "visitWriteKeyExpr", value: function visitWriteKeyExpr(expr, ctx) { var lineWasEmpty = ctx.lineIsEmpty(); if (!lineWasEmpty) { ctx.print(expr, '('); } expr.receiver.visitExpression(this, ctx); ctx.print(expr, "["); expr.index.visitExpression(this, ctx); ctx.print(expr, "] = "); expr.value.visitExpression(this, ctx); if (!lineWasEmpty) { ctx.print(expr, ')'); } return null; } }, { key: "visitWritePropExpr", value: function visitWritePropExpr(expr, ctx) { var lineWasEmpty = ctx.lineIsEmpty(); if (!lineWasEmpty) { ctx.print(expr, '('); } expr.receiver.visitExpression(this, ctx); ctx.print(expr, ".".concat(expr.name, " = ")); expr.value.visitExpression(this, ctx); if (!lineWasEmpty) { ctx.print(expr, ')'); } return null; } }, { key: "visitInvokeMethodExpr", value: function visitInvokeMethodExpr(expr, ctx) { expr.receiver.visitExpression(this, ctx); var name = expr.name; if (expr.builtin != null) { name = this.getBuiltinMethodName(expr.builtin); if (name == null) { // some builtins just mean to skip the call. return null; } } ctx.print(expr, ".".concat(name, "(")); this.visitAllExpressions(expr.args, ctx, ","); ctx.print(expr, ")"); return null; } }, { key: "visitInvokeFunctionExpr", value: function visitInvokeFunctionExpr(expr, ctx) { expr.fn.visitExpression(this, ctx); ctx.print(expr, "("); this.visitAllExpressions(expr.args, ctx, ','); ctx.print(expr, ")"); return null; } }, { key: "visitWrappedNodeExpr", value: function visitWrappedNodeExpr(ast, ctx) { throw new Error('Abstract emitter cannot visit WrappedNodeExpr.'); } }, { key: "visitTypeofExpr", value: function visitTypeofExpr(expr, ctx) { ctx.print(expr, 'typeof '); expr.expr.visitExpression(this, ctx); } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(ast, ctx) { var varName = ast.name; if (ast.builtin != null) { switch (ast.builtin) { case BuiltinVar.Super: varName = 'super'; break; case BuiltinVar.This: varName = 'this'; break; case BuiltinVar.CatchError: varName = CATCH_ERROR_VAR$1.name; break; case BuiltinVar.CatchStack: varName = CATCH_STACK_VAR$1.name; break; default: throw new Error("Unknown builtin variable ".concat(ast.builtin)); } } ctx.print(ast, varName); return null; } }, { key: "visitInstantiateExpr", value: function visitInstantiateExpr(ast, ctx) { ctx.print(ast, "new "); ast.classExpr.visitExpression(this, ctx); ctx.print(ast, "("); this.visitAllExpressions(ast.args, ctx, ','); ctx.print(ast, ")"); return null; } }, { key: "visitLiteralExpr", value: function visitLiteralExpr(ast, ctx) { var value = ast.value; if (typeof value === 'string') { ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings)); } else { ctx.print(ast, "".concat(value)); } return null; } }, { key: "visitLocalizedString", value: function visitLocalizedString(ast, ctx) { var head = ast.serializeI18nHead(); ctx.print(ast, '$localize `' + head.raw); for (var i = 1; i < ast.messageParts.length; i++) { ctx.print(ast, '${'); ast.expressions[i - 1].visitExpression(this, ctx); ctx.print(ast, "}".concat(ast.serializeI18nTemplatePart(i).raw)); } ctx.print(ast, '`'); return null; } }, { key: "visitConditionalExpr", value: function visitConditionalExpr(ast, ctx) { ctx.print(ast, "("); ast.condition.visitExpression(this, ctx); ctx.print(ast, '? '); ast.trueCase.visitExpression(this, ctx); ctx.print(ast, ': '); ast.falseCase.visitExpression(this, ctx); ctx.print(ast, ")"); return null; } }, { key: "visitNotExpr", value: function visitNotExpr(ast, ctx) { ctx.print(ast, '!'); ast.condition.visitExpression(this, ctx); return null; } }, { key: "visitAssertNotNullExpr", value: function visitAssertNotNullExpr(ast, ctx) { ast.condition.visitExpression(this, ctx); return null; } }, { key: "visitUnaryOperatorExpr", value: function visitUnaryOperatorExpr(ast, ctx) { var opStr; switch (ast.operator) { case UnaryOperator.Plus: opStr = '+'; break; case UnaryOperator.Minus: opStr = '-'; break; default: throw new Error("Unknown operator ".concat(ast.operator)); } if (ast.parens) ctx.print(ast, "("); ctx.print(ast, opStr); ast.expr.visitExpression(this, ctx); if (ast.parens) ctx.print(ast, ")"); return null; } }, { key: "visitBinaryOperatorExpr", value: function visitBinaryOperatorExpr(ast, ctx) { var opStr; switch (ast.operator) { case BinaryOperator.Equals: opStr = '=='; break; case BinaryOperator.Identical: opStr = '==='; break; case BinaryOperator.NotEquals: opStr = '!='; break; case BinaryOperator.NotIdentical: opStr = '!=='; break; case BinaryOperator.And: opStr = '&&'; break; case BinaryOperator.BitwiseAnd: opStr = '&'; break; case BinaryOperator.Or: opStr = '||'; break; case BinaryOperator.Plus: opStr = '+'; break; case BinaryOperator.Minus: opStr = '-'; break; case BinaryOperator.Divide: opStr = '/'; break; case BinaryOperator.Multiply: opStr = '*'; break; case BinaryOperator.Modulo: opStr = '%'; break; case BinaryOperator.Lower: opStr = '<'; break; case BinaryOperator.LowerEquals: opStr = '<='; break; case BinaryOperator.Bigger: opStr = '>'; break; case BinaryOperator.BiggerEquals: opStr = '>='; break; default: throw new Error("Unknown operator ".concat(ast.operator)); } if (ast.parens) ctx.print(ast, "("); ast.lhs.visitExpression(this, ctx); ctx.print(ast, " ".concat(opStr, " ")); ast.rhs.visitExpression(this, ctx); if (ast.parens) ctx.print(ast, ")"); return null; } }, { key: "visitReadPropExpr", value: function visitReadPropExpr(ast, ctx) { ast.receiver.visitExpression(this, ctx); ctx.print(ast, "."); ctx.print(ast, ast.name); return null; } }, { key: "visitReadKeyExpr", value: function visitReadKeyExpr(ast, ctx) { ast.receiver.visitExpression(this, ctx); ctx.print(ast, "["); ast.index.visitExpression(this, ctx); ctx.print(ast, "]"); return null; } }, { key: "visitLiteralArrayExpr", value: function visitLiteralArrayExpr(ast, ctx) { ctx.print(ast, "["); this.visitAllExpressions(ast.entries, ctx, ','); ctx.print(ast, "]"); return null; } }, { key: "visitLiteralMapExpr", value: function visitLiteralMapExpr(ast, ctx) { var _this86 = this; ctx.print(ast, "{"); this.visitAllObjects(function (entry) { ctx.print(ast, "".concat(escapeIdentifier(entry.key, _this86._escapeDollarInStrings, entry.quoted), ":")); entry.value.visitExpression(_this86, ctx); }, ast.entries, ctx, ','); ctx.print(ast, "}"); return null; } }, { key: "visitCommaExpr", value: function visitCommaExpr(ast, ctx) { ctx.print(ast, '('); this.visitAllExpressions(ast.parts, ctx, ','); ctx.print(ast, ')'); return null; } }, { key: "visitAllExpressions", value: function visitAllExpressions(expressions, ctx, separator) { var _this87 = this; this.visitAllObjects(function (expr) { return expr.visitExpression(_this87, ctx); }, expressions, ctx, separator); } }, { key: "visitAllObjects", value: function visitAllObjects(handler, expressions, ctx, separator) { var incrementedIndent = false; for (var i = 0; i < expressions.length; i++) { if (i > 0) { if (ctx.lineLength() > 80) { ctx.print(null, separator, true); if (!incrementedIndent) { // continuation are marked with double indent. ctx.incIndent(); ctx.incIndent(); incrementedIndent = true; } } else { ctx.print(null, separator, false); } } handler(expressions[i]); } if (incrementedIndent) { // continuation are marked with double indent. ctx.decIndent(); ctx.decIndent(); } } }, { key: "visitAllStatements", value: function visitAllStatements(statements, ctx) { var _this88 = this; statements.forEach(function (stmt) { return stmt.visitStatement(_this88, ctx); }); } }]); return AbstractEmitterVisitor; }(); function escapeIdentifier(input, escapeDollar) { var alwaysQuote = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; if (input == null) { return null; } var body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) == '$') { return escapeDollar ? '\\$' : '$'; } else if ((arguments.length <= 0 ? undefined : arguments[0]) == '\n') { return '\\n'; } else if ((arguments.length <= 0 ? undefined : arguments[0]) == '\r') { return '\\r'; } else { return "\\".concat(arguments.length <= 0 ? undefined : arguments[0]); } }); var requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body); return requiresQuotes ? "'".concat(body, "'") : body; } function _createIndent(count) { var res = ''; for (var i = 0; i < count; i++) { res += _INDENT_WITH; } return res; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var AbstractJsEmitterVisitor = /*#__PURE__*/function (_AbstractEmitterVisit) { _inherits(AbstractJsEmitterVisitor, _AbstractEmitterVisit); var _super57 = _createSuper(AbstractJsEmitterVisitor); function AbstractJsEmitterVisitor() { _classCallCheck(this, AbstractJsEmitterVisitor); return _super57.call(this, false); } _createClass2(AbstractJsEmitterVisitor, [{ key: "visitDeclareClassStmt", value: function visitDeclareClassStmt(stmt, ctx) { var _this89 = this; ctx.pushClass(stmt); this._visitClassConstructor(stmt, ctx); if (stmt.parent != null) { ctx.print(stmt, "".concat(stmt.name, ".prototype = Object.create(")); stmt.parent.visitExpression(this, ctx); ctx.println(stmt, ".prototype);"); } stmt.getters.forEach(function (getter) { return _this89._visitClassGetter(stmt, getter, ctx); }); stmt.methods.forEach(function (method) { return _this89._visitClassMethod(stmt, method, ctx); }); ctx.popClass(); return null; } }, { key: "_visitClassConstructor", value: function _visitClassConstructor(stmt, ctx) { ctx.print(stmt, "function ".concat(stmt.name, "(")); if (stmt.constructorMethod != null) { this._visitParams(stmt.constructorMethod.params, ctx); } ctx.println(stmt, ") {"); ctx.incIndent(); if (stmt.constructorMethod != null) { if (stmt.constructorMethod.body.length > 0) { ctx.println(stmt, "var self = this;"); this.visitAllStatements(stmt.constructorMethod.body, ctx); } } ctx.decIndent(); ctx.println(stmt, "}"); } }, { key: "_visitClassGetter", value: function _visitClassGetter(stmt, getter, ctx) { ctx.println(stmt, "Object.defineProperty(".concat(stmt.name, ".prototype, '").concat(getter.name, "', { get: function() {")); ctx.incIndent(); if (getter.body.length > 0) { ctx.println(stmt, "var self = this;"); this.visitAllStatements(getter.body, ctx); } ctx.decIndent(); ctx.println(stmt, "}});"); } }, { key: "_visitClassMethod", value: function _visitClassMethod(stmt, method, ctx) { ctx.print(stmt, "".concat(stmt.name, ".prototype.").concat(method.name, " = function(")); this._visitParams(method.params, ctx); ctx.println(stmt, ") {"); ctx.incIndent(); if (method.body.length > 0) { ctx.println(stmt, "var self = this;"); this.visitAllStatements(method.body, ctx); } ctx.decIndent(); ctx.println(stmt, "};"); } }, { key: "visitWrappedNodeExpr", value: function visitWrappedNodeExpr(ast, ctx) { throw new Error('Cannot emit a WrappedNodeExpr in Javascript.'); } }, { key: "visitReadVarExpr", value: function visitReadVarExpr(ast, ctx) { if (ast.builtin === BuiltinVar.This) { ctx.print(ast, 'self'); } else if (ast.builtin === BuiltinVar.Super) { throw new Error("'super' needs to be handled at a parent ast node, not at the variable level!"); } else { _get(_getPrototypeOf(AbstractJsEmitterVisitor.prototype), "visitReadVarExpr", this).call(this, ast, ctx); } return null; } }, { key: "visitDeclareVarStmt", value: function visitDeclareVarStmt(stmt, ctx) { ctx.print(stmt, "var ".concat(stmt.name)); if (stmt.value) { ctx.print(stmt, ' = '); stmt.value.visitExpression(this, ctx); } ctx.println(stmt, ";"); return null; } }, { key: "visitCastExpr", value: function visitCastExpr(ast, ctx) { ast.value.visitExpression(this, ctx); return null; } }, { key: "visitInvokeFunctionExpr", value: function visitInvokeFunctionExpr(expr, ctx) { var fnExpr = expr.fn; if (fnExpr instanceof ReadVarExpr && fnExpr.builtin === BuiltinVar.Super) { ctx.currentClass.parent.visitExpression(this, ctx); ctx.print(expr, ".call(this"); if (expr.args.length > 0) { ctx.print(expr, ", "); this.visitAllExpressions(expr.args, ctx, ','); } ctx.print(expr, ")"); } else { _get(_getPrototypeOf(AbstractJsEmitterVisitor.prototype), "visitInvokeFunctionExpr", this).call(this, expr, ctx); } return null; } }, { key: "visitFunctionExpr", value: function visitFunctionExpr(ast, ctx) { ctx.print(ast, "function".concat(ast.name ? ' ' + ast.name : '', "(")); this._visitParams(ast.params, ctx); ctx.println(ast, ") {"); ctx.incIndent(); this.visitAllStatements(ast.statements, ctx); ctx.decIndent(); ctx.print(ast, "}"); return null; } }, { key: "visitDeclareFunctionStmt", value: function visitDeclareFunctionStmt(stmt, ctx) { ctx.print(stmt, "function ".concat(stmt.name, "(")); this._visitParams(stmt.params, ctx); ctx.println(stmt, ") {"); ctx.incIndent(); this.visitAllStatements(stmt.statements, ctx); ctx.decIndent(); ctx.println(stmt, "}"); return null; } }, { key: "visitTryCatchStmt", value: function visitTryCatchStmt(stmt, ctx) { ctx.println(stmt, "try {"); ctx.incIndent(); this.visitAllStatements(stmt.bodyStmts, ctx); ctx.decIndent(); ctx.println(stmt, "} catch (".concat(CATCH_ERROR_VAR$1.name, ") {")); ctx.incIndent(); var catchStmts = [CATCH_STACK_VAR$1.set(CATCH_ERROR_VAR$1.prop('stack')).toDeclStmt(null, [StmtModifier.Final])].concat(stmt.catchStmts); this.visitAllStatements(catchStmts, ctx); ctx.decIndent(); ctx.println(stmt, "}"); return null; } }, { key: "visitLocalizedString", value: function visitLocalizedString(ast, ctx) { var _this90 = this; // The following convoluted piece of code is effectively the downlevelled equivalent of // ``` // $localize `...` // ``` // which is effectively like: // ``` // $localize(__makeTemplateObject(cooked, raw), expression1, expression2, ...); // ``` // // The `$localize` function expects a "template object", which is an array of "cooked" strings // plus a `raw` property that contains an array of "raw" strings. // // In some environments a helper function called `__makeTemplateObject(cooked, raw)` might be // available, in which case we use that. Otherwise we must create our own helper function // inline. // // In the inline function, if `Object.defineProperty` is available we use that to attach the // `raw` array. ctx.print(ast, '$localize((this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e})('); var parts = [ast.serializeI18nHead()]; for (var i = 1; i < ast.messageParts.length; i++) { parts.push(ast.serializeI18nTemplatePart(i)); } ctx.print(ast, "[".concat(parts.map(function (part) { return escapeIdentifier(part.cooked, false); }).join(', '), "], ")); ctx.print(ast, "[".concat(parts.map(function (part) { return escapeIdentifier(part.raw, false); }).join(', '), "])")); ast.expressions.forEach(function (expression) { ctx.print(ast, ', '); expression.visitExpression(_this90, ctx); }); ctx.print(ast, ')'); return null; } }, { key: "_visitParams", value: function _visitParams(params, ctx) { this.visitAllObjects(function (param) { return ctx.print(null, param.name); }, params, ctx, ','); } }, { key: "getBuiltinMethodName", value: function getBuiltinMethodName(method) { var name; switch (method) { case BuiltinMethod.ConcatArray: name = 'concat'; break; case BuiltinMethod.SubscribeObservable: name = 'subscribe'; break; case BuiltinMethod.Bind: name = 'bind'; break; default: throw new Error("Unknown builtin method: ".concat(method)); } return name; } }]); return AbstractJsEmitterVisitor; }(AbstractEmitterVisitor); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A helper class to manage the evaluation of JIT generated code. */ var JitEvaluator = /*#__PURE__*/function () { function JitEvaluator() { _classCallCheck(this, JitEvaluator); } _createClass2(JitEvaluator, [{ key: "evaluateStatements", value: /** * * @param sourceUrl The URL of the generated code. * @param statements An array of Angular statement AST nodes to be evaluated. * @param reflector A helper used when converting the statements to executable code. * @param createSourceMaps If true then create a source-map for the generated code and include it * inline as a source-map comment. * @returns A map of all the variables in the generated code. */ function evaluateStatements(sourceUrl, statements, reflector, createSourceMaps) { var converter = new JitEmitterVisitor(reflector); var ctx = EmitterVisitorContext.createRoot(); // Ensure generated code is in strict mode if (statements.length > 0 && !isUseStrictStatement(statements[0])) { statements = [literal('use strict').toStmt()].concat(_toConsumableArray(statements)); } converter.visitAllStatements(statements, ctx); converter.createReturnStmt(ctx); return this.evaluateCode(sourceUrl, ctx, converter.getArgs(), createSourceMaps); } /** * Evaluate a piece of JIT generated code. * @param sourceUrl The URL of this generated code. * @param ctx A context object that contains an AST of the code to be evaluated. * @param vars A map containing the names and values of variables that the evaluated code might * reference. * @param createSourceMap If true then create a source-map for the generated code and include it * inline as a source-map comment. * @returns The result of evaluating the code. */ }, { key: "evaluateCode", value: function evaluateCode(sourceUrl, ctx, vars, createSourceMap) { var fnBody = "\"use strict\";".concat(ctx.toSource(), "\n//# sourceURL=").concat(sourceUrl); var fnArgNames = []; var fnArgValues = []; for (var argName in vars) { fnArgValues.push(vars[argName]); fnArgNames.push(argName); } if (createSourceMap) { // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise // E.g. ``` // function anonymous(a,b,c // /**/) { ... }``` // We don't want to hard code this fact, so we auto detect it via an empty function first. var emptyFn = _construct(Function, _toConsumableArray(fnArgNames.concat('return null;'))).toString(); var headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\n').length - 1; fnBody += "\n".concat(ctx.toSourceMapGenerator(sourceUrl, headerLines).toJsComment()); } var fn = _construct(Function, _toConsumableArray(fnArgNames.concat(fnBody))); return this.executeFunction(fn, fnArgValues); } /** * Execute a JIT generated function by calling it. * * This method can be overridden in tests to capture the functions that are generated * by this `JitEvaluator` class. * * @param fn A function to execute. * @param args The arguments to pass to the function being executed. * @returns The return value of the executed function. */ }, { key: "executeFunction", value: function executeFunction(fn, args) { return fn.apply(void 0, _toConsumableArray(args)); } }]); return JitEvaluator; }(); /** * An Angular AST visitor that converts AST nodes into executable JavaScript code. */ var JitEmitterVisitor = /*#__PURE__*/function (_AbstractJsEmitterVis) { _inherits(JitEmitterVisitor, _AbstractJsEmitterVis); var _super58 = _createSuper(JitEmitterVisitor); function JitEmitterVisitor(reflector) { var _this91; _classCallCheck(this, JitEmitterVisitor); _this91 = _super58.call(this); _this91.reflector = reflector; _this91._evalArgNames = []; _this91._evalArgValues = []; _this91._evalExportedVars = []; return _this91; } _createClass2(JitEmitterVisitor, [{ key: "createReturnStmt", value: function createReturnStmt(ctx) { var stmt = new ReturnStatement(new LiteralMapExpr(this._evalExportedVars.map(function (resultVar) { return new LiteralMapEntry(resultVar, variable(resultVar), false); }))); stmt.visitStatement(this, ctx); } }, { key: "getArgs", value: function getArgs() { var result = {}; for (var i = 0; i < this._evalArgNames.length; i++) { result[this._evalArgNames[i]] = this._evalArgValues[i]; } return result; } }, { key: "visitExternalExpr", value: function visitExternalExpr(ast, ctx) { this._emitReferenceToExternal(ast, this.reflector.resolveExternalReference(ast.value), ctx); return null; } }, { key: "visitWrappedNodeExpr", value: function visitWrappedNodeExpr(ast, ctx) { this._emitReferenceToExternal(ast, ast.node, ctx); return null; } }, { key: "visitDeclareVarStmt", value: function visitDeclareVarStmt(stmt, ctx) { if (stmt.hasModifier(StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } return _get(_getPrototypeOf(JitEmitterVisitor.prototype), "visitDeclareVarStmt", this).call(this, stmt, ctx); } }, { key: "visitDeclareFunctionStmt", value: function visitDeclareFunctionStmt(stmt, ctx) { if (stmt.hasModifier(StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } return _get(_getPrototypeOf(JitEmitterVisitor.prototype), "visitDeclareFunctionStmt", this).call(this, stmt, ctx); } }, { key: "visitDeclareClassStmt", value: function visitDeclareClassStmt(stmt, ctx) { if (stmt.hasModifier(StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } return _get(_getPrototypeOf(JitEmitterVisitor.prototype), "visitDeclareClassStmt", this).call(this, stmt, ctx); } }, { key: "_emitReferenceToExternal", value: function _emitReferenceToExternal(ast, value, ctx) { var id = this._evalArgValues.indexOf(value); if (id === -1) { id = this._evalArgValues.length; this._evalArgValues.push(value); var name = identifierName({ reference: value }) || 'val'; this._evalArgNames.push("jit_".concat(name, "_").concat(id)); } ctx.print(ast, this._evalArgNames[id]); } }]); return JitEmitterVisitor; }(AbstractJsEmitterVisitor); function isUseStrictStatement(statement) { return statement.isEquivalent(literal('use strict').toStmt()); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var $EOF = 0; var $BSPACE = 8; var $TAB = 9; var $LF = 10; var $VTAB = 11; var $FF = 12; var $CR = 13; var $SPACE = 32; var $BANG = 33; var $DQ = 34; var $HASH = 35; var $$ = 36; var $PERCENT = 37; var $AMPERSAND = 38; var $SQ = 39; var $LPAREN = 40; var $RPAREN = 41; var $STAR = 42; var $PLUS = 43; var $COMMA = 44; var $MINUS = 45; var $PERIOD = 46; var $SLASH = 47; var $COLON = 58; var $SEMICOLON = 59; var $LT = 60; var $EQ = 61; var $GT = 62; var $QUESTION = 63; var $0 = 48; var $7 = 55; var $9 = 57; var $A = 65; var $E = 69; var $F = 70; var $X = 88; var $Z = 90; var $LBRACKET = 91; var $BACKSLASH = 92; var $RBRACKET = 93; var $CARET = 94; var $_ = 95; var $a = 97; var $b = 98; var $e = 101; var $f = 102; var $n = 110; var $r = 114; var $t = 116; var $u = 117; var $v = 118; var $x = 120; var $z = 122; var $LBRACE = 123; var $BAR = 124; var $RBRACE = 125; var $NBSP = 160; var $PIPE = 124; var $TILDA = 126; var $AT = 64; var $BT = 96; function isWhitespace(code) { return code >= $TAB && code <= $SPACE || code == $NBSP; } function isDigit(code) { return $0 <= code && code <= $9; } function isAsciiLetter(code) { return code >= $a && code <= $z || code >= $A && code <= $Z; } function isAsciiHexDigit(code) { return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code); } function isNewLine(code) { return code === $LF || code === $CR; } function isOctalDigit(code) { return $0 <= code && code <= $7; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var ParseLocation = /*#__PURE__*/function () { function ParseLocation(file, offset, line, col) { _classCallCheck(this, ParseLocation); this.file = file; this.offset = offset; this.line = line; this.col = col; } _createClass2(ParseLocation, [{ key: "toString", value: function toString() { return this.offset != null ? "".concat(this.file.url, "@").concat(this.line, ":").concat(this.col) : this.file.url; } }, { key: "moveBy", value: function moveBy(delta) { var source = this.file.content; var len = source.length; var offset = this.offset; var line = this.line; var col = this.col; while (offset > 0 && delta < 0) { offset--; delta++; var ch = source.charCodeAt(offset); if (ch == $LF) { line--; var priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode($LF)); col = priorLine > 0 ? offset - priorLine : offset; } else { col--; } } while (offset < len && delta > 0) { var _ch = source.charCodeAt(offset); offset++; delta--; if (_ch == $LF) { line++; col = 0; } else { col++; } } return new ParseLocation(this.file, offset, line, col); } // Return the source around the location // Up to `maxChars` or `maxLines` on each side of the location }, { key: "getContext", value: function getContext(maxChars, maxLines) { var content = this.file.content; var startOffset = this.offset; if (startOffset != null) { if (startOffset > content.length - 1) { startOffset = content.length - 1; } var endOffset = startOffset; var ctxChars = 0; var ctxLines = 0; while (ctxChars < maxChars && startOffset > 0) { startOffset--; ctxChars++; if (content[startOffset] == '\n') { if (++ctxLines == maxLines) { break; } } } ctxChars = 0; ctxLines = 0; while (ctxChars < maxChars && endOffset < content.length - 1) { endOffset++; ctxChars++; if (content[endOffset] == '\n') { if (++ctxLines == maxLines) { break; } } } return { before: content.substring(startOffset, this.offset), after: content.substring(this.offset, endOffset + 1) }; } return null; } }]); return ParseLocation; }(); var ParseSourceFile = /*#__PURE__*/_createClass2(function ParseSourceFile(content, url) { _classCallCheck(this, ParseSourceFile); this.content = content; this.url = url; }); var ParseSourceSpan = /*#__PURE__*/function () { /** * Create an object that holds information about spans of tokens/nodes captured during * lexing/parsing of text. * * @param start * The location of the start of the span (having skipped leading trivia). * Skipping leading trivia makes source-spans more "user friendly", since things like HTML * elements will appear to begin at the start of the opening tag, rather than at the start of any * leading trivia, which could include newlines. * * @param end * The location of the end of the span. * * @param fullStart * The start of the token without skipping the leading trivia. * This is used by tooling that splits tokens further, such as extracting Angular interpolations * from text tokens. Such tooling creates new source-spans relative to the original token's * source-span. If leading trivia characters have been skipped then the new source-spans may be * incorrectly offset. * * @param details * Additional information (such as identifier names) that should be associated with the span. */ function ParseSourceSpan(start, end) { var fullStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : start; var details = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; _classCallCheck(this, ParseSourceSpan); this.start = start; this.end = end; this.fullStart = fullStart; this.details = details; } _createClass2(ParseSourceSpan, [{ key: "toString", value: function toString() { return this.start.file.content.substring(this.start.offset, this.end.offset); } }]); return ParseSourceSpan; }(); var ParseErrorLevel; (function (ParseErrorLevel) { ParseErrorLevel[ParseErrorLevel["WARNING"] = 0] = "WARNING"; ParseErrorLevel[ParseErrorLevel["ERROR"] = 1] = "ERROR"; })(ParseErrorLevel || (ParseErrorLevel = {})); var ParseError = /*#__PURE__*/function () { function ParseError(span, msg) { var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ParseErrorLevel.ERROR; _classCallCheck(this, ParseError); this.span = span; this.msg = msg; this.level = level; } _createClass2(ParseError, [{ key: "contextualMessage", value: function contextualMessage() { var ctx = this.span.start.getContext(100, 3); return ctx ? "".concat(this.msg, " (\"").concat(ctx.before, "[").concat(ParseErrorLevel[this.level], " ->]").concat(ctx.after, "\")") : this.msg; } }, { key: "toString", value: function toString() { var details = this.span.details ? ", ".concat(this.span.details) : ''; return "".concat(this.contextualMessage(), ": ").concat(this.span.start).concat(details); } }]); return ParseError; }(); function typeSourceSpan(kind, type) { var moduleUrl = identifierModuleUrl(type); var sourceFileName = moduleUrl != null ? "in ".concat(kind, " ").concat(identifierName(type), " in ").concat(moduleUrl) : "in ".concat(kind, " ").concat(identifierName(type)); var sourceFile = new ParseSourceFile('', sourceFileName); return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1)); } /** * Generates Source Span object for a given R3 Type for JIT mode. * * @param kind Component or Directive. * @param typeName name of the Component or Directive. * @param sourceUrl reference to Component or Directive source. * @returns instance of ParseSourceSpan that represent a given Component or Directive. */ function r3JitTypeSourceSpan(kind, typeName, sourceUrl) { var sourceFileName = "in ".concat(kind, " ").concat(typeName, " in ").concat(sourceUrl); var sourceFile = new ParseSourceFile('', sourceFileName); return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1)); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Implementation of `CompileReflector` which resolves references to @angular/core * symbols at runtime, according to a consumer-provided mapping. * * Only supports `resolveExternalReference`, all other methods throw. */ var R3JitReflector = /*#__PURE__*/function () { function R3JitReflector(context) { _classCallCheck(this, R3JitReflector); this.context = context; } _createClass2(R3JitReflector, [{ key: "resolveExternalReference", value: function resolveExternalReference(ref) { // This reflector only handles @angular/core imports. if (ref.moduleName !== '@angular/core') { throw new Error("Cannot resolve external reference to ".concat(ref.moduleName, ", only references to @angular/core are supported.")); } if (!this.context.hasOwnProperty(ref.name)) { throw new Error("No value provided for @angular/core symbol '".concat(ref.name, "'.")); } return this.context[ref.name]; } }, { key: "parameters", value: function parameters(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "annotations", value: function annotations(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "shallowAnnotations", value: function shallowAnnotations(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "tryAnnotations", value: function tryAnnotations(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "propMetadata", value: function propMetadata(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "hasLifecycleHook", value: function hasLifecycleHook(type, lcProperty) { throw new Error('Not implemented.'); } }, { key: "guards", value: function guards(typeOrFunc) { throw new Error('Not implemented.'); } }, { key: "componentModuleUrl", value: function componentModuleUrl(type, cmpMetadata) { throw new Error('Not implemented.'); } }]); return R3JitReflector; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function mapEntry(key, value) { return { key: key, value: value, quoted: false }; } function mapLiteral(obj) { var quoted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return literalMap(Object.keys(obj).map(function (key) { return { key: key, quoted: quoted, value: obj[key] }; })); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Construct an `R3NgModuleDef` for the given `R3NgModuleMetadata`. */ function _compileNgModule(meta) { var internalType = meta.internalType, moduleType = meta.type, bootstrap = meta.bootstrap, declarations = meta.declarations, imports = meta.imports, exports = meta.exports, schemas = meta.schemas, containsForwardDecls = meta.containsForwardDecls, emitInline = meta.emitInline, id = meta.id; var additionalStatements = []; var definitionMap = { type: internalType }; // Only generate the keys in the metadata if the arrays have values. if (bootstrap.length) { definitionMap.bootstrap = refsToArray(bootstrap, containsForwardDecls); } // If requested to emit scope information inline, pass the declarations, imports and exports to // the `ɵɵdefineNgModule` call. The JIT compilation uses this. if (emitInline) { if (declarations.length) { definitionMap.declarations = refsToArray(declarations, containsForwardDecls); } if (imports.length) { definitionMap.imports = refsToArray(imports, containsForwardDecls); } if (exports.length) { definitionMap.exports = refsToArray(exports, containsForwardDecls); } } // If not emitting inline, the scope information is not passed into `ɵɵdefineNgModule` as it would // prevent tree-shaking of the declarations, imports and exports references. else { var setNgModuleScopeCall = generateSetNgModuleScopeCall(meta); if (setNgModuleScopeCall !== null) { additionalStatements.push(setNgModuleScopeCall); } } if (schemas && schemas.length) { definitionMap.schemas = literalArr(schemas.map(function (ref) { return ref.value; })); } if (id) { definitionMap.id = id; } var expression = importExpr(Identifiers$1.defineNgModule).callFn([mapToMapExpression(definitionMap)]); var type = new ExpressionType(importExpr(Identifiers$1.NgModuleDefWithMeta, [new ExpressionType(moduleType.type), tupleTypeOf(declarations), tupleTypeOf(imports), tupleTypeOf(exports)])); return { expression: expression, type: type, additionalStatements: additionalStatements }; } /** * Generates a function call to `ɵɵsetNgModuleScope` with all necessary information so that the * transitive module scope can be computed during runtime in JIT mode. This call is marked pure * such that the references to declarations, imports and exports may be elided causing these * symbols to become tree-shakeable. */ function generateSetNgModuleScopeCall(meta) { var moduleType = meta.adjacentType, declarations = meta.declarations, imports = meta.imports, exports = meta.exports, containsForwardDecls = meta.containsForwardDecls; var scopeMap = {}; if (declarations.length) { scopeMap.declarations = refsToArray(declarations, containsForwardDecls); } if (imports.length) { scopeMap.imports = refsToArray(imports, containsForwardDecls); } if (exports.length) { scopeMap.exports = refsToArray(exports, containsForwardDecls); } if (Object.keys(scopeMap).length === 0) { return null; } // setNgModuleScope(...) var fnCall = new InvokeFunctionExpr( /* fn */ importExpr(Identifiers$1.setNgModuleScope), /* args */ [moduleType, mapToMapExpression(scopeMap)]); // (ngJitMode guard) && setNgModuleScope(...) var guardedCall = jitOnlyGuardedExpression(fnCall); // function() { (ngJitMode guard) && setNgModuleScope(...); } var iife = new FunctionExpr( /* params */ [], /* statements */ [guardedCall.toStmt()]); // (function() { (ngJitMode guard) && setNgModuleScope(...); })() var iifeCall = new InvokeFunctionExpr( /* fn */ iife, /* args */ []); return iifeCall.toStmt(); } function _compileInjector(meta) { var result = compileFactoryFunction({ name: meta.name, type: meta.type, internalType: meta.internalType, typeArgumentCount: 0, deps: meta.deps, injectFn: Identifiers$1.inject, target: R3FactoryTarget.NgModule }); var definitionMap = { factory: result.factory }; if (meta.providers !== null) { definitionMap.providers = meta.providers; } if (meta.imports.length > 0) { definitionMap.imports = literalArr(meta.imports); } var expression = importExpr(Identifiers$1.defineInjector).callFn([mapToMapExpression(definitionMap)]); var type = new ExpressionType(importExpr(Identifiers$1.InjectorDef, [new ExpressionType(meta.type.type)])); return { expression: expression, type: type, statements: result.statements }; } // TODO(alxhub): integrate this with `compileNgModule`. Currently the two are separate operations. function compileNgModuleFromRender2(ctx, ngModule, injectableCompiler) { var className = identifierName(ngModule.type); var rawImports = ngModule.rawImports ? [ngModule.rawImports] : []; var rawExports = ngModule.rawExports ? [ngModule.rawExports] : []; var injectorDefArg = mapLiteral({ 'factory': injectableCompiler.factoryFor({ type: ngModule.type, symbol: ngModule.type.reference }, ctx), 'providers': convertMetaToOutput(ngModule.rawProviders, ctx), 'imports': convertMetaToOutput([].concat(rawImports, rawExports), ctx) }); var injectorDef = importExpr(Identifiers$1.defineInjector).callFn([injectorDefArg]); ctx.statements.push(new ClassStmt( /* name */ className, /* parent */ null, /* fields */ [new ClassField( /* name */ 'ɵinj', /* type */ INFERRED_TYPE, /* modifiers */ [StmtModifier.Static], /* initializer */ injectorDef)], /* getters */ [], /* constructorMethod */ new ClassMethod(null, [], []), /* methods */ [])); } function accessExportScope(module) { var selectorScope = new ReadPropExpr(module, 'ɵmod'); return new ReadPropExpr(selectorScope, 'exported'); } function tupleTypeOf(exp) { var types = exp.map(function (ref) { return typeofExpr(ref.type); }); return exp.length > 0 ? expressionType(literalArr(types)) : NONE_TYPE; } function refsToArray(refs, shouldForwardDeclare) { var values = literalArr(refs.map(function (ref) { return ref.value; })); return shouldForwardDeclare ? fn([], [new ReturnStatement(values)]) : values; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function compilePipeFromMetadata(metadata) { var definitionMapValues = []; // e.g. `name: 'myPipe'` definitionMapValues.push({ key: 'name', value: literal(metadata.pipeName), quoted: false }); // e.g. `type: MyPipe` definitionMapValues.push({ key: 'type', value: metadata.type.value, quoted: false }); // e.g. `pure: true` definitionMapValues.push({ key: 'pure', value: literal(metadata.pure), quoted: false }); var expression = importExpr(Identifiers$1.definePipe).callFn([literalMap(definitionMapValues)]); var type = new ExpressionType(importExpr(Identifiers$1.PipeDefWithMeta, [typeWithParameters(metadata.type.type, metadata.typeArgumentCount), new ExpressionType(new LiteralExpr(metadata.pipeName))])); return { expression: expression, type: type }; } /** * Write a pipe definition to the output context. */ function compilePipeFromRender2(outputCtx, pipe, reflector) { var name = identifierName(pipe.type); if (!name) { return error("Cannot resolve the name of ".concat(pipe.type)); } var type = outputCtx.importExpr(pipe.type.reference); var metadata = { name: name, type: wrapReference(type), internalType: type, pipeName: pipe.name, typeArgumentCount: 0, deps: dependenciesFromGlobalMetadata(pipe.type, outputCtx, reflector), pure: pipe.pure }; var res = compilePipeFromMetadata(metadata); var factoryRes = compileFactoryFunction(Object.assign(Object.assign({}, metadata), { injectFn: Identifiers$1.directiveInject, target: R3FactoryTarget.Pipe })); var definitionField = outputCtx.constantPool.propertyNameOf(3 /* Pipe */ ); var ngFactoryDefStatement = new ClassStmt( /* name */ name, /* parent */ null, /* fields */ [new ClassField( /* name */ 'ɵfac', /* type */ INFERRED_TYPE, /* modifiers */ [StmtModifier.Static], /* initializer */ factoryRes.factory)], /* getters */ [], /* constructorMethod */ new ClassMethod(null, [], []), /* methods */ []); var pipeDefStatement = new ClassStmt( /* name */ name, /* parent */ null, /* fields */ [new ClassField( /* name */ definitionField, /* type */ INFERRED_TYPE, /* modifiers */ [StmtModifier.Static], /* initializer */ res.expression)], /* getters */ [], /* constructorMethod */ new ClassMethod(null, [], []), /* methods */ []); outputCtx.statements.push(ngFactoryDefStatement, pipeDefStatement); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var ParserError = /*#__PURE__*/_createClass2(function ParserError(message, input, errLocation, ctxLocation) { _classCallCheck(this, ParserError); this.input = input; this.errLocation = errLocation; this.ctxLocation = ctxLocation; this.message = "Parser Error: ".concat(message, " ").concat(errLocation, " [").concat(input, "] in ").concat(ctxLocation); }); var ParseSpan = /*#__PURE__*/function () { function ParseSpan(start, end) { _classCallCheck(this, ParseSpan); this.start = start; this.end = end; } _createClass2(ParseSpan, [{ key: "toAbsolute", value: function toAbsolute(absoluteOffset) { return new AbsoluteSourceSpan(absoluteOffset + this.start, absoluteOffset + this.end); } }]); return ParseSpan; }(); var AST = /*#__PURE__*/function () { function AST(span, /** * Absolute location of the expression AST in a source code file. */ sourceSpan) { _classCallCheck(this, AST); this.span = span; this.sourceSpan = sourceSpan; } _createClass2(AST, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return null; } }, { key: "toString", value: function toString() { return 'AST'; } }]); return AST; }(); var ASTWithName = /*#__PURE__*/function (_AST) { _inherits(ASTWithName, _AST); var _super59 = _createSuper(ASTWithName); function ASTWithName(span, sourceSpan, nameSpan) { var _this92; _classCallCheck(this, ASTWithName); _this92 = _super59.call(this, span, sourceSpan); _this92.nameSpan = nameSpan; return _this92; } return _createClass2(ASTWithName); }(AST); /** * Represents a quoted expression of the form: * * quote = prefix `:` uninterpretedExpression * prefix = identifier * uninterpretedExpression = arbitrary string * * A quoted expression is meant to be pre-processed by an AST transformer that * converts it into another AST that no longer contains quoted expressions. * It is meant to allow third-party developers to extend Angular template * expression language. The `uninterpretedExpression` part of the quote is * therefore not interpreted by the Angular's own expression parser. */ var Quote = /*#__PURE__*/function (_AST2) { _inherits(Quote, _AST2); var _super60 = _createSuper(Quote); function Quote(span, sourceSpan, prefix, uninterpretedExpression, location) { var _this93; _classCallCheck(this, Quote); _this93 = _super60.call(this, span, sourceSpan); _this93.prefix = prefix; _this93.uninterpretedExpression = uninterpretedExpression; _this93.location = location; return _this93; } _createClass2(Quote, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitQuote(this, context); } }, { key: "toString", value: function toString() { return 'Quote'; } }]); return Quote; }(AST); var EmptyExpr = /*#__PURE__*/function (_AST3) { _inherits(EmptyExpr, _AST3); var _super61 = _createSuper(EmptyExpr); function EmptyExpr() { _classCallCheck(this, EmptyExpr); return _super61.apply(this, arguments); } _createClass2(EmptyExpr, [{ key: "visit", value: function visit(visitor) {// do nothing var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; } }]); return EmptyExpr; }(AST); var ImplicitReceiver = /*#__PURE__*/function (_AST4) { _inherits(ImplicitReceiver, _AST4); var _super62 = _createSuper(ImplicitReceiver); function ImplicitReceiver() { _classCallCheck(this, ImplicitReceiver); return _super62.apply(this, arguments); } _createClass2(ImplicitReceiver, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitImplicitReceiver(this, context); } }]); return ImplicitReceiver; }(AST); /** * Receiver when something is accessed through `this` (e.g. `this.foo`). Note that this class * inherits from `ImplicitReceiver`, because accessing something through `this` is treated the * same as accessing it implicitly inside of an Angular template (e.g. `[attr.title]="this.title"` * is the same as `[attr.title]="title"`.). Inheriting allows for the `this` accesses to be treated * the same as implicit ones, except for a couple of exceptions like `$event` and `$any`. * TODO: we should find a way for this class not to extend from `ImplicitReceiver` in the future. */ var ThisReceiver = /*#__PURE__*/function (_ImplicitReceiver) { _inherits(ThisReceiver, _ImplicitReceiver); var _super63 = _createSuper(ThisReceiver); function ThisReceiver() { _classCallCheck(this, ThisReceiver); return _super63.apply(this, arguments); } _createClass2(ThisReceiver, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var _a; return (_a = visitor.visitThisReceiver) === null || _a === void 0 ? void 0 : _a.call(visitor, this, context); } }]); return ThisReceiver; }(ImplicitReceiver); /** * Multiple expressions separated by a semicolon. */ var Chain = /*#__PURE__*/function (_AST5) { _inherits(Chain, _AST5); var _super64 = _createSuper(Chain); function Chain(span, sourceSpan, expressions) { var _this94; _classCallCheck(this, Chain); _this94 = _super64.call(this, span, sourceSpan); _this94.expressions = expressions; return _this94; } _createClass2(Chain, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitChain(this, context); } }]); return Chain; }(AST); var Conditional = /*#__PURE__*/function (_AST6) { _inherits(Conditional, _AST6); var _super65 = _createSuper(Conditional); function Conditional(span, sourceSpan, condition, trueExp, falseExp) { var _this95; _classCallCheck(this, Conditional); _this95 = _super65.call(this, span, sourceSpan); _this95.condition = condition; _this95.trueExp = trueExp; _this95.falseExp = falseExp; return _this95; } _createClass2(Conditional, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitConditional(this, context); } }]); return Conditional; }(AST); var PropertyRead = /*#__PURE__*/function (_ASTWithName) { _inherits(PropertyRead, _ASTWithName); var _super66 = _createSuper(PropertyRead); function PropertyRead(span, sourceSpan, nameSpan, receiver, name) { var _this96; _classCallCheck(this, PropertyRead); _this96 = _super66.call(this, span, sourceSpan, nameSpan); _this96.receiver = receiver; _this96.name = name; return _this96; } _createClass2(PropertyRead, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitPropertyRead(this, context); } }]); return PropertyRead; }(ASTWithName); var PropertyWrite = /*#__PURE__*/function (_ASTWithName2) { _inherits(PropertyWrite, _ASTWithName2); var _super67 = _createSuper(PropertyWrite); function PropertyWrite(span, sourceSpan, nameSpan, receiver, name, value) { var _this97; _classCallCheck(this, PropertyWrite); _this97 = _super67.call(this, span, sourceSpan, nameSpan); _this97.receiver = receiver; _this97.name = name; _this97.value = value; return _this97; } _createClass2(PropertyWrite, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitPropertyWrite(this, context); } }]); return PropertyWrite; }(ASTWithName); var SafePropertyRead = /*#__PURE__*/function (_ASTWithName3) { _inherits(SafePropertyRead, _ASTWithName3); var _super68 = _createSuper(SafePropertyRead); function SafePropertyRead(span, sourceSpan, nameSpan, receiver, name) { var _this98; _classCallCheck(this, SafePropertyRead); _this98 = _super68.call(this, span, sourceSpan, nameSpan); _this98.receiver = receiver; _this98.name = name; return _this98; } _createClass2(SafePropertyRead, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitSafePropertyRead(this, context); } }]); return SafePropertyRead; }(ASTWithName); var KeyedRead = /*#__PURE__*/function (_AST7) { _inherits(KeyedRead, _AST7); var _super69 = _createSuper(KeyedRead); function KeyedRead(span, sourceSpan, obj, key) { var _this99; _classCallCheck(this, KeyedRead); _this99 = _super69.call(this, span, sourceSpan); _this99.obj = obj; _this99.key = key; return _this99; } _createClass2(KeyedRead, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitKeyedRead(this, context); } }]); return KeyedRead; }(AST); var KeyedWrite = /*#__PURE__*/function (_AST8) { _inherits(KeyedWrite, _AST8); var _super70 = _createSuper(KeyedWrite); function KeyedWrite(span, sourceSpan, obj, key, value) { var _this100; _classCallCheck(this, KeyedWrite); _this100 = _super70.call(this, span, sourceSpan); _this100.obj = obj; _this100.key = key; _this100.value = value; return _this100; } _createClass2(KeyedWrite, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitKeyedWrite(this, context); } }]); return KeyedWrite; }(AST); var BindingPipe = /*#__PURE__*/function (_ASTWithName4) { _inherits(BindingPipe, _ASTWithName4); var _super71 = _createSuper(BindingPipe); function BindingPipe(span, sourceSpan, exp, name, args, nameSpan) { var _this101; _classCallCheck(this, BindingPipe); _this101 = _super71.call(this, span, sourceSpan, nameSpan); _this101.exp = exp; _this101.name = name; _this101.args = args; return _this101; } _createClass2(BindingPipe, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitPipe(this, context); } }]); return BindingPipe; }(ASTWithName); var LiteralPrimitive = /*#__PURE__*/function (_AST9) { _inherits(LiteralPrimitive, _AST9); var _super72 = _createSuper(LiteralPrimitive); function LiteralPrimitive(span, sourceSpan, value) { var _this102; _classCallCheck(this, LiteralPrimitive); _this102 = _super72.call(this, span, sourceSpan); _this102.value = value; return _this102; } _createClass2(LiteralPrimitive, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitLiteralPrimitive(this, context); } }]); return LiteralPrimitive; }(AST); var LiteralArray = /*#__PURE__*/function (_AST10) { _inherits(LiteralArray, _AST10); var _super73 = _createSuper(LiteralArray); function LiteralArray(span, sourceSpan, expressions) { var _this103; _classCallCheck(this, LiteralArray); _this103 = _super73.call(this, span, sourceSpan); _this103.expressions = expressions; return _this103; } _createClass2(LiteralArray, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitLiteralArray(this, context); } }]); return LiteralArray; }(AST); var LiteralMap = /*#__PURE__*/function (_AST11) { _inherits(LiteralMap, _AST11); var _super74 = _createSuper(LiteralMap); function LiteralMap(span, sourceSpan, keys, values) { var _this104; _classCallCheck(this, LiteralMap); _this104 = _super74.call(this, span, sourceSpan); _this104.keys = keys; _this104.values = values; return _this104; } _createClass2(LiteralMap, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitLiteralMap(this, context); } }]); return LiteralMap; }(AST); var Interpolation = /*#__PURE__*/function (_AST12) { _inherits(Interpolation, _AST12); var _super75 = _createSuper(Interpolation); function Interpolation(span, sourceSpan, strings, expressions) { var _this105; _classCallCheck(this, Interpolation); _this105 = _super75.call(this, span, sourceSpan); _this105.strings = strings; _this105.expressions = expressions; return _this105; } _createClass2(Interpolation, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitInterpolation(this, context); } }]); return Interpolation; }(AST); var Binary = /*#__PURE__*/function (_AST13) { _inherits(Binary, _AST13); var _super76 = _createSuper(Binary); function Binary(span, sourceSpan, operation, left, right) { var _this106; _classCallCheck(this, Binary); _this106 = _super76.call(this, span, sourceSpan); _this106.operation = operation; _this106.left = left; _this106.right = right; return _this106; } _createClass2(Binary, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitBinary(this, context); } }]); return Binary; }(AST); /** * For backwards compatibility reasons, `Unary` inherits from `Binary` and mimics the binary AST * node that was originally used. This inheritance relation can be deleted in some future major, * after consumers have been given a chance to fully support Unary. */ var Unary = /*#__PURE__*/function (_Binary) { _inherits(Unary, _Binary); var _super77 = _createSuper(Unary); /** * During the deprecation period this constructor is private, to avoid consumers from creating * a `Unary` with the fallback properties for `Binary`. */ function Unary(span, sourceSpan, operator, expr, binaryOp, binaryLeft, binaryRight) { var _this107; _classCallCheck(this, Unary); _this107 = _super77.call(this, span, sourceSpan, binaryOp, binaryLeft, binaryRight); _this107.operator = operator; _this107.expr = expr; return _this107; } /** * Creates a unary minus expression "-x", represented as `Binary` using "0 - x". */ _createClass2(Unary, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (visitor.visitUnary !== undefined) { return visitor.visitUnary(this, context); } return visitor.visitBinary(this, context); } }], [{ key: "createMinus", value: function createMinus(span, sourceSpan, expr) { return new Unary(span, sourceSpan, '-', expr, '-', new LiteralPrimitive(span, sourceSpan, 0), expr); } /** * Creates a unary plus expression "+x", represented as `Binary` using "x - 0". */ }, { key: "createPlus", value: function createPlus(span, sourceSpan, expr) { return new Unary(span, sourceSpan, '+', expr, '-', expr, new LiteralPrimitive(span, sourceSpan, 0)); } }]); return Unary; }(Binary); var PrefixNot = /*#__PURE__*/function (_AST14) { _inherits(PrefixNot, _AST14); var _super78 = _createSuper(PrefixNot); function PrefixNot(span, sourceSpan, expression) { var _this108; _classCallCheck(this, PrefixNot); _this108 = _super78.call(this, span, sourceSpan); _this108.expression = expression; return _this108; } _createClass2(PrefixNot, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitPrefixNot(this, context); } }]); return PrefixNot; }(AST); var NonNullAssert = /*#__PURE__*/function (_AST15) { _inherits(NonNullAssert, _AST15); var _super79 = _createSuper(NonNullAssert); function NonNullAssert(span, sourceSpan, expression) { var _this109; _classCallCheck(this, NonNullAssert); _this109 = _super79.call(this, span, sourceSpan); _this109.expression = expression; return _this109; } _createClass2(NonNullAssert, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitNonNullAssert(this, context); } }]); return NonNullAssert; }(AST); var MethodCall = /*#__PURE__*/function (_ASTWithName5) { _inherits(MethodCall, _ASTWithName5); var _super80 = _createSuper(MethodCall); function MethodCall(span, sourceSpan, nameSpan, receiver, name, args) { var _this110; _classCallCheck(this, MethodCall); _this110 = _super80.call(this, span, sourceSpan, nameSpan); _this110.receiver = receiver; _this110.name = name; _this110.args = args; return _this110; } _createClass2(MethodCall, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitMethodCall(this, context); } }]); return MethodCall; }(ASTWithName); var SafeMethodCall = /*#__PURE__*/function (_ASTWithName6) { _inherits(SafeMethodCall, _ASTWithName6); var _super81 = _createSuper(SafeMethodCall); function SafeMethodCall(span, sourceSpan, nameSpan, receiver, name, args) { var _this111; _classCallCheck(this, SafeMethodCall); _this111 = _super81.call(this, span, sourceSpan, nameSpan); _this111.receiver = receiver; _this111.name = name; _this111.args = args; return _this111; } _createClass2(SafeMethodCall, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitSafeMethodCall(this, context); } }]); return SafeMethodCall; }(ASTWithName); var FunctionCall = /*#__PURE__*/function (_AST16) { _inherits(FunctionCall, _AST16); var _super82 = _createSuper(FunctionCall); function FunctionCall(span, sourceSpan, target, args) { var _this112; _classCallCheck(this, FunctionCall); _this112 = _super82.call(this, span, sourceSpan); _this112.target = target; _this112.args = args; return _this112; } _createClass2(FunctionCall, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return visitor.visitFunctionCall(this, context); } }]); return FunctionCall; }(AST); /** * Records the absolute position of a text span in a source file, where `start` and `end` are the * starting and ending byte offsets, respectively, of the text span in a source file. */ var AbsoluteSourceSpan = /*#__PURE__*/_createClass2(function AbsoluteSourceSpan(start, end) { _classCallCheck(this, AbsoluteSourceSpan); this.start = start; this.end = end; }); var ASTWithSource = /*#__PURE__*/function (_AST17) { _inherits(ASTWithSource, _AST17); var _super83 = _createSuper(ASTWithSource); function ASTWithSource(ast, source, location, absoluteOffset, errors) { var _this113; _classCallCheck(this, ASTWithSource); _this113 = _super83.call(this, new ParseSpan(0, source === null ? 0 : source.length), new AbsoluteSourceSpan(absoluteOffset, source === null ? absoluteOffset : absoluteOffset + source.length)); _this113.ast = ast; _this113.source = source; _this113.location = location; _this113.errors = errors; return _this113; } _createClass2(ASTWithSource, [{ key: "visit", value: function visit(visitor) { var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (visitor.visitASTWithSource) { return visitor.visitASTWithSource(this, context); } return this.ast.visit(visitor, context); } }, { key: "toString", value: function toString() { return "".concat(this.source, " in ").concat(this.location); } }]); return ASTWithSource; }(AST); var VariableBinding = /*#__PURE__*/_createClass2( /** * @param sourceSpan entire span of the binding. * @param key name of the LHS along with its span. * @param value optional value for the RHS along with its span. */ function VariableBinding(sourceSpan, key, value) { _classCallCheck(this, VariableBinding); this.sourceSpan = sourceSpan; this.key = key; this.value = value; }); var ExpressionBinding = /*#__PURE__*/_createClass2( /** * @param sourceSpan entire span of the binding. * @param key binding name, like ngForOf, ngForTrackBy, ngIf, along with its * span. Note that the length of the span may not be the same as * `key.source.length`. For example, * 1. key.source = ngFor, key.span is for "ngFor" * 2. key.source = ngForOf, key.span is for "of" * 3. key.source = ngForTrackBy, key.span is for "trackBy" * @param value optional expression for the RHS. */ function ExpressionBinding(sourceSpan, key, value) { _classCallCheck(this, ExpressionBinding); this.sourceSpan = sourceSpan; this.key = key; this.value = value; }); var RecursiveAstVisitor$1 = /*#__PURE__*/function () { function RecursiveAstVisitor$1() { _classCallCheck(this, RecursiveAstVisitor$1); } _createClass2(RecursiveAstVisitor$1, [{ key: "visit", value: function visit(ast, context) { // The default implementation just visits every node. // Classes that extend RecursiveAstVisitor should override this function // to selectively visit the specified node. ast.visit(this, context); } }, { key: "visitUnary", value: function visitUnary(ast, context) { this.visit(ast.expr, context); } }, { key: "visitBinary", value: function visitBinary(ast, context) { this.visit(ast.left, context); this.visit(ast.right, context); } }, { key: "visitChain", value: function visitChain(ast, context) { this.visitAll(ast.expressions, context); } }, { key: "visitConditional", value: function visitConditional(ast, context) { this.visit(ast.condition, context); this.visit(ast.trueExp, context); this.visit(ast.falseExp, context); } }, { key: "visitPipe", value: function visitPipe(ast, context) { this.visit(ast.exp, context); this.visitAll(ast.args, context); } }, { key: "visitFunctionCall", value: function visitFunctionCall(ast, context) { if (ast.target) { this.visit(ast.target, context); } this.visitAll(ast.args, context); } }, { key: "visitImplicitReceiver", value: function visitImplicitReceiver(ast, context) {} }, { key: "visitThisReceiver", value: function visitThisReceiver(ast, context) {} }, { key: "visitInterpolation", value: function visitInterpolation(ast, context) { this.visitAll(ast.expressions, context); } }, { key: "visitKeyedRead", value: function visitKeyedRead(ast, context) { this.visit(ast.obj, context); this.visit(ast.key, context); } }, { key: "visitKeyedWrite", value: function visitKeyedWrite(ast, context) { this.visit(ast.obj, context); this.visit(ast.key, context); this.visit(ast.value, context); } }, { key: "visitLiteralArray", value: function visitLiteralArray(ast, context) { this.visitAll(ast.expressions, context); } }, { key: "visitLiteralMap", value: function visitLiteralMap(ast, context) { this.visitAll(ast.values, context); } }, { key: "visitLiteralPrimitive", value: function visitLiteralPrimitive(ast, context) {} }, { key: "visitMethodCall", value: function visitMethodCall(ast, context) { this.visit(ast.receiver, context); this.visitAll(ast.args, context); } }, { key: "visitPrefixNot", value: function visitPrefixNot(ast, context) { this.visit(ast.expression, context); } }, { key: "visitNonNullAssert", value: function visitNonNullAssert(ast, context) { this.visit(ast.expression, context); } }, { key: "visitPropertyRead", value: function visitPropertyRead(ast, context) { this.visit(ast.receiver, context); } }, { key: "visitPropertyWrite", value: function visitPropertyWrite(ast, context) { this.visit(ast.receiver, context); this.visit(ast.value, context); } }, { key: "visitSafePropertyRead", value: function visitSafePropertyRead(ast, context) { this.visit(ast.receiver, context); } }, { key: "visitSafeMethodCall", value: function visitSafeMethodCall(ast, context) { this.visit(ast.receiver, context); this.visitAll(ast.args, context); } }, { key: "visitQuote", value: function visitQuote(ast, context) {} // This is not part of the AstVisitor interface, just a helper method }, { key: "visitAll", value: function visitAll(asts, context) { var _iterator8 = _createForOfIteratorHelper(asts), _step8; try { for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { var ast = _step8.value; this.visit(ast, context); } } catch (err) { _iterator8.e(err); } finally { _iterator8.f(); } } }]); return RecursiveAstVisitor$1; }(); var AstTransformer$1 = /*#__PURE__*/function () { function AstTransformer$1() { _classCallCheck(this, AstTransformer$1); } _createClass2(AstTransformer$1, [{ key: "visitImplicitReceiver", value: function visitImplicitReceiver(ast, context) { return ast; } }, { key: "visitThisReceiver", value: function visitThisReceiver(ast, context) { return ast; } }, { key: "visitInterpolation", value: function visitInterpolation(ast, context) { return new Interpolation(ast.span, ast.sourceSpan, ast.strings, this.visitAll(ast.expressions)); } }, { key: "visitLiteralPrimitive", value: function visitLiteralPrimitive(ast, context) { return new LiteralPrimitive(ast.span, ast.sourceSpan, ast.value); } }, { key: "visitPropertyRead", value: function visitPropertyRead(ast, context) { return new PropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name); } }, { key: "visitPropertyWrite", value: function visitPropertyWrite(ast, context) { return new PropertyWrite(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, ast.value.visit(this)); } }, { key: "visitSafePropertyRead", value: function visitSafePropertyRead(ast, context) { return new SafePropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name); } }, { key: "visitMethodCall", value: function visitMethodCall(ast, context) { return new MethodCall(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, this.visitAll(ast.args)); } }, { key: "visitSafeMethodCall", value: function visitSafeMethodCall(ast, context) { return new SafeMethodCall(ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, this.visitAll(ast.args)); } }, { key: "visitFunctionCall", value: function visitFunctionCall(ast, context) { return new FunctionCall(ast.span, ast.sourceSpan, ast.target.visit(this), this.visitAll(ast.args)); } }, { key: "visitLiteralArray", value: function visitLiteralArray(ast, context) { return new LiteralArray(ast.span, ast.sourceSpan, this.visitAll(ast.expressions)); } }, { key: "visitLiteralMap", value: function visitLiteralMap(ast, context) { return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, this.visitAll(ast.values)); } }, { key: "visitUnary", value: function visitUnary(ast, context) { switch (ast.operator) { case '+': return Unary.createPlus(ast.span, ast.sourceSpan, ast.expr.visit(this)); case '-': return Unary.createMinus(ast.span, ast.sourceSpan, ast.expr.visit(this)); default: throw new Error("Unknown unary operator ".concat(ast.operator)); } } }, { key: "visitBinary", value: function visitBinary(ast, context) { return new Binary(ast.span, ast.sourceSpan, ast.operation, ast.left.visit(this), ast.right.visit(this)); } }, { key: "visitPrefixNot", value: function visitPrefixNot(ast, context) { return new PrefixNot(ast.span, ast.sourceSpan, ast.expression.visit(this)); } }, { key: "visitNonNullAssert", value: function visitNonNullAssert(ast, context) { return new NonNullAssert(ast.span, ast.sourceSpan, ast.expression.visit(this)); } }, { key: "visitConditional", value: function visitConditional(ast, context) { return new Conditional(ast.span, ast.sourceSpan, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this)); } }, { key: "visitPipe", value: function visitPipe(ast, context) { return new BindingPipe(ast.span, ast.sourceSpan, ast.exp.visit(this), ast.name, this.visitAll(ast.args), ast.nameSpan); } }, { key: "visitKeyedRead", value: function visitKeyedRead(ast, context) { return new KeyedRead(ast.span, ast.sourceSpan, ast.obj.visit(this), ast.key.visit(this)); } }, { key: "visitKeyedWrite", value: function visitKeyedWrite(ast, context) { return new KeyedWrite(ast.span, ast.sourceSpan, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this)); } }, { key: "visitAll", value: function visitAll(asts) { var res = []; for (var i = 0; i < asts.length; ++i) { res[i] = asts[i].visit(this); } return res; } }, { key: "visitChain", value: function visitChain(ast, context) { return new Chain(ast.span, ast.sourceSpan, this.visitAll(ast.expressions)); } }, { key: "visitQuote", value: function visitQuote(ast, context) { return new Quote(ast.span, ast.sourceSpan, ast.prefix, ast.uninterpretedExpression, ast.location); } }]); return AstTransformer$1; }(); // A transformer that only creates new nodes if the transformer makes a change or // a change is made a child node. var AstMemoryEfficientTransformer = /*#__PURE__*/function () { function AstMemoryEfficientTransformer() { _classCallCheck(this, AstMemoryEfficientTransformer); } _createClass2(AstMemoryEfficientTransformer, [{ key: "visitImplicitReceiver", value: function visitImplicitReceiver(ast, context) { return ast; } }, { key: "visitThisReceiver", value: function visitThisReceiver(ast, context) { return ast; } }, { key: "visitInterpolation", value: function visitInterpolation(ast, context) { var expressions = this.visitAll(ast.expressions); if (expressions !== ast.expressions) return new Interpolation(ast.span, ast.sourceSpan, ast.strings, expressions); return ast; } }, { key: "visitLiteralPrimitive", value: function visitLiteralPrimitive(ast, context) { return ast; } }, { key: "visitPropertyRead", value: function visitPropertyRead(ast, context) { var receiver = ast.receiver.visit(this); if (receiver !== ast.receiver) { return new PropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name); } return ast; } }, { key: "visitPropertyWrite", value: function visitPropertyWrite(ast, context) { var receiver = ast.receiver.visit(this); var value = ast.value.visit(this); if (receiver !== ast.receiver || value !== ast.value) { return new PropertyWrite(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, value); } return ast; } }, { key: "visitSafePropertyRead", value: function visitSafePropertyRead(ast, context) { var receiver = ast.receiver.visit(this); if (receiver !== ast.receiver) { return new SafePropertyRead(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name); } return ast; } }, { key: "visitMethodCall", value: function visitMethodCall(ast, context) { var receiver = ast.receiver.visit(this); var args = this.visitAll(ast.args); if (receiver !== ast.receiver || args !== ast.args) { return new MethodCall(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args); } return ast; } }, { key: "visitSafeMethodCall", value: function visitSafeMethodCall(ast, context) { var receiver = ast.receiver.visit(this); var args = this.visitAll(ast.args); if (receiver !== ast.receiver || args !== ast.args) { return new SafeMethodCall(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args); } return ast; } }, { key: "visitFunctionCall", value: function visitFunctionCall(ast, context) { var target = ast.target && ast.target.visit(this); var args = this.visitAll(ast.args); if (target !== ast.target || args !== ast.args) { return new FunctionCall(ast.span, ast.sourceSpan, target, args); } return ast; } }, { key: "visitLiteralArray", value: function visitLiteralArray(ast, context) { var expressions = this.visitAll(ast.expressions); if (expressions !== ast.expressions) { return new LiteralArray(ast.span, ast.sourceSpan, expressions); } return ast; } }, { key: "visitLiteralMap", value: function visitLiteralMap(ast, context) { var values = this.visitAll(ast.values); if (values !== ast.values) { return new LiteralMap(ast.span, ast.sourceSpan, ast.keys, values); } return ast; } }, { key: "visitUnary", value: function visitUnary(ast, context) { var expr = ast.expr.visit(this); if (expr !== ast.expr) { switch (ast.operator) { case '+': return Unary.createPlus(ast.span, ast.sourceSpan, expr); case '-': return Unary.createMinus(ast.span, ast.sourceSpan, expr); default: throw new Error("Unknown unary operator ".concat(ast.operator)); } } return ast; } }, { key: "visitBinary", value: function visitBinary(ast, context) { var left = ast.left.visit(this); var right = ast.right.visit(this); if (left !== ast.left || right !== ast.right) { return new Binary(ast.span, ast.sourceSpan, ast.operation, left, right); } return ast; } }, { key: "visitPrefixNot", value: function visitPrefixNot(ast, context) { var expression = ast.expression.visit(this); if (expression !== ast.expression) { return new PrefixNot(ast.span, ast.sourceSpan, expression); } return ast; } }, { key: "visitNonNullAssert", value: function visitNonNullAssert(ast, context) { var expression = ast.expression.visit(this); if (expression !== ast.expression) { return new NonNullAssert(ast.span, ast.sourceSpan, expression); } return ast; } }, { key: "visitConditional", value: function visitConditional(ast, context) { var condition = ast.condition.visit(this); var trueExp = ast.trueExp.visit(this); var falseExp = ast.falseExp.visit(this); if (condition !== ast.condition || trueExp !== ast.trueExp || falseExp !== ast.falseExp) { return new Conditional(ast.span, ast.sourceSpan, condition, trueExp, falseExp); } return ast; } }, { key: "visitPipe", value: function visitPipe(ast, context) { var exp = ast.exp.visit(this); var args = this.visitAll(ast.args); if (exp !== ast.exp || args !== ast.args) { return new BindingPipe(ast.span, ast.sourceSpan, exp, ast.name, args, ast.nameSpan); } return ast; } }, { key: "visitKeyedRead", value: function visitKeyedRead(ast, context) { var obj = ast.obj.visit(this); var key = ast.key.visit(this); if (obj !== ast.obj || key !== ast.key) { return new KeyedRead(ast.span, ast.sourceSpan, obj, key); } return ast; } }, { key: "visitKeyedWrite", value: function visitKeyedWrite(ast, context) { var obj = ast.obj.visit(this); var key = ast.key.visit(this); var value = ast.value.visit(this); if (obj !== ast.obj || key !== ast.key || value !== ast.value) { return new KeyedWrite(ast.span, ast.sourceSpan, obj, key, value); } return ast; } }, { key: "visitAll", value: function visitAll(asts) { var res = []; var modified = false; for (var i = 0; i < asts.length; ++i) { var original = asts[i]; var value = original.visit(this); res[i] = value; modified = modified || value !== original; } return modified ? res : asts; } }, { key: "visitChain", value: function visitChain(ast, context) { var expressions = this.visitAll(ast.expressions); if (expressions !== ast.expressions) { return new Chain(ast.span, ast.sourceSpan, expressions); } return ast; } }, { key: "visitQuote", value: function visitQuote(ast, context) { return ast; } }]); return AstMemoryEfficientTransformer; }(); // Bindings var ParsedProperty = /*#__PURE__*/_createClass2(function ParsedProperty(name, expression, type, // TODO(atscott): `keySpan` should really be required but allows `undefined` so VE does // not need to be updated. Make `keySpan` required when VE is removed. sourceSpan, keySpan, valueSpan) { _classCallCheck(this, ParsedProperty); this.name = name; this.expression = expression; this.type = type; this.sourceSpan = sourceSpan; this.keySpan = keySpan; this.valueSpan = valueSpan; this.isLiteral = this.type === ParsedPropertyType.LITERAL_ATTR; this.isAnimation = this.type === ParsedPropertyType.ANIMATION; }); var ParsedPropertyType; (function (ParsedPropertyType) { ParsedPropertyType[ParsedPropertyType["DEFAULT"] = 0] = "DEFAULT"; ParsedPropertyType[ParsedPropertyType["LITERAL_ATTR"] = 1] = "LITERAL_ATTR"; ParsedPropertyType[ParsedPropertyType["ANIMATION"] = 2] = "ANIMATION"; })(ParsedPropertyType || (ParsedPropertyType = {})); var ParsedEvent = /*#__PURE__*/_createClass2( // Regular events have a target // Animation events have a phase function ParsedEvent(name, targetOrPhase, type, handler, sourceSpan, handlerSpan) { _classCallCheck(this, ParsedEvent); this.name = name; this.targetOrPhase = targetOrPhase; this.type = type; this.handler = handler; this.sourceSpan = sourceSpan; this.handlerSpan = handlerSpan; }); /** * ParsedVariable represents a variable declaration in a microsyntax expression. */ var ParsedVariable = /*#__PURE__*/_createClass2(function ParsedVariable(name, value, sourceSpan, keySpan, valueSpan) { _classCallCheck(this, ParsedVariable); this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.keySpan = keySpan; this.valueSpan = valueSpan; }); var BoundElementProperty = /*#__PURE__*/_createClass2(function BoundElementProperty(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan) { _classCallCheck(this, BoundElementProperty); this.name = name; this.type = type; this.securityContext = securityContext; this.value = value; this.unit = unit; this.sourceSpan = sourceSpan; this.keySpan = keySpan; this.valueSpan = valueSpan; }); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var EventHandlerVars = /*#__PURE__*/_createClass2(function EventHandlerVars() { _classCallCheck(this, EventHandlerVars); }); EventHandlerVars.event = variable('$event'); var ConvertActionBindingResult = /*#__PURE__*/_createClass2(function ConvertActionBindingResult( /** * Render2 compatible statements, */ stmts, /** * Variable name used with render2 compatible statements. */ allowDefault) { _classCallCheck(this, ConvertActionBindingResult); this.stmts = stmts; this.allowDefault = allowDefault; /** * This is bit of a hack. It converts statements which render2 expects to statements which are * expected by render3. * * Example: `
` will generate: * * Render3: * ``` * const pd_b:any = ((ctx.doSomething($event)) !== false); * return pd_b; * ``` * * but render2 expects: * ``` * return ctx.doSomething($event); * ``` */ // TODO(misko): remove this hack once we no longer support ViewEngine. this.render3Stmts = stmts.map(function (statement) { if (statement instanceof DeclareVarStmt && statement.name == allowDefault.name && statement.value instanceof BinaryOperatorExpr) { var lhs = statement.value.lhs; return new ReturnStatement(lhs.value); } return statement; }); }); /** * Converts the given expression AST into an executable output AST, assuming the expression is * used in an action binding (e.g. an event handler). */ function convertActionBinding(localResolver, implicitReceiver, action, bindingId, interpolationFunction, baseSourceSpan, implicitReceiverAccesses, globals) { if (!localResolver) { localResolver = new DefaultLocalResolver(globals); } var actionWithoutBuiltins = convertPropertyBindingBuiltins({ createLiteralArrayConverter: function createLiteralArrayConverter(argCount) { // Note: no caching for literal arrays in actions. return function (args) { return literalArr(args); }; }, createLiteralMapConverter: function createLiteralMapConverter(keys) { // Note: no caching for literal maps in actions. return function (values) { var entries = keys.map(function (k, i) { return { key: k.key, value: values[i], quoted: k.quoted }; }); return literalMap(entries); }; }, createPipeConverter: function createPipeConverter(name) { throw new Error("Illegal State: Actions are not allowed to contain pipes. Pipe: ".concat(name)); } }, action); var visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId, interpolationFunction, baseSourceSpan, implicitReceiverAccesses); var actionStmts = []; flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts); prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts); if (visitor.usesImplicitReceiver) { localResolver.notifyImplicitReceiverUse(); } var lastIndex = actionStmts.length - 1; var preventDefaultVar = null; if (lastIndex >= 0) { var lastStatement = actionStmts[lastIndex]; var returnExpr = convertStmtIntoExpression(lastStatement); if (returnExpr) { // Note: We need to cast the result of the method call to dynamic, // as it might be a void method! preventDefaultVar = createPreventDefaultVar(bindingId); actionStmts[lastIndex] = preventDefaultVar.set(returnExpr.cast(DYNAMIC_TYPE).notIdentical(literal(false))).toDeclStmt(null, [StmtModifier.Final]); } } return new ConvertActionBindingResult(actionStmts, preventDefaultVar); } function convertPropertyBindingBuiltins(converterFactory, ast) { return convertBuiltins(converterFactory, ast); } var ConvertPropertyBindingResult = /*#__PURE__*/_createClass2(function ConvertPropertyBindingResult(stmts, currValExpr) { _classCallCheck(this, ConvertPropertyBindingResult); this.stmts = stmts; this.currValExpr = currValExpr; }); var BindingForm; (function (BindingForm) { // The general form of binding expression, supports all expressions. BindingForm[BindingForm["General"] = 0] = "General"; // Try to generate a simple binding (no temporaries or statements) // otherwise generate a general binding BindingForm[BindingForm["TrySimple"] = 1] = "TrySimple"; // Inlines assignment of temporaries into the generated expression. The result may still // have statements attached for declarations of temporary variables. // This is the only relevant form for Ivy, the other forms are only used in ViewEngine. BindingForm[BindingForm["Expression"] = 2] = "Expression"; })(BindingForm || (BindingForm = {})); /** * Converts the given expression AST into an executable output AST, assuming the expression * is used in property binding. The expression has to be preprocessed via * `convertPropertyBindingBuiltins`. */ function _convertPropertyBinding(localResolver, implicitReceiver, expressionWithoutBuiltins, bindingId, form, interpolationFunction) { if (!localResolver) { localResolver = new DefaultLocalResolver(); } var visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId, interpolationFunction); var outputExpr = expressionWithoutBuiltins.visit(visitor, _Mode.Expression); var stmts = getStatementsFromVisitor(visitor, bindingId); if (visitor.usesImplicitReceiver) { localResolver.notifyImplicitReceiverUse(); } if (visitor.temporaryCount === 0 && form == BindingForm.TrySimple) { return new ConvertPropertyBindingResult([], outputExpr); } else if (form === BindingForm.Expression) { return new ConvertPropertyBindingResult(stmts, outputExpr); } var currValExpr = createCurrValueExpr(bindingId); stmts.push(currValExpr.set(outputExpr).toDeclStmt(DYNAMIC_TYPE, [StmtModifier.Final])); return new ConvertPropertyBindingResult(stmts, currValExpr); } /** * Given some expression, such as a binding or interpolation expression, and a context expression to * look values up on, visit each facet of the given expression resolving values from the context * expression such that a list of arguments can be derived from the found values that can be used as * arguments to an external update instruction. * * @param localResolver The resolver to use to look up expressions by name appropriately * @param contextVariableExpression The expression representing the context variable used to create * the final argument expressions * @param expressionWithArgumentsToExtract The expression to visit to figure out what values need to * be resolved and what arguments list to build. * @param bindingId A name prefix used to create temporary variable names if they're needed for the * arguments generated * @returns An array of expressions that can be passed as arguments to instruction expressions like * `o.importExpr(R3.propertyInterpolate).callFn(result)` */ function convertUpdateArguments(localResolver, contextVariableExpression, expressionWithArgumentsToExtract, bindingId) { var visitor = new _AstToIrVisitor(localResolver, contextVariableExpression, bindingId, undefined); var outputExpr = expressionWithArgumentsToExtract.visit(visitor, _Mode.Expression); if (visitor.usesImplicitReceiver) { localResolver.notifyImplicitReceiverUse(); } var stmts = getStatementsFromVisitor(visitor, bindingId); // Removing the first argument, because it was a length for ViewEngine, not Ivy. var args = outputExpr.args.slice(1); if (expressionWithArgumentsToExtract instanceof Interpolation) { // If we're dealing with an interpolation of 1 value with an empty prefix and suffix, reduce the // args returned to just the value, because we're going to pass it to a special instruction. var strings = expressionWithArgumentsToExtract.strings; if (args.length === 3 && strings[0] === '' && strings[1] === '') { // Single argument interpolate instructions. args = [args[1]]; } else if (args.length >= 19) { // 19 or more arguments must be passed to the `interpolateV`-style instructions, which accept // an array of arguments args = [literalArr(args)]; } } return { stmts: stmts, args: args }; } function getStatementsFromVisitor(visitor, bindingId) { var stmts = []; for (var i = 0; i < visitor.temporaryCount; i++) { stmts.push(temporaryDeclaration(bindingId, i)); } return stmts; } function convertBuiltins(converterFactory, ast) { var visitor = new _BuiltinAstConverter(converterFactory); return ast.visit(visitor); } function temporaryName(bindingId, temporaryNumber) { return "tmp_".concat(bindingId, "_").concat(temporaryNumber); } function temporaryDeclaration(bindingId, temporaryNumber) { return new DeclareVarStmt(temporaryName(bindingId, temporaryNumber), NULL_EXPR); } function prependTemporaryDecls(temporaryCount, bindingId, statements) { for (var i = temporaryCount - 1; i >= 0; i--) { statements.unshift(temporaryDeclaration(bindingId, i)); } } var _Mode; (function (_Mode) { _Mode[_Mode["Statement"] = 0] = "Statement"; _Mode[_Mode["Expression"] = 1] = "Expression"; })(_Mode || (_Mode = {})); function ensureStatementMode(mode, ast) { if (mode !== _Mode.Statement) { throw new Error("Expected a statement, but saw ".concat(ast)); } } function ensureExpressionMode(mode, ast) { if (mode !== _Mode.Expression) { throw new Error("Expected an expression, but saw ".concat(ast)); } } function convertToStatementIfNeeded(mode, expr) { if (mode === _Mode.Statement) { return expr.toStmt(); } else { return expr; } } var _BuiltinAstConverter = /*#__PURE__*/function (_AstTransformer$) { _inherits(_BuiltinAstConverter, _AstTransformer$); var _super84 = _createSuper(_BuiltinAstConverter); function _BuiltinAstConverter(_converterFactory) { var _this114; _classCallCheck(this, _BuiltinAstConverter); _this114 = _super84.call(this); _this114._converterFactory = _converterFactory; return _this114; } _createClass2(_BuiltinAstConverter, [{ key: "visitPipe", value: function visitPipe(ast, context) { var _this115 = this; var args = [ast.exp].concat(_toConsumableArray(ast.args)).map(function (ast) { return ast.visit(_this115, context); }); return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createPipeConverter(ast.name, args.length)); } }, { key: "visitLiteralArray", value: function visitLiteralArray(ast, context) { var _this116 = this; var args = ast.expressions.map(function (ast) { return ast.visit(_this116, context); }); return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length)); } }, { key: "visitLiteralMap", value: function visitLiteralMap(ast, context) { var _this117 = this; var args = ast.values.map(function (ast) { return ast.visit(_this117, context); }); return new BuiltinFunctionCall(ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralMapConverter(ast.keys)); } }]); return _BuiltinAstConverter; }(AstTransformer$1); var _AstToIrVisitor = /*#__PURE__*/function () { function _AstToIrVisitor(_localResolver, _implicitReceiver, bindingId, interpolationFunction, baseSourceSpan, implicitReceiverAccesses) { _classCallCheck(this, _AstToIrVisitor); this._localResolver = _localResolver; this._implicitReceiver = _implicitReceiver; this.bindingId = bindingId; this.interpolationFunction = interpolationFunction; this.baseSourceSpan = baseSourceSpan; this.implicitReceiverAccesses = implicitReceiverAccesses; this._nodeMap = new Map(); this._resultMap = new Map(); this._currentTemporary = 0; this.temporaryCount = 0; this.usesImplicitReceiver = false; } _createClass2(_AstToIrVisitor, [{ key: "visitUnary", value: function visitUnary(ast, mode) { var op; switch (ast.operator) { case '+': op = UnaryOperator.Plus; break; case '-': op = UnaryOperator.Minus; break; default: throw new Error("Unsupported operator ".concat(ast.operator)); } return convertToStatementIfNeeded(mode, new UnaryOperatorExpr(op, this._visit(ast.expr, _Mode.Expression), undefined, this.convertSourceSpan(ast.span))); } }, { key: "visitBinary", value: function visitBinary(ast, mode) { var op; switch (ast.operation) { case '+': op = BinaryOperator.Plus; break; case '-': op = BinaryOperator.Minus; break; case '*': op = BinaryOperator.Multiply; break; case '/': op = BinaryOperator.Divide; break; case '%': op = BinaryOperator.Modulo; break; case '&&': op = BinaryOperator.And; break; case '||': op = BinaryOperator.Or; break; case '==': op = BinaryOperator.Equals; break; case '!=': op = BinaryOperator.NotEquals; break; case '===': op = BinaryOperator.Identical; break; case '!==': op = BinaryOperator.NotIdentical; break; case '<': op = BinaryOperator.Lower; break; case '>': op = BinaryOperator.Bigger; break; case '<=': op = BinaryOperator.LowerEquals; break; case '>=': op = BinaryOperator.BiggerEquals; break; default: throw new Error("Unsupported operation ".concat(ast.operation)); } return convertToStatementIfNeeded(mode, new BinaryOperatorExpr(op, this._visit(ast.left, _Mode.Expression), this._visit(ast.right, _Mode.Expression), undefined, this.convertSourceSpan(ast.span))); } }, { key: "visitChain", value: function visitChain(ast, mode) { ensureStatementMode(mode, ast); return this.visitAll(ast.expressions, mode); } }, { key: "visitConditional", value: function visitConditional(ast, mode) { var value = this._visit(ast.condition, _Mode.Expression); return convertToStatementIfNeeded(mode, value.conditional(this._visit(ast.trueExp, _Mode.Expression), this._visit(ast.falseExp, _Mode.Expression), this.convertSourceSpan(ast.span))); } }, { key: "visitPipe", value: function visitPipe(ast, mode) { throw new Error("Illegal state: Pipes should have been converted into functions. Pipe: ".concat(ast.name)); } }, { key: "visitFunctionCall", value: function visitFunctionCall(ast, mode) { var convertedArgs = this.visitAll(ast.args, _Mode.Expression); var fnResult; if (ast instanceof BuiltinFunctionCall) { fnResult = ast.converter(convertedArgs); } else { fnResult = this._visit(ast.target, _Mode.Expression).callFn(convertedArgs, this.convertSourceSpan(ast.span)); } return convertToStatementIfNeeded(mode, fnResult); } }, { key: "visitImplicitReceiver", value: function visitImplicitReceiver(ast, mode) { ensureExpressionMode(mode, ast); this.usesImplicitReceiver = true; return this._implicitReceiver; } }, { key: "visitThisReceiver", value: function visitThisReceiver(ast, mode) { return this.visitImplicitReceiver(ast, mode); } }, { key: "visitInterpolation", value: function visitInterpolation(ast, mode) { ensureExpressionMode(mode, ast); var args = [literal(ast.expressions.length)]; for (var i = 0; i < ast.strings.length - 1; i++) { args.push(literal(ast.strings[i])); args.push(this._visit(ast.expressions[i], _Mode.Expression)); } args.push(literal(ast.strings[ast.strings.length - 1])); if (this.interpolationFunction) { return this.interpolationFunction(args); } return ast.expressions.length <= 9 ? importExpr(Identifiers.inlineInterpolate).callFn(args) : importExpr(Identifiers.interpolate).callFn([args[0], literalArr(args.slice(1), undefined, this.convertSourceSpan(ast.span))]); } }, { key: "visitKeyedRead", value: function visitKeyedRead(ast, mode) { var leftMostSafe = this.leftMostSafeNode(ast); if (leftMostSafe) { return this.convertSafeAccess(ast, leftMostSafe, mode); } else { return convertToStatementIfNeeded(mode, this._visit(ast.obj, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression))); } } }, { key: "visitKeyedWrite", value: function visitKeyedWrite(ast, mode) { var obj = this._visit(ast.obj, _Mode.Expression); var key = this._visit(ast.key, _Mode.Expression); var value = this._visit(ast.value, _Mode.Expression); return convertToStatementIfNeeded(mode, obj.key(key).set(value)); } }, { key: "visitLiteralArray", value: function visitLiteralArray(ast, mode) { throw new Error("Illegal State: literal arrays should have been converted into functions"); } }, { key: "visitLiteralMap", value: function visitLiteralMap(ast, mode) { throw new Error("Illegal State: literal maps should have been converted into functions"); } }, { key: "visitLiteralPrimitive", value: function visitLiteralPrimitive(ast, mode) { // For literal values of null, undefined, true, or false allow type interference // to infer the type. var type = ast.value === null || ast.value === undefined || ast.value === true || ast.value === true ? INFERRED_TYPE : undefined; return convertToStatementIfNeeded(mode, literal(ast.value, type, this.convertSourceSpan(ast.span))); } }, { key: "_getLocal", value: function _getLocal(name, receiver) { var _a; if (((_a = this._localResolver.globals) === null || _a === void 0 ? void 0 : _a.has(name)) && receiver instanceof ThisReceiver) { return null; } return this._localResolver.getLocal(name); } }, { key: "visitMethodCall", value: function visitMethodCall(ast, mode) { if (ast.receiver instanceof ImplicitReceiver && !(ast.receiver instanceof ThisReceiver) && ast.name === '$any') { var args = this.visitAll(ast.args, _Mode.Expression); if (args.length != 1) { throw new Error("Invalid call to $any, expected 1 argument but received ".concat(args.length || 'none')); } return args[0].cast(DYNAMIC_TYPE, this.convertSourceSpan(ast.span)); } var leftMostSafe = this.leftMostSafeNode(ast); if (leftMostSafe) { return this.convertSafeAccess(ast, leftMostSafe, mode); } else { var _args = this.visitAll(ast.args, _Mode.Expression); var prevUsesImplicitReceiver = this.usesImplicitReceiver; var result = null; var receiver = this._visit(ast.receiver, _Mode.Expression); if (receiver === this._implicitReceiver) { var varExpr = this._getLocal(ast.name, ast.receiver); if (varExpr) { // Restore the previous "usesImplicitReceiver" state since the implicit // receiver has been replaced with a resolved local expression. this.usesImplicitReceiver = prevUsesImplicitReceiver; result = varExpr.callFn(_args); this.addImplicitReceiverAccess(ast.name); } } if (result == null) { result = receiver.callMethod(ast.name, _args, this.convertSourceSpan(ast.span)); } return convertToStatementIfNeeded(mode, result); } } }, { key: "visitPrefixNot", value: function visitPrefixNot(ast, mode) { return convertToStatementIfNeeded(mode, not(this._visit(ast.expression, _Mode.Expression))); } }, { key: "visitNonNullAssert", value: function visitNonNullAssert(ast, mode) { return convertToStatementIfNeeded(mode, assertNotNull(this._visit(ast.expression, _Mode.Expression))); } }, { key: "visitPropertyRead", value: function visitPropertyRead(ast, mode) { var leftMostSafe = this.leftMostSafeNode(ast); if (leftMostSafe) { return this.convertSafeAccess(ast, leftMostSafe, mode); } else { var result = null; var prevUsesImplicitReceiver = this.usesImplicitReceiver; var receiver = this._visit(ast.receiver, _Mode.Expression); if (receiver === this._implicitReceiver) { result = this._getLocal(ast.name, ast.receiver); if (result) { // Restore the previous "usesImplicitReceiver" state since the implicit // receiver has been replaced with a resolved local expression. this.usesImplicitReceiver = prevUsesImplicitReceiver; this.addImplicitReceiverAccess(ast.name); } } if (result == null) { result = receiver.prop(ast.name); } return convertToStatementIfNeeded(mode, result); } } }, { key: "visitPropertyWrite", value: function visitPropertyWrite(ast, mode) { var receiver = this._visit(ast.receiver, _Mode.Expression); var prevUsesImplicitReceiver = this.usesImplicitReceiver; var varExpr = null; if (receiver === this._implicitReceiver) { var localExpr = this._getLocal(ast.name, ast.receiver); if (localExpr) { if (localExpr instanceof ReadPropExpr) { // If the local variable is a property read expression, it's a reference // to a 'context.property' value and will be used as the target of the // write expression. varExpr = localExpr; // Restore the previous "usesImplicitReceiver" state since the implicit // receiver has been replaced with a resolved local expression. this.usesImplicitReceiver = prevUsesImplicitReceiver; this.addImplicitReceiverAccess(ast.name); } else { // Otherwise it's an error. var _receiver = ast.name; var value = ast.value instanceof PropertyRead ? ast.value.name : undefined; throw new Error("Cannot assign value \"".concat(value, "\" to template variable \"").concat(_receiver, "\". Template variables are read-only.")); } } } // If no local expression could be produced, use the original receiver's // property as the target. if (varExpr === null) { varExpr = receiver.prop(ast.name); } return convertToStatementIfNeeded(mode, varExpr.set(this._visit(ast.value, _Mode.Expression))); } }, { key: "visitSafePropertyRead", value: function visitSafePropertyRead(ast, mode) { return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode); } }, { key: "visitSafeMethodCall", value: function visitSafeMethodCall(ast, mode) { return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode); } }, { key: "visitAll", value: function visitAll(asts, mode) { var _this118 = this; return asts.map(function (ast) { return _this118._visit(ast, mode); }); } }, { key: "visitQuote", value: function visitQuote(ast, mode) { throw new Error("Quotes are not supported for evaluation!\n Statement: ".concat(ast.uninterpretedExpression, " located at ").concat(ast.location)); } }, { key: "_visit", value: function _visit(ast, mode) { var result = this._resultMap.get(ast); if (result) return result; return (this._nodeMap.get(ast) || ast).visit(this, mode); } }, { key: "convertSafeAccess", value: function convertSafeAccess(ast, leftMostSafe, mode) { // If the expression contains a safe access node on the left it needs to be converted to // an expression that guards the access to the member by checking the receiver for blank. As // execution proceeds from left to right, the left most part of the expression must be guarded // first but, because member access is left associative, the right side of the expression is at // the top of the AST. The desired result requires lifting a copy of the left part of the // expression up to test it for blank before generating the unguarded version. // Consider, for example the following expression: a?.b.c?.d.e // This results in the ast: // . // / \ // ?. e // / \ // . d // / \ // ?. c // / \ // a b // The following tree should be generated: // // /---- ? ----\ // / | \ // a /--- ? ---\ null // / | \ // . . null // / \ / \ // . c . e // / \ / \ // a b . d // / \ // . c // / \ // a b // // Notice that the first guard condition is the left hand of the left most safe access node // which comes in as leftMostSafe to this routine. var guardedExpression = this._visit(leftMostSafe.receiver, _Mode.Expression); var temporary = undefined; if (this.needsTemporary(leftMostSafe.receiver)) { // If the expression has method calls or pipes then we need to save the result into a // temporary variable to avoid calling stateful or impure code more than once. temporary = this.allocateTemporary(); // Preserve the result in the temporary variable guardedExpression = temporary.set(guardedExpression); // Ensure all further references to the guarded expression refer to the temporary instead. this._resultMap.set(leftMostSafe.receiver, temporary); } var condition = guardedExpression.isBlank(); // Convert the ast to an unguarded access to the receiver's member. The map will substitute // leftMostNode with its unguarded version in the call to `this.visit()`. if (leftMostSafe instanceof SafeMethodCall) { this._nodeMap.set(leftMostSafe, new MethodCall(leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.nameSpan, leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args)); } else { this._nodeMap.set(leftMostSafe, new PropertyRead(leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.nameSpan, leftMostSafe.receiver, leftMostSafe.name)); } // Recursively convert the node now without the guarded member access. var access = this._visit(ast, _Mode.Expression); // Remove the mapping. This is not strictly required as the converter only traverses each node // once but is safer if the conversion is changed to traverse the nodes more than once. this._nodeMap["delete"](leftMostSafe); // If we allocated a temporary, release it. if (temporary) { this.releaseTemporary(temporary); } // Produce the conditional return convertToStatementIfNeeded(mode, condition.conditional(literal(null), access)); } // Given an expression of the form a?.b.c?.d.e then the left most safe node is // the (a?.b). The . and ?. are left associative thus can be rewritten as: // ((((a?.c).b).c)?.d).e. This returns the most deeply nested safe read or // safe method call as this needs to be transformed initially to: // a == null ? null : a.c.b.c?.d.e // then to: // a == null ? null : a.b.c == null ? null : a.b.c.d.e }, { key: "leftMostSafeNode", value: function leftMostSafeNode(ast) { var _this119 = this; var visit = function visit(visitor, ast) { return (_this119._nodeMap.get(ast) || ast).visit(visitor); }; return ast.visit({ visitUnary: function visitUnary(ast) { return null; }, visitBinary: function visitBinary(ast) { return null; }, visitChain: function visitChain(ast) { return null; }, visitConditional: function visitConditional(ast) { return null; }, visitFunctionCall: function visitFunctionCall(ast) { return null; }, visitImplicitReceiver: function visitImplicitReceiver(ast) { return null; }, visitThisReceiver: function visitThisReceiver(ast) { return null; }, visitInterpolation: function visitInterpolation(ast) { return null; }, visitKeyedRead: function visitKeyedRead(ast) { return visit(this, ast.obj); }, visitKeyedWrite: function visitKeyedWrite(ast) { return null; }, visitLiteralArray: function visitLiteralArray(ast) { return null; }, visitLiteralMap: function visitLiteralMap(ast) { return null; }, visitLiteralPrimitive: function visitLiteralPrimitive(ast) { return null; }, visitMethodCall: function visitMethodCall(ast) { return visit(this, ast.receiver); }, visitPipe: function visitPipe(ast) { return null; }, visitPrefixNot: function visitPrefixNot(ast) { return null; }, visitNonNullAssert: function visitNonNullAssert(ast) { return null; }, visitPropertyRead: function visitPropertyRead(ast) { return visit(this, ast.receiver); }, visitPropertyWrite: function visitPropertyWrite(ast) { return null; }, visitQuote: function visitQuote(ast) { return null; }, visitSafeMethodCall: function visitSafeMethodCall(ast) { return visit(this, ast.receiver) || ast; }, visitSafePropertyRead: function visitSafePropertyRead(ast) { return visit(this, ast.receiver) || ast; } }); } // Returns true of the AST includes a method or a pipe indicating that, if the // expression is used as the target of a safe property or method access then // the expression should be stored into a temporary variable. }, { key: "needsTemporary", value: function needsTemporary(ast) { var _this120 = this; var visit = function visit(visitor, ast) { return ast && (_this120._nodeMap.get(ast) || ast).visit(visitor); }; var visitSome = function visitSome(visitor, ast) { return ast.some(function (ast) { return visit(visitor, ast); }); }; return ast.visit({ visitUnary: function visitUnary(ast) { return visit(this, ast.expr); }, visitBinary: function visitBinary(ast) { return visit(this, ast.left) || visit(this, ast.right); }, visitChain: function visitChain(ast) { return false; }, visitConditional: function visitConditional(ast) { return visit(this, ast.condition) || visit(this, ast.trueExp) || visit(this, ast.falseExp); }, visitFunctionCall: function visitFunctionCall(ast) { return true; }, visitImplicitReceiver: function visitImplicitReceiver(ast) { return false; }, visitThisReceiver: function visitThisReceiver(ast) { return false; }, visitInterpolation: function visitInterpolation(ast) { return visitSome(this, ast.expressions); }, visitKeyedRead: function visitKeyedRead(ast) { return false; }, visitKeyedWrite: function visitKeyedWrite(ast) { return false; }, visitLiteralArray: function visitLiteralArray(ast) { return true; }, visitLiteralMap: function visitLiteralMap(ast) { return true; }, visitLiteralPrimitive: function visitLiteralPrimitive(ast) { return false; }, visitMethodCall: function visitMethodCall(ast) { return true; }, visitPipe: function visitPipe(ast) { return true; }, visitPrefixNot: function visitPrefixNot(ast) { return visit(this, ast.expression); }, visitNonNullAssert: function visitNonNullAssert(ast) { return visit(this, ast.expression); }, visitPropertyRead: function visitPropertyRead(ast) { return false; }, visitPropertyWrite: function visitPropertyWrite(ast) { return false; }, visitQuote: function visitQuote(ast) { return false; }, visitSafeMethodCall: function visitSafeMethodCall(ast) { return true; }, visitSafePropertyRead: function visitSafePropertyRead(ast) { return false; } }); } }, { key: "allocateTemporary", value: function allocateTemporary() { var tempNumber = this._currentTemporary++; this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount); return new ReadVarExpr(temporaryName(this.bindingId, tempNumber)); } }, { key: "releaseTemporary", value: function releaseTemporary(temporary) { this._currentTemporary--; if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) { throw new Error("Temporary ".concat(temporary.name, " released out of order")); } } /** * Creates an absolute `ParseSourceSpan` from the relative `ParseSpan`. * * `ParseSpan` objects are relative to the start of the expression. * This method converts these to full `ParseSourceSpan` objects that * show where the span is within the overall source file. * * @param span the relative span to convert. * @returns a `ParseSourceSpan` for the given span or null if no * `baseSourceSpan` was provided to this class. */ }, { key: "convertSourceSpan", value: function convertSourceSpan(span) { if (this.baseSourceSpan) { var _start = this.baseSourceSpan.start.moveBy(span.start); var end = this.baseSourceSpan.start.moveBy(span.end); var fullStart = this.baseSourceSpan.fullStart.moveBy(span.start); return new ParseSourceSpan(_start, end, fullStart); } else { return null; } } /** Adds the name of an AST to the list of implicit receiver accesses. */ }, { key: "addImplicitReceiverAccess", value: function addImplicitReceiverAccess(name) { if (this.implicitReceiverAccesses) { this.implicitReceiverAccesses.add(name); } } }]); return _AstToIrVisitor; }(); function flattenStatements(arg, output) { if (Array.isArray(arg)) { arg.forEach(function (entry) { return flattenStatements(entry, output); }); } else { output.push(arg); } } var DefaultLocalResolver = /*#__PURE__*/function () { function DefaultLocalResolver(globals) { _classCallCheck(this, DefaultLocalResolver); this.globals = globals; } _createClass2(DefaultLocalResolver, [{ key: "notifyImplicitReceiverUse", value: function notifyImplicitReceiverUse() {} }, { key: "getLocal", value: function getLocal(name) { if (name === EventHandlerVars.event.name) { return EventHandlerVars.event; } return null; } }]); return DefaultLocalResolver; }(); function createCurrValueExpr(bindingId) { return variable("currVal_".concat(bindingId)); // fix syntax highlighting: ` } function createPreventDefaultVar(bindingId) { return variable("pd_".concat(bindingId)); } function convertStmtIntoExpression(stmt) { if (stmt instanceof ExpressionStatement) { return stmt.expr; } else if (stmt instanceof ReturnStatement) { return stmt.value; } return null; } var BuiltinFunctionCall = /*#__PURE__*/function (_FunctionCall) { _inherits(BuiltinFunctionCall, _FunctionCall); var _super85 = _createSuper(BuiltinFunctionCall); function BuiltinFunctionCall(span, sourceSpan, args, converter) { var _this121; _classCallCheck(this, BuiltinFunctionCall); _this121 = _super85.call(this, span, sourceSpan, null, args); _this121.args = args; _this121.converter = converter; return _this121; } return _createClass2(BuiltinFunctionCall); }(FunctionCall); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * This file is a port of shadowCSS from webcomponents.js to TypeScript. * * Please make sure to keep to edits in sync with the source file. * * Source: * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js * * The original file level comment is reproduced below */ /* This is a limited shim for ShadowDOM css styling. https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles The intention here is to support only the styling features which can be relatively simply implemented. The goal is to allow users to avoid the most obvious pitfalls and do so without compromising performance significantly. For ShadowDOM styling that's not covered here, a set of best practices can be provided that should allow users to accomplish more complex styling. The following is a list of specific ShadowDOM styling features and a brief discussion of the approach used to shim. Shimmed features: * :host, :host-context: ShadowDOM allows styling of the shadowRoot's host element using the :host rule. To shim this feature, the :host styles are reformatted and prefixed with a given scope name and promoted to a document level stylesheet. For example, given a scope name of .foo, a rule like this: :host { background: red; } } becomes: .foo { background: red; } * encapsulation: Styles defined within ShadowDOM, apply only to dom inside the ShadowDOM. Polymer uses one of two techniques to implement this feature. By default, rules are prefixed with the host element tag name as a descendant selector. This ensures styling does not leak out of the 'top' of the element's ShadowDOM. For example, div { font-weight: bold; } becomes: x-foo div { font-weight: bold; } becomes: Alternatively, if WebComponents.ShadowCSS.strictStyling is set to true then selectors are scoped by adding an attribute selector suffix to each simple selector that contains the host element tag name. Each element in the element's ShadowDOM template is also given the scope attribute. Thus, these rules match only elements that have the scope attribute. For example, given a scope name of x-foo, a rule like this: div { font-weight: bold; } becomes: div[x-foo] { font-weight: bold; } Note that elements that are dynamically added to a scope must have the scope selector added to them manually. * upper/lower bound encapsulation: Styles which are defined outside a shadowRoot should not cross the ShadowDOM boundary and should not apply inside a shadowRoot. This styling behavior is not emulated. Some possible ways to do this that were rejected due to complexity and/or performance concerns include: (1) reset every possible property for every possible selector for a given scope name; (2) re-implement css in javascript. As an alternative, users should make sure to use selectors specific to the scope in which they are working. * ::distributed: This behavior is not emulated. It's often not necessary to style the contents of a specific insertion point and instead, descendants of the host element can be styled selectively. Users can also create an extra node around an insertion point and style that node's contents via descendent selectors. For example, with a shadowRoot like this: could become:
Note the use of @polyfill in the comment above a ShadowDOM specific style declaration. This is a directive to the styling shim to use the selector in comments in lieu of the next selector when running under polyfill. */ var ShadowCss = /*#__PURE__*/function () { function ShadowCss() { _classCallCheck(this, ShadowCss); this.strictStyling = true; } /* * Shim some cssText with the given selector. Returns cssText that can * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). * * When strictStyling is true: * - selector is the attribute added to all elements inside the host, * - hostSelector is the attribute added to the host itself. */ _createClass2(ShadowCss, [{ key: "shimCssText", value: function shimCssText(cssText, selector) { var hostSelector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; var commentsWithHash = extractCommentsWithHash(cssText); cssText = stripComments(cssText); cssText = this._insertDirectives(cssText); var scopedCssText = this._scopeCssText(cssText, selector, hostSelector); return [scopedCssText].concat(_toConsumableArray(commentsWithHash)).join('\n'); } }, { key: "_insertDirectives", value: function _insertDirectives(cssText) { cssText = this._insertPolyfillDirectivesInCssText(cssText); return this._insertPolyfillRulesInCssText(cssText); } /* * Process styles to convert native ShadowDOM rules that will trip * up the css parser; we rely on decorating the stylesheet with inert rules. * * For example, we convert this rule: * * polyfill-next-selector { content: ':host menu-item'; } * ::content menu-item { * * to this: * * scopeName menu-item { * **/ }, { key: "_insertPolyfillDirectivesInCssText", value: function _insertPolyfillDirectivesInCssText(cssText) { // Difference with webcomponents.js: does not handle comments return cssText.replace(_cssContentNextSelectorRe, function () { return (arguments.length <= 2 ? undefined : arguments[2]) + '{'; }); } /* * Process styles to add rules which will only apply under the polyfill * * For example, we convert this rule: * * polyfill-rule { * content: ':host menu-item'; * ... * } * * to this: * * scopeName menu-item {...} * **/ }, { key: "_insertPolyfillRulesInCssText", value: function _insertPolyfillRulesInCssText(cssText) { // Difference with webcomponents.js: does not handle comments return cssText.replace(_cssContentRuleRe, function () { for (var _len5 = arguments.length, m = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) { m[_key6] = arguments[_key6]; } var rule = m[0].replace(m[1], '').replace(m[2], ''); return m[4] + rule; }); } /* Ensure styles are scoped. Pseudo-scoping takes a rule like: * * .foo {... } * * and converts this to * * scopeName .foo { ... } */ }, { key: "_scopeCssText", value: function _scopeCssText(cssText, scopeSelector, hostSelector) { var unscopedRules = this._extractUnscopedRulesFromCssText(cssText); // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively cssText = this._insertPolyfillHostInCssText(cssText); cssText = this._convertColonHost(cssText); cssText = this._convertColonHostContext(cssText); cssText = this._convertShadowDOMSelectors(cssText); if (scopeSelector) { cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); } cssText = cssText + '\n' + unscopedRules; return cssText.trim(); } /* * Process styles to add rules which will only apply under the polyfill * and do not process via CSSOM. (CSSOM is destructive to rules on rare * occasions, e.g. -webkit-calc on Safari.) * For example, we convert this rule: * * @polyfill-unscoped-rule { * content: 'menu-item'; * ... } * * to this: * * menu-item {...} * **/ }, { key: "_extractUnscopedRulesFromCssText", value: function _extractUnscopedRulesFromCssText(cssText) { // Difference with webcomponents.js: does not handle comments var r = ''; var m; _cssContentUnscopedRuleRe.lastIndex = 0; while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { var rule = m[0].replace(m[2], '').replace(m[1], m[4]); r += rule + '\n\n'; } return r; } /* * convert a rule like :host(.foo) > .bar { } * * to * * .foo > .bar */ }, { key: "_convertColonHost", value: function _convertColonHost(cssText) { return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer); } /* * convert a rule like :host-context(.foo) > .bar { } * * to * * .foo > .bar, .foo scopeName > .bar { } * * and * * :host-context(.foo:host) .bar { ... } * * to * * .foo .bar { ... } */ }, { key: "_convertColonHostContext", value: function _convertColonHostContext(cssText) { return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer); } }, { key: "_convertColonRule", value: function _convertColonRule(cssText, regExp, partReplacer) { // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule return cssText.replace(regExp, function () { for (var _len6 = arguments.length, m = new Array(_len6), _key7 = 0; _key7 < _len6; _key7++) { m[_key7] = arguments[_key7]; } if (m[2]) { var parts = m[2].split(','); var r = []; for (var i = 0; i < parts.length; i++) { var p = parts[i].trim(); if (!p) break; r.push(partReplacer(_polyfillHostNoCombinator, p, m[3])); } return r.join(','); } else { return _polyfillHostNoCombinator + m[3]; } }); } }, { key: "_colonHostContextPartReplacer", value: function _colonHostContextPartReplacer(host, part, suffix) { if (part.indexOf(_polyfillHost) > -1) { return this._colonHostPartReplacer(host, part, suffix); } else { return host + part + suffix + ', ' + part + ' ' + host + suffix; } } }, { key: "_colonHostPartReplacer", value: function _colonHostPartReplacer(host, part, suffix) { return host + part.replace(_polyfillHost, '') + suffix; } /* * Convert combinators like ::shadow and pseudo-elements like ::content * by replacing with space. */ }, { key: "_convertShadowDOMSelectors", value: function _convertShadowDOMSelectors(cssText) { return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText); } // change a selector like 'div' to 'name div' }, { key: "_scopeSelectors", value: function _scopeSelectors(cssText, scopeSelector, hostSelector) { var _this122 = this; return processRules(cssText, function (rule) { var selector = rule.selector; var content = rule.content; if (rule.selector[0] != '@') { selector = _this122._scopeSelector(rule.selector, scopeSelector, hostSelector, _this122.strictStyling); } else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { content = _this122._scopeSelectors(rule.content, scopeSelector, hostSelector); } return new CssRule(selector, content); }); } }, { key: "_scopeSelector", value: function _scopeSelector(selector, scopeSelector, hostSelector, strict) { var _this123 = this; return selector.split(',').map(function (part) { return part.trim().split(_shadowDeepSelectors); }).map(function (deepParts) { var _deepParts = _toArray(deepParts), shallowPart = _deepParts[0], otherParts = _deepParts.slice(1); var applyScope = function applyScope(shallowPart) { if (_this123._selectorNeedsScoping(shallowPart, scopeSelector)) { return strict ? _this123._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) : _this123._applySelectorScope(shallowPart, scopeSelector, hostSelector); } else { return shallowPart; } }; return [applyScope(shallowPart)].concat(_toConsumableArray(otherParts)).join(' '); }).join(', '); } }, { key: "_selectorNeedsScoping", value: function _selectorNeedsScoping(selector, scopeSelector) { var re = this._makeScopeMatcher(scopeSelector); return !re.test(selector); } }, { key: "_makeScopeMatcher", value: function _makeScopeMatcher(scopeSelector) { var lre = /\[/g; var rre = /\]/g; scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); } }, { key: "_applySelectorScope", value: function _applySelectorScope(selector, scopeSelector, hostSelector) { // Difference from webcomponents.js: scopeSelector could not be an array return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector); } // scope via name and [is=name] }, { key: "_applySimpleSelectorScope", value: function _applySimpleSelectorScope(selector, scopeSelector, hostSelector) { // In Android browser, the lastIndex is not reset when the regex is used in String.replace() _polyfillHostRe.lastIndex = 0; if (_polyfillHostRe.test(selector)) { var replaceBy = this.strictStyling ? "[".concat(hostSelector, "]") : scopeSelector; return selector.replace(_polyfillHostNoCombinatorRe, function (hnc, selector) { return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) { return before + replaceBy + colon + after; }); }).replace(_polyfillHostRe, replaceBy + ' '); } return scopeSelector + ' ' + selector; } // return a selector with [name] suffix on each simple selector // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ }, { key: "_applyStrictSelectorScope", value: function _applyStrictSelectorScope(selector, scopeSelector, hostSelector) { var _this124 = this; var isRe = /\[is=([^\]]*)\]/g; scopeSelector = scopeSelector.replace(isRe, function (_) { return arguments.length <= 1 ? undefined : arguments[1]; }); var attrName = '[' + scopeSelector + ']'; var _scopeSelectorPart = function _scopeSelectorPart(p) { var scopedP = p.trim(); if (!scopedP) { return ''; } if (p.indexOf(_polyfillHostNoCombinator) > -1) { scopedP = _this124._applySimpleSelectorScope(p, scopeSelector, hostSelector); } else { // remove :host since it should be unnecessary var t = p.replace(_polyfillHostRe, ''); if (t.length > 0) { var matches = t.match(/([^:]*)(:*)(.*)/); if (matches) { scopedP = matches[1] + attrName + matches[2] + matches[3]; } } } return scopedP; }; var safeContent = new SafeSelector(selector); selector = safeContent.content(); var scopedSelector = ''; var startIndex = 0; var res; var sep = /( |>|\+|~(?!=))\s*/g; // If a selector appears before :host it should not be shimmed as it // matches on ancestor elements and not on elements in the host's shadow // `:host-context(div)` is transformed to // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` // the `div` is not part of the component in the 2nd selectors and should not be scoped. // Historically `component-tag:host` was matching the component so we also want to preserve // this behavior to avoid breaking legacy apps (it should not match). // The behavior should be: // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a // `:host-context(tag)`) var hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present var shouldScope = !hasHost; while ((res = sep.exec(selector)) !== null) { var separator = res[1]; var _part = selector.slice(startIndex, res.index).trim(); shouldScope = shouldScope || _part.indexOf(_polyfillHostNoCombinator) > -1; var scopedPart = shouldScope ? _scopeSelectorPart(_part) : _part; scopedSelector += "".concat(scopedPart, " ").concat(separator, " "); startIndex = sep.lastIndex; } var part = selector.substring(startIndex); shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; // replace the placeholders with their original values return safeContent.restore(scopedSelector); } }, { key: "_insertPolyfillHostInCssText", value: function _insertPolyfillHostInCssText(selector) { return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost); } }]); return ShadowCss; }(); var SafeSelector = /*#__PURE__*/function () { function SafeSelector(selector) { var _this125 = this; _classCallCheck(this, SafeSelector); this.placeholders = []; this.index = 0; // Replaces attribute selectors with placeholders. // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. selector = this._escapeRegexMatches(selector, /(\[[^\]]*\])/g); // CSS allows for certain special characters to be used in selectors if they're escaped. // E.g. `.foo:blue` won't match a class called `foo:blue`, because the colon denotes a // pseudo-class, but writing `.foo\:blue` will match, because the colon was escaped. // Replace all escape sequences (`\` followed by a character) with a placeholder so // that our handling of pseudo-selectors doesn't mess with them. selector = this._escapeRegexMatches(selector, /(\\.)/g); // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. // WS and "+" would otherwise be interpreted as selector separators. this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, function (_, pseudo, exp) { var replaceBy = "__ph-".concat(_this125.index, "__"); _this125.placeholders.push(exp); _this125.index++; return pseudo + replaceBy; }); } _createClass2(SafeSelector, [{ key: "restore", value: function restore(content) { var _this126 = this; return content.replace(/__ph-(\d+)__/g, function (_ph, index) { return _this126.placeholders[+index]; }); } }, { key: "content", value: function content() { return this._content; } /** * Replaces all of the substrings that match a regex within a * special string (e.g. `__ph-0__`, `__ph-1__`, etc). */ }, { key: "_escapeRegexMatches", value: function _escapeRegexMatches(content, pattern) { var _this127 = this; return content.replace(pattern, function (_, keep) { var replaceBy = "__ph-".concat(_this127.index, "__"); _this127.placeholders.push(keep); _this127.index++; return replaceBy; }); } }]); return SafeSelector; }(); var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; var _polyfillHost = '-shadowcsshost'; // note: :host-context pre-processed to -shadowcsshostcontext. var _polyfillHostContext = '-shadowcsscontext'; var _parenSuffix = ')(?:\\((' + '(?:\\([^)(]*\\)|[^)(]*)+?' + ')\\))?([^,{]*)'; var _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim'); var _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim'); var _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; var _shadowDOMSelectorsRe = [/::shadow/g, /::content/g, // Deprecated selectors /\/shadow-deep\//g, /\/shadow\//g]; // The deep combinator is deprecated in the CSS spec // Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. // see https://github.com/angular/angular/pull/17677 var _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; var _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; var _polyfillHostRe = /-shadowcsshost/gim; var _colonHostRe = /:host/gim; var _colonHostContextRe = /:host-context/gim; var _commentRe = /\/\*\s*[\s\S]*?\*\//g; function stripComments(input) { return input.replace(_commentRe, ''); } var _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g; function extractCommentsWithHash(input) { return input.match(_commentWithHashRe) || []; } var BLOCK_PLACEHOLDER = '%BLOCK%'; var QUOTE_PLACEHOLDER = '%QUOTED%'; var _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g; var _quotedRe = /%QUOTED%/g; var CONTENT_PAIRS = new Map([['{', '}']]); var QUOTE_PAIRS = new Map([["\"", "\""], ["'", "'"]]); var CssRule = /*#__PURE__*/_createClass2(function CssRule(selector, content) { _classCallCheck(this, CssRule); this.selector = selector; this.content = content; }); function processRules(input, ruleCallback) { var inputWithEscapedQuotes = escapeBlocks(input, QUOTE_PAIRS, QUOTE_PLACEHOLDER); var inputWithEscapedBlocks = escapeBlocks(inputWithEscapedQuotes.escapedString, CONTENT_PAIRS, BLOCK_PLACEHOLDER); var nextBlockIndex = 0; var nextQuoteIndex = 0; return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () { var selector = arguments.length <= 2 ? undefined : arguments[2]; var content = ''; var suffix = arguments.length <= 4 ? undefined : arguments[4]; var contentPrefix = ''; if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); contentPrefix = '{'; } var rule = ruleCallback(new CssRule(selector, content)); return "".concat(arguments.length <= 1 ? undefined : arguments[1]).concat(rule.selector).concat(arguments.length <= 3 ? undefined : arguments[3]).concat(contentPrefix).concat(rule.content).concat(suffix); }).replace(_quotedRe, function () { return inputWithEscapedQuotes.blocks[nextQuoteIndex++]; }); } var StringWithEscapedBlocks = /*#__PURE__*/_createClass2(function StringWithEscapedBlocks(escapedString, blocks) { _classCallCheck(this, StringWithEscapedBlocks); this.escapedString = escapedString; this.blocks = blocks; }); function escapeBlocks(input, charPairs, placeholder) { var resultParts = []; var escapedBlocks = []; var openCharCount = 0; var nonBlockStartIndex = 0; var blockStartIndex = -1; var openChar; var closeChar; for (var i = 0; i < input.length; i++) { var _char = input[i]; if (_char === '\\') { i++; } else if (_char === closeChar) { openCharCount--; if (openCharCount === 0) { escapedBlocks.push(input.substring(blockStartIndex, i)); resultParts.push(placeholder); nonBlockStartIndex = i; blockStartIndex = -1; openChar = closeChar = undefined; } } else if (_char === openChar) { openCharCount++; } else if (openCharCount === 0 && charPairs.has(_char)) { openChar = _char; closeChar = charPairs.get(_char); openCharCount = 1; blockStartIndex = i + 1; resultParts.push(input.substring(nonBlockStartIndex, blockStartIndex)); } } if (blockStartIndex !== -1) { escapedBlocks.push(input.substring(blockStartIndex)); resultParts.push(placeholder); } else { resultParts.push(input.substring(nonBlockStartIndex)); } return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var COMPONENT_VARIABLE = '%COMP%'; var HOST_ATTR = "_nghost-".concat(COMPONENT_VARIABLE); var CONTENT_ATTR = "_ngcontent-".concat(COMPONENT_VARIABLE); var StylesCompileDependency = /*#__PURE__*/_createClass2(function StylesCompileDependency(name, moduleUrl, setValue) { _classCallCheck(this, StylesCompileDependency); this.name = name; this.moduleUrl = moduleUrl; this.setValue = setValue; }); var CompiledStylesheet = /*#__PURE__*/_createClass2(function CompiledStylesheet(outputCtx, stylesVar, dependencies, isShimmed, meta) { _classCallCheck(this, CompiledStylesheet); this.outputCtx = outputCtx; this.stylesVar = stylesVar; this.dependencies = dependencies; this.isShimmed = isShimmed; this.meta = meta; }); var StyleCompiler = /*#__PURE__*/function () { function StyleCompiler(_urlResolver) { _classCallCheck(this, StyleCompiler); this._urlResolver = _urlResolver; this._shadowCss = new ShadowCss(); } _createClass2(StyleCompiler, [{ key: "compileComponent", value: function compileComponent(outputCtx, comp) { var template = comp.template; return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({ styles: template.styles, styleUrls: template.styleUrls, moduleUrl: identifierModuleUrl(comp.type) }), this.needsStyleShim(comp), true); } }, { key: "compileStyles", value: function compileStyles(outputCtx, comp, stylesheet) { var shim = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.needsStyleShim(comp); return this._compileStyles(outputCtx, comp, stylesheet, shim, false); } }, { key: "needsStyleShim", value: function needsStyleShim(comp) { return comp.template.encapsulation === ViewEncapsulation.Emulated; } }, { key: "_compileStyles", value: function _compileStyles(outputCtx, comp, stylesheet, shim, isComponentStylesheet) { var _this128 = this; var styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this128._shimIfNeeded(plainStyle, shim)); }); var dependencies = []; stylesheet.styleUrls.forEach(function (styleUrl) { var exprIndex = styleExpressions.length; // Note: This placeholder will be filled later. styleExpressions.push(null); dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, function (value) { return styleExpressions[exprIndex] = outputCtx.importExpr(value); })); }); // styles variable contains plain strings and arrays of other styles arrays (recursive), // so we set its type to dynamic. var stylesVar = getStylesVarName(isComponentStylesheet ? comp : null); var stmt = variable(stylesVar).set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const]))).toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [StmtModifier.Final, StmtModifier.Exported]); outputCtx.statements.push(stmt); return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet); } }, { key: "_shimIfNeeded", value: function _shimIfNeeded(style, shim) { return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style; } }]); return StyleCompiler; }(); function getStylesVarName(component) { var result = "styles"; if (component) { result += "_".concat(identifierName(component.type)); } return result; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A path is an ordered set of elements. Typically a path is to a * particular offset in a source file. The head of the list is the top * most node. The tail is the node that contains the offset directly. * * For example, the expression `a + b + c` might have an ast that looks * like: * + * / \ * a + * / \ * b c * * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10, * 'c' at 9-10]` and the path the node at offset 1 would be * `['+' at 1-10, 'a' at 1-2]`. */ var AstPath = /*#__PURE__*/function () { function AstPath(path) { var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; _classCallCheck(this, AstPath); this.path = path; this.position = position; } _createClass2(AstPath, [{ key: "empty", get: function get() { return !this.path || !this.path.length; } }, { key: "head", get: function get() { return this.path[0]; } }, { key: "tail", get: function get() { return this.path[this.path.length - 1]; } }, { key: "parentOf", value: function parentOf(node) { return node && this.path[this.path.indexOf(node) - 1]; } }, { key: "childOf", value: function childOf(node) { return this.path[this.path.indexOf(node) + 1]; } }, { key: "first", value: function first(ctor) { for (var i = this.path.length - 1; i >= 0; i--) { var item = this.path[i]; if (item instanceof ctor) return item; } } }, { key: "push", value: function push(node) { this.path.push(node); } }, { key: "pop", value: function pop() { return this.path.pop(); } }]); return AstPath; }(); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var NodeWithI18n = /*#__PURE__*/_createClass2(function NodeWithI18n(sourceSpan, i18n) { _classCallCheck(this, NodeWithI18n); this.sourceSpan = sourceSpan; this.i18n = i18n; }); var Text$3 = /*#__PURE__*/function (_NodeWithI18n) { _inherits(Text$3, _NodeWithI18n); var _super86 = _createSuper(Text$3); function Text$3(value, sourceSpan, i18n) { var _this129; _classCallCheck(this, Text$3); _this129 = _super86.call(this, sourceSpan, i18n); _this129.value = value; return _this129; } _createClass2(Text$3, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitText(this, context); } }]); return Text$3; }(NodeWithI18n); var Expansion = /*#__PURE__*/function (_NodeWithI18n2) { _inherits(Expansion, _NodeWithI18n2); var _super87 = _createSuper(Expansion); function Expansion(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) { var _this130; _classCallCheck(this, Expansion); _this130 = _super87.call(this, sourceSpan, i18n); _this130.switchValue = switchValue; _this130.type = type; _this130.cases = cases; _this130.switchValueSourceSpan = switchValueSourceSpan; return _this130; } _createClass2(Expansion, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitExpansion(this, context); } }]); return Expansion; }(NodeWithI18n); var ExpansionCase = /*#__PURE__*/function () { function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) { _classCallCheck(this, ExpansionCase); this.value = value; this.expression = expression; this.sourceSpan = sourceSpan; this.valueSourceSpan = valueSourceSpan; this.expSourceSpan = expSourceSpan; } _createClass2(ExpansionCase, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitExpansionCase(this, context); } }]); return ExpansionCase; }(); var Attribute = /*#__PURE__*/function (_NodeWithI18n3) { _inherits(Attribute, _NodeWithI18n3); var _super88 = _createSuper(Attribute); function Attribute(name, value, sourceSpan, valueSpan, i18n) { var _this131; _classCallCheck(this, Attribute); _this131 = _super88.call(this, sourceSpan, i18n); _this131.name = name; _this131.value = value; _this131.valueSpan = valueSpan; return _this131; } _createClass2(Attribute, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitAttribute(this, context); } }]); return Attribute; }(NodeWithI18n); var Element$1 = /*#__PURE__*/function (_NodeWithI18n4) { _inherits(Element$1, _NodeWithI18n4); var _super89 = _createSuper(Element$1); function Element$1(name, attrs, children, sourceSpan, startSourceSpan) { var _this132; var endSourceSpan = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; var i18n = arguments.length > 6 ? arguments[6] : undefined; _classCallCheck(this, Element$1); _this132 = _super89.call(this, sourceSpan, i18n); _this132.name = name; _this132.attrs = attrs; _this132.children = children; _this132.startSourceSpan = startSourceSpan; _this132.endSourceSpan = endSourceSpan; return _this132; } _createClass2(Element$1, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitElement(this, context); } }]); return Element$1; }(NodeWithI18n); var Comment = /*#__PURE__*/function () { function Comment(value, sourceSpan) { _classCallCheck(this, Comment); this.value = value; this.sourceSpan = sourceSpan; } _createClass2(Comment, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitComment(this, context); } }]); return Comment; }(); function visitAll$1(visitor, nodes) { var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var result = []; var visit = visitor.visit ? function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } : function (ast) { return ast.visit(visitor, context); }; nodes.forEach(function (ast) { var astResult = visit(ast); if (astResult) { result.push(astResult); } }); return result; } var RecursiveVisitor$1 = /*#__PURE__*/function () { function RecursiveVisitor$1() { _classCallCheck(this, RecursiveVisitor$1); } _createClass2(RecursiveVisitor$1, [{ key: "visitElement", value: function visitElement(ast, context) { this.visitChildren(context, function (visit) { visit(ast.attrs); visit(ast.children); }); } }, { key: "visitAttribute", value: function visitAttribute(ast, context) {} }, { key: "visitText", value: function visitText(ast, context) {} }, { key: "visitComment", value: function visitComment(ast, context) {} }, { key: "visitExpansion", value: function visitExpansion(ast, context) { return this.visitChildren(context, function (visit) { visit(ast.cases); }); } }, { key: "visitExpansionCase", value: function visitExpansionCase(ast, context) {} }, { key: "visitChildren", value: function visitChildren(context, cb) { var results = []; var t = this; function visit(children) { if (children) results.push(visitAll$1(t, children, context)); } cb(visit); return Array.prototype.concat.apply([], results); } }]); return RecursiveVisitor$1; }(); function spanOf(ast) { var start = ast.sourceSpan.start.offset; var end = ast.sourceSpan.end.offset; if (ast instanceof Element$1) { if (ast.endSourceSpan) { end = ast.endSourceSpan.end.offset; } else if (ast.children && ast.children.length) { end = spanOf(ast.children[ast.children.length - 1]).end; } } return { start: start, end: end }; } function findNode(nodes, position) { var path = []; var visitor = new ( /*#__PURE__*/function (_RecursiveVisitor$) { _inherits(_class, _RecursiveVisitor$); var _super90 = _createSuper(_class); function _class() { _classCallCheck(this, _class); return _super90.apply(this, arguments); } _createClass2(_class, [{ key: "visit", value: function visit(ast, context) { var span = spanOf(ast); if (span.start <= position && position < span.end) { path.push(ast); } else { // Returning a value here will result in the children being skipped. return true; } } }]); return _class; }(RecursiveVisitor$1))(); visitAll$1(visitor, nodes); return new AstPath(path, position); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var TokenType; (function (TokenType) { TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START"; TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END"; TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID"; TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE"; TokenType[TokenType["INCOMPLETE_TAG_OPEN"] = 4] = "INCOMPLETE_TAG_OPEN"; TokenType[TokenType["TEXT"] = 5] = "TEXT"; TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 6] = "ESCAPABLE_RAW_TEXT"; TokenType[TokenType["RAW_TEXT"] = 7] = "RAW_TEXT"; TokenType[TokenType["COMMENT_START"] = 8] = "COMMENT_START"; TokenType[TokenType["COMMENT_END"] = 9] = "COMMENT_END"; TokenType[TokenType["CDATA_START"] = 10] = "CDATA_START"; TokenType[TokenType["CDATA_END"] = 11] = "CDATA_END"; TokenType[TokenType["ATTR_NAME"] = 12] = "ATTR_NAME"; TokenType[TokenType["ATTR_QUOTE"] = 13] = "ATTR_QUOTE"; TokenType[TokenType["ATTR_VALUE"] = 14] = "ATTR_VALUE"; TokenType[TokenType["DOC_TYPE"] = 15] = "DOC_TYPE"; TokenType[TokenType["EXPANSION_FORM_START"] = 16] = "EXPANSION_FORM_START"; TokenType[TokenType["EXPANSION_CASE_VALUE"] = 17] = "EXPANSION_CASE_VALUE"; TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 18] = "EXPANSION_CASE_EXP_START"; TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 19] = "EXPANSION_CASE_EXP_END"; TokenType[TokenType["EXPANSION_FORM_END"] = 20] = "EXPANSION_FORM_END"; TokenType[TokenType["EOF"] = 21] = "EOF"; })(TokenType || (TokenType = {})); var Token = /*#__PURE__*/_createClass2(function Token(type, parts, sourceSpan) { _classCallCheck(this, Token); this.type = type; this.parts = parts; this.sourceSpan = sourceSpan; }); var TokenError = /*#__PURE__*/function (_ParseError) { _inherits(TokenError, _ParseError); var _super91 = _createSuper(TokenError); function TokenError(errorMsg, tokenType, span) { var _this133; _classCallCheck(this, TokenError); _this133 = _super91.call(this, span, errorMsg); _this133.tokenType = tokenType; return _this133; } return _createClass2(TokenError); }(ParseError); var TokenizeResult = /*#__PURE__*/_createClass2(function TokenizeResult(tokens, errors, nonNormalizedIcuExpressions) { _classCallCheck(this, TokenizeResult); this.tokens = tokens; this.errors = errors; this.nonNormalizedIcuExpressions = nonNormalizedIcuExpressions; }); function tokenize(source, url, getTagDefinition) { var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var tokenizer = new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, options); tokenizer.tokenize(); return new TokenizeResult(mergeTextTokens(tokenizer.tokens), tokenizer.errors, tokenizer.nonNormalizedIcuExpressions); } var _CR_OR_CRLF_REGEXP = /\r\n?/g; function _unexpectedCharacterErrorMsg(charCode) { var _char2 = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode); return "Unexpected character \"".concat(_char2, "\""); } function _unknownEntityErrorMsg(entitySrc) { return "Unknown entity \"".concat(entitySrc, "\" - use the \"&#;\" or \"&#x;\" syntax"); } function _unparsableEntityErrorMsg(type, entityStr) { return "Unable to parse entity \"".concat(entityStr, "\" - ").concat(type, " character reference entities must end with \";\""); } var CharacterReferenceType; (function (CharacterReferenceType) { CharacterReferenceType["HEX"] = "hexadecimal"; CharacterReferenceType["DEC"] = "decimal"; })(CharacterReferenceType || (CharacterReferenceType = {})); var _ControlFlowError = /*#__PURE__*/_createClass2(function _ControlFlowError(error) { _classCallCheck(this, _ControlFlowError); this.error = error; }); // See https://www.w3.org/TR/html51/syntax.html#writing-html-documents var _Tokenizer = /*#__PURE__*/function () { /** * @param _file The html source file being tokenized. * @param _getTagDefinition A function that will retrieve a tag definition for a given tag name. * @param options Configuration of the tokenization. */ function _Tokenizer(_file, _getTagDefinition, options) { _classCallCheck(this, _Tokenizer); this._getTagDefinition = _getTagDefinition; this._currentTokenStart = null; this._currentTokenType = null; this._expansionCaseStack = []; this._inInterpolation = false; this.tokens = []; this.errors = []; this.nonNormalizedIcuExpressions = []; this._tokenizeIcu = options.tokenizeExpansionForms || false; this._interpolationConfig = options.interpolationConfig || DEFAULT_INTERPOLATION_CONFIG; this._leadingTriviaCodePoints = options.leadingTriviaChars && options.leadingTriviaChars.map(function (c) { return c.codePointAt(0) || 0; }); var range = options.range || { endPos: _file.content.length, startPos: 0, startLine: 0, startCol: 0 }; this._cursor = options.escapedString ? new EscapedCharacterCursor(_file, range) : new PlainCharacterCursor(_file, range); this._preserveLineEndings = options.preserveLineEndings || false; this._escapedString = options.escapedString || false; this._i18nNormalizeLineEndingsInICUs = options.i18nNormalizeLineEndingsInICUs || false; try { this._cursor.init(); } catch (e) { this.handleError(e); } } _createClass2(_Tokenizer, [{ key: "_processCarriageReturns", value: function _processCarriageReturns(content) { if (this._preserveLineEndings) { return content; } // https://www.w3.org/TR/html51/syntax.html#preprocessing-the-input-stream // In order to keep the original position in the source, we can not // pre-process it. // Instead CRs are processed right before instantiating the tokens. return content.replace(_CR_OR_CRLF_REGEXP, '\n'); } }, { key: "tokenize", value: function tokenize() { while (this._cursor.peek() !== $EOF) { var _start2 = this._cursor.clone(); try { if (this._attemptCharCode($LT)) { if (this._attemptCharCode($BANG)) { if (this._attemptCharCode($LBRACKET)) { this._consumeCdata(_start2); } else if (this._attemptCharCode($MINUS)) { this._consumeComment(_start2); } else { this._consumeDocType(_start2); } } else if (this._attemptCharCode($SLASH)) { this._consumeTagClose(_start2); } else { this._consumeTagOpen(_start2); } } else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) { this._consumeText(); } } catch (e) { this.handleError(e); } } this._beginToken(TokenType.EOF); this._endToken([]); } /** * @returns whether an ICU token has been created * @internal */ }, { key: "_tokenizeExpansionForm", value: function _tokenizeExpansionForm() { if (this.isExpansionFormStart()) { this._consumeExpansionFormStart(); return true; } if (isExpansionCaseStart(this._cursor.peek()) && this._isInExpansionForm()) { this._consumeExpansionCaseStart(); return true; } if (this._cursor.peek() === $RBRACE) { if (this._isInExpansionCase()) { this._consumeExpansionCaseEnd(); return true; } if (this._isInExpansionForm()) { this._consumeExpansionFormEnd(); return true; } } return false; } }, { key: "_beginToken", value: function _beginToken(type) { var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._cursor.clone(); this._currentTokenStart = start; this._currentTokenType = type; } }, { key: "_endToken", value: function _endToken(parts, end) { if (this._currentTokenStart === null) { throw new TokenError('Programming error - attempted to end a token when there was no start to the token', this._currentTokenType, this._cursor.getSpan(end)); } if (this._currentTokenType === null) { throw new TokenError('Programming error - attempted to end a token which has no token type', null, this._cursor.getSpan(this._currentTokenStart)); } var token = new Token(this._currentTokenType, parts, this._cursor.getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)); this.tokens.push(token); this._currentTokenStart = null; this._currentTokenType = null; return token; } }, { key: "_createError", value: function _createError(msg, span) { if (this._isInExpansionForm()) { msg += " (Do you have an unescaped \"{\" in your template? Use \"{{ '{' }}\") to escape it.)"; } var error = new TokenError(msg, this._currentTokenType, span); this._currentTokenStart = null; this._currentTokenType = null; return new _ControlFlowError(error); } }, { key: "handleError", value: function handleError(e) { if (e instanceof CursorError) { e = this._createError(e.msg, this._cursor.getSpan(e.cursor)); } if (e instanceof _ControlFlowError) { this.errors.push(e.error); } else { throw e; } } }, { key: "_attemptCharCode", value: function _attemptCharCode(charCode) { if (this._cursor.peek() === charCode) { this._cursor.advance(); return true; } return false; } }, { key: "_attemptCharCodeCaseInsensitive", value: function _attemptCharCodeCaseInsensitive(charCode) { if (compareCharCodeCaseInsensitive(this._cursor.peek(), charCode)) { this._cursor.advance(); return true; } return false; } }, { key: "_requireCharCode", value: function _requireCharCode(charCode) { var location = this._cursor.clone(); if (!this._attemptCharCode(charCode)) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); } } }, { key: "_attemptStr", value: function _attemptStr(chars) { var len = chars.length; if (this._cursor.charsLeft() < len) { return false; } var initialPosition = this._cursor.clone(); for (var i = 0; i < len; i++) { if (!this._attemptCharCode(chars.charCodeAt(i))) { // If attempting to parse the string fails, we want to reset the parser // to where it was before the attempt this._cursor = initialPosition; return false; } } return true; } }, { key: "_attemptStrCaseInsensitive", value: function _attemptStrCaseInsensitive(chars) { for (var i = 0; i < chars.length; i++) { if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) { return false; } } return true; } }, { key: "_requireStr", value: function _requireStr(chars) { var location = this._cursor.clone(); if (!this._attemptStr(chars)) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); } } }, { key: "_attemptCharCodeUntilFn", value: function _attemptCharCodeUntilFn(predicate) { while (!predicate(this._cursor.peek())) { this._cursor.advance(); } } }, { key: "_requireCharCodeUntilFn", value: function _requireCharCodeUntilFn(predicate, len) { var start = this._cursor.clone(); this._attemptCharCodeUntilFn(predicate); if (this._cursor.diff(start) < len) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); } } }, { key: "_attemptUntilChar", value: function _attemptUntilChar(_char3) { while (this._cursor.peek() !== _char3) { this._cursor.advance(); } } }, { key: "_readChar", value: function _readChar(decodeEntities) { if (decodeEntities && this._cursor.peek() === $AMPERSAND) { return this._decodeEntity(); } else { // Don't rely upon reading directly from `_input` as the actual char value // may have been generated from an escape sequence. var _char4 = String.fromCodePoint(this._cursor.peek()); this._cursor.advance(); return _char4; } } }, { key: "_decodeEntity", value: function _decodeEntity() { var start = this._cursor.clone(); this._cursor.advance(); if (this._attemptCharCode($HASH)) { var isHex = this._attemptCharCode($x) || this._attemptCharCode($X); var codeStart = this._cursor.clone(); this._attemptCharCodeUntilFn(isDigitEntityEnd); if (this._cursor.peek() != $SEMICOLON) { // Advance cursor to include the peeked character in the string provided to the error // message. this._cursor.advance(); var entityType = isHex ? CharacterReferenceType.HEX : CharacterReferenceType.DEC; throw this._createError(_unparsableEntityErrorMsg(entityType, this._cursor.getChars(start)), this._cursor.getSpan()); } var strNum = this._cursor.getChars(codeStart); this._cursor.advance(); try { var charCode = parseInt(strNum, isHex ? 16 : 10); return String.fromCharCode(charCode); } catch (_a) { throw this._createError(_unknownEntityErrorMsg(this._cursor.getChars(start)), this._cursor.getSpan()); } } else { var nameStart = this._cursor.clone(); this._attemptCharCodeUntilFn(isNamedEntityEnd); if (this._cursor.peek() != $SEMICOLON) { this._cursor = nameStart; return '&'; } var name = this._cursor.getChars(nameStart); this._cursor.advance(); var _char5 = NAMED_ENTITIES[name]; if (!_char5) { throw this._createError(_unknownEntityErrorMsg(name), this._cursor.getSpan(start)); } return _char5; } } }, { key: "_consumeRawText", value: function _consumeRawText(decodeEntities, endMarkerPredicate) { this._beginToken(decodeEntities ? TokenType.ESCAPABLE_RAW_TEXT : TokenType.RAW_TEXT); var parts = []; while (true) { var tagCloseStart = this._cursor.clone(); var foundEndMarker = endMarkerPredicate(); this._cursor = tagCloseStart; if (foundEndMarker) { break; } parts.push(this._readChar(decodeEntities)); } return this._endToken([this._processCarriageReturns(parts.join(''))]); } }, { key: "_consumeComment", value: function _consumeComment(start) { var _this134 = this; this._beginToken(TokenType.COMMENT_START, start); this._requireCharCode($MINUS); this._endToken([]); this._consumeRawText(false, function () { return _this134._attemptStr('-->'); }); this._beginToken(TokenType.COMMENT_END); this._requireStr('-->'); this._endToken([]); } }, { key: "_consumeCdata", value: function _consumeCdata(start) { var _this135 = this; this._beginToken(TokenType.CDATA_START, start); this._requireStr('CDATA['); this._endToken([]); this._consumeRawText(false, function () { return _this135._attemptStr(']]>'); }); this._beginToken(TokenType.CDATA_END); this._requireStr(']]>'); this._endToken([]); } }, { key: "_consumeDocType", value: function _consumeDocType(start) { this._beginToken(TokenType.DOC_TYPE, start); var contentStart = this._cursor.clone(); this._attemptUntilChar($GT); var content = this._cursor.getChars(contentStart); this._cursor.advance(); this._endToken([content]); } }, { key: "_consumePrefixAndName", value: function _consumePrefixAndName() { var nameOrPrefixStart = this._cursor.clone(); var prefix = ''; while (this._cursor.peek() !== $COLON && !isPrefixEnd(this._cursor.peek())) { this._cursor.advance(); } var nameStart; if (this._cursor.peek() === $COLON) { prefix = this._cursor.getChars(nameOrPrefixStart); this._cursor.advance(); nameStart = this._cursor.clone(); } else { nameStart = nameOrPrefixStart; } this._requireCharCodeUntilFn(isNameEnd, prefix === '' ? 0 : 1); var name = this._cursor.getChars(nameStart); return [prefix, name]; } }, { key: "_consumeTagOpen", value: function _consumeTagOpen(start) { var tagName; var prefix; var openTagToken; try { if (!isAsciiLetter(this._cursor.peek())) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); } openTagToken = this._consumeTagOpenStart(start); prefix = openTagToken.parts[0]; tagName = openTagToken.parts[1]; this._attemptCharCodeUntilFn(isNotWhitespace); while (this._cursor.peek() !== $SLASH && this._cursor.peek() !== $GT && this._cursor.peek() !== $LT) { this._consumeAttributeName(); this._attemptCharCodeUntilFn(isNotWhitespace); if (this._attemptCharCode($EQ)) { this._attemptCharCodeUntilFn(isNotWhitespace); this._consumeAttributeValue(); } this._attemptCharCodeUntilFn(isNotWhitespace); } this._consumeTagOpenEnd(); } catch (e) { if (e instanceof _ControlFlowError) { if (openTagToken) { // We errored before we could close the opening tag, so it is incomplete. openTagToken.type = TokenType.INCOMPLETE_TAG_OPEN; } else { // When the start tag is invalid, assume we want a "<" as text. // Back to back text tokens are merged at the end. this._beginToken(TokenType.TEXT, start); this._endToken(['<']); } return; } throw e; } var contentTokenType = this._getTagDefinition(tagName).getContentType(prefix); if (contentTokenType === TagContentType.RAW_TEXT) { this._consumeRawTextWithTagClose(prefix, tagName, false); } else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) { this._consumeRawTextWithTagClose(prefix, tagName, true); } } }, { key: "_consumeRawTextWithTagClose", value: function _consumeRawTextWithTagClose(prefix, tagName, decodeEntities) { var _this136 = this; this._consumeRawText(decodeEntities, function () { if (!_this136._attemptCharCode($LT)) return false; if (!_this136._attemptCharCode($SLASH)) return false; _this136._attemptCharCodeUntilFn(isNotWhitespace); if (!_this136._attemptStrCaseInsensitive(tagName)) return false; _this136._attemptCharCodeUntilFn(isNotWhitespace); return _this136._attemptCharCode($GT); }); this._beginToken(TokenType.TAG_CLOSE); this._requireCharCodeUntilFn(function (code) { return code === $GT; }, 3); this._cursor.advance(); // Consume the `>` this._endToken([prefix, tagName]); } }, { key: "_consumeTagOpenStart", value: function _consumeTagOpenStart(start) { this._beginToken(TokenType.TAG_OPEN_START, start); var parts = this._consumePrefixAndName(); return this._endToken(parts); } }, { key: "_consumeAttributeName", value: function _consumeAttributeName() { var attrNameStart = this._cursor.peek(); if (attrNameStart === $SQ || attrNameStart === $DQ) { throw this._createError(_unexpectedCharacterErrorMsg(attrNameStart), this._cursor.getSpan()); } this._beginToken(TokenType.ATTR_NAME); var prefixAndName = this._consumePrefixAndName(); this._endToken(prefixAndName); } }, { key: "_consumeAttributeValue", value: function _consumeAttributeValue() { var value; if (this._cursor.peek() === $SQ || this._cursor.peek() === $DQ) { this._beginToken(TokenType.ATTR_QUOTE); var quoteChar = this._cursor.peek(); this._cursor.advance(); this._endToken([String.fromCodePoint(quoteChar)]); this._beginToken(TokenType.ATTR_VALUE); var parts = []; while (this._cursor.peek() !== quoteChar) { parts.push(this._readChar(true)); } value = parts.join(''); this._endToken([this._processCarriageReturns(value)]); this._beginToken(TokenType.ATTR_QUOTE); this._cursor.advance(); this._endToken([String.fromCodePoint(quoteChar)]); } else { this._beginToken(TokenType.ATTR_VALUE); var valueStart = this._cursor.clone(); this._requireCharCodeUntilFn(isNameEnd, 1); value = this._cursor.getChars(valueStart); this._endToken([this._processCarriageReturns(value)]); } } }, { key: "_consumeTagOpenEnd", value: function _consumeTagOpenEnd() { var tokenType = this._attemptCharCode($SLASH) ? TokenType.TAG_OPEN_END_VOID : TokenType.TAG_OPEN_END; this._beginToken(tokenType); this._requireCharCode($GT); this._endToken([]); } }, { key: "_consumeTagClose", value: function _consumeTagClose(start) { this._beginToken(TokenType.TAG_CLOSE, start); this._attemptCharCodeUntilFn(isNotWhitespace); var prefixAndName = this._consumePrefixAndName(); this._attemptCharCodeUntilFn(isNotWhitespace); this._requireCharCode($GT); this._endToken(prefixAndName); } }, { key: "_consumeExpansionFormStart", value: function _consumeExpansionFormStart() { this._beginToken(TokenType.EXPANSION_FORM_START); this._requireCharCode($LBRACE); this._endToken([]); this._expansionCaseStack.push(TokenType.EXPANSION_FORM_START); this._beginToken(TokenType.RAW_TEXT); var condition = this._readUntil($COMMA); var normalizedCondition = this._processCarriageReturns(condition); if (this._i18nNormalizeLineEndingsInICUs) { // We explicitly want to normalize line endings for this text. this._endToken([normalizedCondition]); } else { // We are not normalizing line endings. var conditionToken = this._endToken([condition]); if (normalizedCondition !== condition) { this.nonNormalizedIcuExpressions.push(conditionToken); } } this._requireCharCode($COMMA); this._attemptCharCodeUntilFn(isNotWhitespace); this._beginToken(TokenType.RAW_TEXT); var type = this._readUntil($COMMA); this._endToken([type]); this._requireCharCode($COMMA); this._attemptCharCodeUntilFn(isNotWhitespace); } }, { key: "_consumeExpansionCaseStart", value: function _consumeExpansionCaseStart() { this._beginToken(TokenType.EXPANSION_CASE_VALUE); var value = this._readUntil($LBRACE).trim(); this._endToken([value]); this._attemptCharCodeUntilFn(isNotWhitespace); this._beginToken(TokenType.EXPANSION_CASE_EXP_START); this._requireCharCode($LBRACE); this._endToken([]); this._attemptCharCodeUntilFn(isNotWhitespace); this._expansionCaseStack.push(TokenType.EXPANSION_CASE_EXP_START); } }, { key: "_consumeExpansionCaseEnd", value: function _consumeExpansionCaseEnd() { this._beginToken(TokenType.EXPANSION_CASE_EXP_END); this._requireCharCode($RBRACE); this._endToken([]); this._attemptCharCodeUntilFn(isNotWhitespace); this._expansionCaseStack.pop(); } }, { key: "_consumeExpansionFormEnd", value: function _consumeExpansionFormEnd() { this._beginToken(TokenType.EXPANSION_FORM_END); this._requireCharCode($RBRACE); this._endToken([]); this._expansionCaseStack.pop(); } }, { key: "_consumeText", value: function _consumeText() { var start = this._cursor.clone(); this._beginToken(TokenType.TEXT, start); var parts = []; do { if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) { parts.push(this._interpolationConfig.start); this._inInterpolation = true; } else if (this._interpolationConfig && this._inInterpolation && this._attemptStr(this._interpolationConfig.end)) { parts.push(this._interpolationConfig.end); this._inInterpolation = false; } else { parts.push(this._readChar(true)); } } while (!this._isTextEnd()); this._endToken([this._processCarriageReturns(parts.join(''))]); } }, { key: "_isTextEnd", value: function _isTextEnd() { if (this._cursor.peek() === $LT || this._cursor.peek() === $EOF) { return true; } if (this._tokenizeIcu && !this._inInterpolation) { if (this.isExpansionFormStart()) { // start of an expansion form return true; } if (this._cursor.peek() === $RBRACE && this._isInExpansionCase()) { // end of and expansion case return true; } } return false; } }, { key: "_readUntil", value: function _readUntil(_char6) { var start = this._cursor.clone(); this._attemptUntilChar(_char6); return this._cursor.getChars(start); } }, { key: "_isInExpansionCase", value: function _isInExpansionCase() { return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === TokenType.EXPANSION_CASE_EXP_START; } }, { key: "_isInExpansionForm", value: function _isInExpansionForm() { return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === TokenType.EXPANSION_FORM_START; } }, { key: "isExpansionFormStart", value: function isExpansionFormStart() { if (this._cursor.peek() !== $LBRACE) { return false; } if (this._interpolationConfig) { var _start3 = this._cursor.clone(); var isInterpolation = this._attemptStr(this._interpolationConfig.start); this._cursor = _start3; return !isInterpolation; } return true; } }]); return _Tokenizer; }(); function isNotWhitespace(code) { return !isWhitespace(code) || code === $EOF; } function isNameEnd(code) { return isWhitespace(code) || code === $GT || code === $LT || code === $SLASH || code === $SQ || code === $DQ || code === $EQ; } function isPrefixEnd(code) { return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9); } function isDigitEntityEnd(code) { return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code); } function isNamedEntityEnd(code) { return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code); } function isExpansionCaseStart(peek) { return peek !== $RBRACE; } function compareCharCodeCaseInsensitive(code1, code2) { return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2); } function toUpperCaseCharCode(code) { return code >= $a && code <= $z ? code - $a + $A : code; } function mergeTextTokens(srcTokens) { var dstTokens = []; var lastDstToken = undefined; for (var i = 0; i < srcTokens.length; i++) { var token = srcTokens[i]; if (lastDstToken && lastDstToken.type == TokenType.TEXT && token.type == TokenType.TEXT) { lastDstToken.parts[0] += token.parts[0]; lastDstToken.sourceSpan.end = token.sourceSpan.end; } else { lastDstToken = token; dstTokens.push(lastDstToken); } } return dstTokens; } var PlainCharacterCursor = /*#__PURE__*/function () { function PlainCharacterCursor(fileOrCursor, range) { _classCallCheck(this, PlainCharacterCursor); if (fileOrCursor instanceof PlainCharacterCursor) { this.file = fileOrCursor.file; this.input = fileOrCursor.input; this.end = fileOrCursor.end; var state = fileOrCursor.state; // Note: avoid using `{...fileOrCursor.state}` here as that has a severe performance penalty. // In ES5 bundles the object spread operator is translated into the `__assign` helper, which // is not optimized by VMs as efficiently as a raw object literal. Since this constructor is // called in tight loops, this difference matters. this.state = { peek: state.peek, offset: state.offset, line: state.line, column: state.column }; } else { if (!range) { throw new Error('Programming error: the range argument must be provided with a file argument.'); } this.file = fileOrCursor; this.input = fileOrCursor.content; this.end = range.endPos; this.state = { peek: -1, offset: range.startPos, line: range.startLine, column: range.startCol }; } } _createClass2(PlainCharacterCursor, [{ key: "clone", value: function clone() { return new PlainCharacterCursor(this); } }, { key: "peek", value: function peek() { return this.state.peek; } }, { key: "charsLeft", value: function charsLeft() { return this.end - this.state.offset; } }, { key: "diff", value: function diff(other) { return this.state.offset - other.state.offset; } }, { key: "advance", value: function advance() { this.advanceState(this.state); } }, { key: "init", value: function init() { this.updatePeek(this.state); } }, { key: "getSpan", value: function getSpan(start, leadingTriviaCodePoints) { start = start || this; var fullStart = start; if (leadingTriviaCodePoints) { while (this.diff(start) > 0 && leadingTriviaCodePoints.indexOf(start.peek()) !== -1) { if (fullStart === start) { start = start.clone(); } start.advance(); } } var startLocation = this.locationFromCursor(start); var endLocation = this.locationFromCursor(this); var fullStartLocation = fullStart !== start ? this.locationFromCursor(fullStart) : startLocation; return new ParseSourceSpan(startLocation, endLocation, fullStartLocation); } }, { key: "getChars", value: function getChars(start) { return this.input.substring(start.state.offset, this.state.offset); } }, { key: "charAt", value: function charAt(pos) { return this.input.charCodeAt(pos); } }, { key: "advanceState", value: function advanceState(state) { if (state.offset >= this.end) { this.state = state; throw new CursorError('Unexpected character "EOF"', this); } var currentChar = this.charAt(state.offset); if (currentChar === $LF) { state.line++; state.column = 0; } else if (!isNewLine(currentChar)) { state.column++; } state.offset++; this.updatePeek(state); } }, { key: "updatePeek", value: function updatePeek(state) { state.peek = state.offset >= this.end ? $EOF : this.charAt(state.offset); } }, { key: "locationFromCursor", value: function locationFromCursor(cursor) { return new ParseLocation(cursor.file, cursor.state.offset, cursor.state.line, cursor.state.column); } }]); return PlainCharacterCursor; }(); var EscapedCharacterCursor = /*#__PURE__*/function (_PlainCharacterCursor) { _inherits(EscapedCharacterCursor, _PlainCharacterCursor); var _super92 = _createSuper(EscapedCharacterCursor); function EscapedCharacterCursor(fileOrCursor, range) { var _this137; _classCallCheck(this, EscapedCharacterCursor); if (fileOrCursor instanceof EscapedCharacterCursor) { _this137 = _super92.call(this, fileOrCursor); _this137.internalState = Object.assign({}, fileOrCursor.internalState); } else { _this137 = _super92.call(this, fileOrCursor, range); _this137.internalState = _this137.state; } return _possibleConstructorReturn(_this137); } _createClass2(EscapedCharacterCursor, [{ key: "advance", value: function advance() { this.state = this.internalState; _get(_getPrototypeOf(EscapedCharacterCursor.prototype), "advance", this).call(this); this.processEscapeSequence(); } }, { key: "init", value: function init() { _get(_getPrototypeOf(EscapedCharacterCursor.prototype), "init", this).call(this); this.processEscapeSequence(); } }, { key: "clone", value: function clone() { return new EscapedCharacterCursor(this); } }, { key: "getChars", value: function getChars(start) { var cursor = start.clone(); var chars = ''; while (cursor.internalState.offset < this.internalState.offset) { chars += String.fromCodePoint(cursor.peek()); cursor.advance(); } return chars; } /** * Process the escape sequence that starts at the current position in the text. * * This method is called to ensure that `peek` has the unescaped value of escape sequences. */ }, { key: "processEscapeSequence", value: function processEscapeSequence() { var _this138 = this; var peek = function peek() { return _this138.internalState.peek; }; if (peek() === $BACKSLASH) { // We have hit an escape sequence so we need the internal state to become independent // of the external state. this.internalState = Object.assign({}, this.state); // Move past the backslash this.advanceState(this.internalState); // First check for standard control char sequences if (peek() === $n) { this.state.peek = $LF; } else if (peek() === $r) { this.state.peek = $CR; } else if (peek() === $v) { this.state.peek = $VTAB; } else if (peek() === $t) { this.state.peek = $TAB; } else if (peek() === $b) { this.state.peek = $BSPACE; } else if (peek() === $f) { this.state.peek = $FF; } // Now consider more complex sequences else if (peek() === $u) { // Unicode code-point sequence this.advanceState(this.internalState); // advance past the `u` char if (peek() === $LBRACE) { // Variable length Unicode, e.g. `\x{123}` this.advanceState(this.internalState); // advance past the `{` char // Advance past the variable number of hex digits until we hit a `}` char var digitStart = this.clone(); var length = 0; while (peek() !== $RBRACE) { this.advanceState(this.internalState); length++; } this.state.peek = this.decodeHexDigits(digitStart, length); } else { // Fixed length Unicode, e.g. `\u1234` var _digitStart = this.clone(); this.advanceState(this.internalState); this.advanceState(this.internalState); this.advanceState(this.internalState); this.state.peek = this.decodeHexDigits(_digitStart, 4); } } else if (peek() === $x) { // Hex char code, e.g. `\x2F` this.advanceState(this.internalState); // advance past the `x` char var _digitStart2 = this.clone(); this.advanceState(this.internalState); this.state.peek = this.decodeHexDigits(_digitStart2, 2); } else if (isOctalDigit(peek())) { // Octal char code, e.g. `\012`, var octal = ''; var _length = 0; var previous = this.clone(); while (isOctalDigit(peek()) && _length < 3) { previous = this.clone(); octal += String.fromCodePoint(peek()); this.advanceState(this.internalState); _length++; } this.state.peek = parseInt(octal, 8); // Backup one char this.internalState = previous.internalState; } else if (isNewLine(this.internalState.peek)) { // Line continuation `\` followed by a new line this.advanceState(this.internalState); // advance over the newline this.state = this.internalState; } else { // If none of the `if` blocks were executed then we just have an escaped normal character. // In that case we just, effectively, skip the backslash from the character. this.state.peek = this.internalState.peek; } } } }, { key: "decodeHexDigits", value: function decodeHexDigits(start, length) { var hex = this.input.substr(start.internalState.offset, length); var charCode = parseInt(hex, 16); if (!isNaN(charCode)) { return charCode; } else { start.state = start.internalState; throw new CursorError('Invalid hexadecimal escape sequence', start); } } }]); return EscapedCharacterCursor; }(PlainCharacterCursor); var CursorError = /*#__PURE__*/_createClass2(function CursorError(msg, cursor) { _classCallCheck(this, CursorError); this.msg = msg; this.cursor = cursor; }); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var TreeError = /*#__PURE__*/function (_ParseError2) { _inherits(TreeError, _ParseError2); var _super93 = _createSuper(TreeError); function TreeError(elementName, span, msg) { var _this139; _classCallCheck(this, TreeError); _this139 = _super93.call(this, span, msg); _this139.elementName = elementName; return _this139; } _createClass2(TreeError, null, [{ key: "create", value: function create(elementName, span, msg) { return new TreeError(elementName, span, msg); } }]); return TreeError; }(ParseError); var ParseTreeResult = /*#__PURE__*/_createClass2(function ParseTreeResult(rootNodes, errors) { _classCallCheck(this, ParseTreeResult); this.rootNodes = rootNodes; this.errors = errors; }); var Parser = /*#__PURE__*/function () { function Parser(getTagDefinition) { _classCallCheck(this, Parser); this.getTagDefinition = getTagDefinition; } _createClass2(Parser, [{ key: "parse", value: function parse(source, url, options) { var tokenizeResult = tokenize(source, url, this.getTagDefinition, options); var parser = new _TreeBuilder(tokenizeResult.tokens, this.getTagDefinition); parser.build(); return new ParseTreeResult(parser.rootNodes, tokenizeResult.errors.concat(parser.errors)); } }]); return Parser; }(); var _TreeBuilder = /*#__PURE__*/function () { function _TreeBuilder(tokens, getTagDefinition) { _classCallCheck(this, _TreeBuilder); this.tokens = tokens; this.getTagDefinition = getTagDefinition; this._index = -1; this._elementStack = []; this.rootNodes = []; this.errors = []; this._advance(); } _createClass2(_TreeBuilder, [{ key: "build", value: function build() { while (this._peek.type !== TokenType.EOF) { if (this._peek.type === TokenType.TAG_OPEN_START || this._peek.type === TokenType.INCOMPLETE_TAG_OPEN) { this._consumeStartTag(this._advance()); } else if (this._peek.type === TokenType.TAG_CLOSE) { this._consumeEndTag(this._advance()); } else if (this._peek.type === TokenType.CDATA_START) { this._closeVoidElement(); this._consumeCdata(this._advance()); } else if (this._peek.type === TokenType.COMMENT_START) { this._closeVoidElement(); this._consumeComment(this._advance()); } else if (this._peek.type === TokenType.TEXT || this._peek.type === TokenType.RAW_TEXT || this._peek.type === TokenType.ESCAPABLE_RAW_TEXT) { this._closeVoidElement(); this._consumeText(this._advance()); } else if (this._peek.type === TokenType.EXPANSION_FORM_START) { this._consumeExpansion(this._advance()); } else { // Skip all other tokens... this._advance(); } } } }, { key: "_advance", value: function _advance() { var prev = this._peek; if (this._index < this.tokens.length - 1) { // Note: there is always an EOF token at the end this._index++; } this._peek = this.tokens[this._index]; return prev; } }, { key: "_advanceIf", value: function _advanceIf(type) { if (this._peek.type === type) { return this._advance(); } return null; } }, { key: "_consumeCdata", value: function _consumeCdata(_startToken) { this._consumeText(this._advance()); this._advanceIf(TokenType.CDATA_END); } }, { key: "_consumeComment", value: function _consumeComment(token) { var text = this._advanceIf(TokenType.RAW_TEXT); this._advanceIf(TokenType.COMMENT_END); var value = text != null ? text.parts[0].trim() : null; this._addToParent(new Comment(value, token.sourceSpan)); } }, { key: "_consumeExpansion", value: function _consumeExpansion(token) { var switchValue = this._advance(); var type = this._advance(); var cases = []; // read = while (this._peek.type === TokenType.EXPANSION_CASE_VALUE) { var expCase = this._parseExpansionCase(); if (!expCase) return; // error cases.push(expCase); } // read the final } if (this._peek.type !== TokenType.EXPANSION_FORM_END) { this.errors.push(TreeError.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '}'.")); return; } var sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end, token.sourceSpan.fullStart); this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan)); this._advance(); } }, { key: "_parseExpansionCase", value: function _parseExpansionCase() { var value = this._advance(); // read { if (this._peek.type !== TokenType.EXPANSION_CASE_EXP_START) { this.errors.push(TreeError.create(null, this._peek.sourceSpan, "Invalid ICU message. Missing '{'.")); return null; } // read until } var start = this._advance(); var exp = this._collectExpansionExpTokens(start); if (!exp) return null; var end = this._advance(); exp.push(new Token(TokenType.EOF, [], end.sourceSpan)); // parse everything in between { and } var expansionCaseParser = new _TreeBuilder(exp, this.getTagDefinition); expansionCaseParser.build(); if (expansionCaseParser.errors.length > 0) { this.errors = this.errors.concat(expansionCaseParser.errors); return null; } var sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end, value.sourceSpan.fullStart); var expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end, start.sourceSpan.fullStart); return new ExpansionCase(value.parts[0], expansionCaseParser.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan); } }, { key: "_collectExpansionExpTokens", value: function _collectExpansionExpTokens(start) { var exp = []; var expansionFormStack = [TokenType.EXPANSION_CASE_EXP_START]; while (true) { if (this._peek.type === TokenType.EXPANSION_FORM_START || this._peek.type === TokenType.EXPANSION_CASE_EXP_START) { expansionFormStack.push(this._peek.type); } if (this._peek.type === TokenType.EXPANSION_CASE_EXP_END) { if (lastOnStack(expansionFormStack, TokenType.EXPANSION_CASE_EXP_START)) { expansionFormStack.pop(); if (expansionFormStack.length == 0) return exp; } else { this.errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); return null; } } if (this._peek.type === TokenType.EXPANSION_FORM_END) { if (lastOnStack(expansionFormStack, TokenType.EXPANSION_FORM_START)) { expansionFormStack.pop(); } else { this.errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); return null; } } if (this._peek.type === TokenType.EOF) { this.errors.push(TreeError.create(null, start.sourceSpan, "Invalid ICU message. Missing '}'.")); return null; } exp.push(this._advance()); } } }, { key: "_consumeText", value: function _consumeText(token) { var text = token.parts[0]; if (text.length > 0 && text[0] == '\n') { var parent = this._getParentElement(); if (parent != null && parent.children.length == 0 && this.getTagDefinition(parent.name).ignoreFirstLf) { text = text.substring(1); } } if (text.length > 0) { this._addToParent(new Text$3(text, token.sourceSpan)); } } }, { key: "_closeVoidElement", value: function _closeVoidElement() { var el = this._getParentElement(); if (el && this.getTagDefinition(el.name).isVoid) { this._elementStack.pop(); } } }, { key: "_consumeStartTag", value: function _consumeStartTag(startTagToken) { var _startTagToken$parts = _slicedToArray(startTagToken.parts, 2), prefix = _startTagToken$parts[0], name = _startTagToken$parts[1]; var attrs = []; while (this._peek.type === TokenType.ATTR_NAME) { attrs.push(this._consumeAttr(this._advance())); } var fullName = this._getElementFullName(prefix, name, this._getParentElement()); var selfClosing = false; // Note: There could have been a tokenizer error // so that we don't get a token for the end tag... if (this._peek.type === TokenType.TAG_OPEN_END_VOID) { this._advance(); selfClosing = true; var tagDef = this.getTagDefinition(fullName); if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) { this.errors.push(TreeError.create(fullName, startTagToken.sourceSpan, "Only void and foreign elements can be self closed \"".concat(startTagToken.parts[1], "\""))); } } else if (this._peek.type === TokenType.TAG_OPEN_END) { this._advance(); selfClosing = false; } var end = this._peek.sourceSpan.start; var span = new ParseSourceSpan(startTagToken.sourceSpan.start, end, startTagToken.sourceSpan.fullStart); // Create a separate `startSpan` because `span` will be modified when there is an `end` span. var startSpan = new ParseSourceSpan(startTagToken.sourceSpan.start, end, startTagToken.sourceSpan.fullStart); var el = new Element$1(fullName, attrs, [], span, startSpan, undefined); this._pushElement(el); if (selfClosing) { // Elements that are self-closed have their `endSourceSpan` set to the full span, as the // element start tag also represents the end tag. this._popElement(fullName, span); } else if (startTagToken.type === TokenType.INCOMPLETE_TAG_OPEN) { // We already know the opening tag is not complete, so it is unlikely it has a corresponding // close tag. Let's optimistically parse it as a full element and emit an error. this._popElement(fullName, null); this.errors.push(TreeError.create(fullName, span, "Opening tag \"".concat(fullName, "\" not terminated."))); } } }, { key: "_pushElement", value: function _pushElement(el) { var parentEl = this._getParentElement(); if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) { this._elementStack.pop(); } this._addToParent(el); this._elementStack.push(el); } }, { key: "_consumeEndTag", value: function _consumeEndTag(endTagToken) { var fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); if (this.getTagDefinition(fullName).isVoid) { this.errors.push(TreeError.create(fullName, endTagToken.sourceSpan, "Void elements do not have end tags \"".concat(endTagToken.parts[1], "\""))); } else if (!this._popElement(fullName, endTagToken.sourceSpan)) { var errMsg = "Unexpected closing tag \"".concat(fullName, "\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags"); this.errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg)); } } /** * Closes the nearest element with the tag name `fullName` in the parse tree. * `endSourceSpan` is the span of the closing tag, or null if the element does * not have a closing tag (for example, this happens when an incomplete * opening tag is recovered). */ }, { key: "_popElement", value: function _popElement(fullName, endSourceSpan) { for (var stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { var el = this._elementStack[stackIndex]; if (el.name == fullName) { // Record the parse span with the element that is being closed. Any elements that are // removed from the element stack at this point are closed implicitly, so they won't get // an end source span (as there is no explicit closing element). el.endSourceSpan = endSourceSpan; el.sourceSpan.end = endSourceSpan !== null ? endSourceSpan.end : el.sourceSpan.end; this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); return true; } if (!this.getTagDefinition(el.name).closedByParent) { return false; } } return false; } }, { key: "_consumeAttr", value: function _consumeAttr(attrName) { var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]); var end = attrName.sourceSpan.end; var value = ''; var valueSpan = undefined; if (this._peek.type === TokenType.ATTR_QUOTE) { this._advance(); } if (this._peek.type === TokenType.ATTR_VALUE) { var valueToken = this._advance(); value = valueToken.parts[0]; end = valueToken.sourceSpan.end; valueSpan = valueToken.sourceSpan; } if (this._peek.type === TokenType.ATTR_QUOTE) { var quoteToken = this._advance(); end = quoteToken.sourceSpan.end; } return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end, attrName.sourceSpan.fullStart), valueSpan); } }, { key: "_getParentElement", value: function _getParentElement() { return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; } }, { key: "_addToParent", value: function _addToParent(node) { var parent = this._getParentElement(); if (parent != null) { parent.children.push(node); } else { this.rootNodes.push(node); } } }, { key: "_getElementFullName", value: function _getElementFullName(prefix, localName, parentElement) { if (prefix === '') { prefix = this.getTagDefinition(localName).implicitNamespacePrefix || ''; if (prefix === '' && parentElement != null) { var parentTagName = splitNsName(parentElement.name)[1]; var parentTagDefinition = this.getTagDefinition(parentTagName); if (!parentTagDefinition.preventNamespaceInheritance) { prefix = getNsPrefix(parentElement.name); } } } return mergeNsAndName(prefix, localName); } }]); return _TreeBuilder; }(); function lastOnStack(stack, element) { return stack.length > 0 && stack[stack.length - 1] === element; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var HtmlParser = /*#__PURE__*/function (_Parser) { _inherits(HtmlParser, _Parser); var _super94 = _createSuper(HtmlParser); function HtmlParser() { _classCallCheck(this, HtmlParser); return _super94.call(this, getHtmlTagDefinition); } _createClass2(HtmlParser, [{ key: "parse", value: function parse(source, url, options) { return _get(_getPrototypeOf(HtmlParser.prototype), "parse", this).call(this, source, url, options); } }]); return HtmlParser; }(Parser); /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; var SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']); // Equivalent to \s with \u00a0 (non-breaking space) excluded. // Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp var WS_CHARS = " \f\n\r\t\x0B\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF"; var NO_WS_REGEXP = new RegExp("[^".concat(WS_CHARS, "]")); var WS_REPLACE_REGEXP = new RegExp("[".concat(WS_CHARS, "]{2,}"), 'g'); function hasPreserveWhitespacesAttr(attrs) { return attrs.some(function (attr) { return attr.name === PRESERVE_WS_ATTR_NAME; }); } /** * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see: * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32 * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character * and later on replaced by a space. We are re-implementing the same idea here. */ function replaceNgsp(value) { // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' '); } /** * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules: * - consider spaces, tabs and new lines as whitespace characters; * - drop text nodes consisting of whitespace characters only; * - for all other text nodes replace consecutive whitespace characters with one space; * - convert &ngsp; pseudo-entity to a single space; * * Removal and trimming of whitespaces have positive performance impact (less code to generate * while compiling templates, faster view creation). At the same time it can be "destructive" * in some cases (whitespaces can influence layout). Because of the potential of breaking layout * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for * whitespace removal. The default option for whitespace removal will be revisited in Angular 6 * and might be changed to "on" by default. */ var WhitespaceVisitor = /*#__PURE__*/function () { function WhitespaceVisitor() { _classCallCheck(this, WhitespaceVisitor); } _createClass2(WhitespaceVisitor, [{ key: "visitElement", value: function visitElement(element, context) { if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) { // don't descent into elements where we need to preserve whitespaces // but still visit all attributes to eliminate one used as a market to preserve WS return new Element$1(element.name, visitAll$1(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); } return new Element$1(element.name, element.attrs, visitAllWithSiblings(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); } }, { key: "visitAttribute", value: function visitAttribute(attribute, context) { return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null; } }, { key: "visitText", value: function visitText(text, context) { var isNotBlank = text.value.match(NO_WS_REGEXP); var hasExpansionSibling = context && (context.prev instanceof Expansion || context.next instanceof Expansion); if (isNotBlank || hasExpansionSibling) { return new Text$3(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan, text.i18n); } return null; } }, { key: "visitComment", value: function visitComment(comment, context) { return comment; } }, { key: "visitExpansion", value: function visitExpansion(expansion, context) { return expansion; } }, { key: "visitExpansionCase", value: function visitExpansionCase(expansionCase, context) { return expansionCase; } }]); return WhitespaceVisitor; }(); function removeWhitespaces(htmlAstWithErrors) { return new ParseTreeResult(visitAll$1(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors); } function visitAllWithSiblings(visitor, nodes) { var result = []; nodes.forEach(function (ast, i) { var context = { prev: nodes[i - 1], next: nodes[i + 1] }; var astResult = ast.visit(visitor, context); if (astResult) { result.push(astResult); } }); return result; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // http://cldr.unicode.org/index/cldr-spec/plural-rules var PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other']; /** * Expands special forms into elements. * * For example, * * ``` * { messages.length, plural, * =0 {zero} * =1 {one} * other {more than one} * } * ``` * * will be expanded into * * ``` * * zero * one * more than one * * ``` */ function expandNodes(nodes) { var expander = new _Expander(); return new ExpansionResult(visitAll$1(expander, nodes), expander.isExpanded, expander.errors); } var ExpansionResult = /*#__PURE__*/_createClass2(function ExpansionResult(nodes, expanded, errors) { _classCallCheck(this, ExpansionResult); this.nodes = nodes; this.expanded = expanded; this.errors = errors; }); var ExpansionError = /*#__PURE__*/function (_ParseError3) { _inherits(ExpansionError, _ParseError3); var _super95 = _createSuper(ExpansionError); function ExpansionError(span, errorMsg) { _classCallCheck(this, ExpansionError); return _super95.call(this, span, errorMsg); } return _createClass2(ExpansionError); }(ParseError); /** * Expand expansion forms (plural, select) to directives * * @internal */ var _Expander = /*#__PURE__*/function () { function _Expander() { _classCallCheck(this, _Expander); this.isExpanded = false; this.errors = []; } _createClass2(_Expander, [{ key: "visitElement", value: function visitElement(element, context) { return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan); } }, { key: "visitAttribute", value: function visitAttribute(attribute, context) { return attribute; } }, { key: "visitText", value: function visitText(text, context) { return text; } }, { key: "visitComment", value: function visitComment(comment, context) { return comment; } }, { key: "visitExpansion", value: function visitExpansion(icu, context) { this.isExpanded = true; return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) : _expandDefaultForm(icu, this.errors); } }, { key: "visitExpansionCase", value: function visitExpansionCase(icuCase, context) { throw new Error('Should not be reached'); } }]); return _Expander; }(); // Plural forms are expanded to `NgPlural` and `NgPluralCase`s function _expandPluralForm(ast, errors) { var children = ast.cases.map(function (c) { if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\d+$/)) { errors.push(new ExpansionError(c.valueSourceSpan, "Plural cases should be \"=\" or one of ".concat(PLURAL_CASES.join(', ')))); } var expansionResult = expandNodes(c.expression); errors.push.apply(errors, _toConsumableArray(expansionResult.errors)); return new Element$1("ng-template", [new Attribute('ngPluralCase', "".concat(c.value), c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); }); var switchAttr = new Attribute('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan); return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); } // ICU messages (excluding plural form) are expanded to `NgSwitch` and `NgSwitchCase`s function _expandDefaultForm(ast, errors) { var children = ast.cases.map(function (c) { var expansionResult = expandNodes(c.expression); errors.push.apply(errors, _toConsumableArray(expansionResult.errors)); if (c.value === 'other') { // other is the default case when no values match return new Element$1("ng-template", [new Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); } return new Element$1("ng-template", [new Attribute('ngSwitchCase', "".concat(c.value), c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); }); var switchAttr = new Attribute('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan); return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A segment of text within the template. */ var TextAst = /*#__PURE__*/function () { function TextAst(value, ngContentIndex, sourceSpan) { _classCallCheck(this, TextAst); this.value = value; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } _createClass2(TextAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitText(this, context); } }]); return TextAst; }(); /** * A bound expression within the text of a template. */ var BoundTextAst = /*#__PURE__*/function () { function BoundTextAst(value, ngContentIndex, sourceSpan) { _classCallCheck(this, BoundTextAst); this.value = value; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } _createClass2(BoundTextAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitBoundText(this, context); } }]); return BoundTextAst; }(); /** * A plain attribute on an element. */ var AttrAst = /*#__PURE__*/function () { function AttrAst(name, value, sourceSpan) { _classCallCheck(this, AttrAst); this.name = name; this.value = value; this.sourceSpan = sourceSpan; } _createClass2(AttrAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitAttr(this, context); } }]); return AttrAst; }(); var BoundPropertyMapping = (_BoundPropertyMapping = {}, _defineProperty(_BoundPropertyMapping, 4 /* Animation */ , 4), _defineProperty(_BoundPropertyMapping, 1 /* Attribute */ , 1), _defineProperty(_BoundPropertyMapping, 2 /* Class */ , 2), _defineProperty(_BoundPropertyMapping, 0 /* Property */ , 0), _defineProperty(_BoundPropertyMapping, 3 /* Style */ , 3), _BoundPropertyMapping); /** * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g. * `[@trigger]="stateExp"`) */ var BoundElementPropertyAst = /*#__PURE__*/function () { function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) { _classCallCheck(this, BoundElementPropertyAst); this.name = name; this.type = type; this.securityContext = securityContext; this.value = value; this.unit = unit; this.sourceSpan = sourceSpan; this.isAnimation = this.type === 4 /* Animation */ ; } _createClass2(BoundElementPropertyAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitElementProperty(this, context); } }], [{ key: "fromBoundProperty", value: function fromBoundProperty(prop) { var type = BoundPropertyMapping[prop.type]; return new BoundElementPropertyAst(prop.name, type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan); } }]); return BoundElementPropertyAst; }(); /** * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g. * `(@trigger.phase)="callback($event)"`). */ var BoundEventAst = /*#__PURE__*/function () { function BoundEventAst(name, target, phase, handler, sourceSpan, handlerSpan) { _classCallCheck(this, BoundEventAst); this.name = name; this.target = target; this.phase = phase; this.handler = handler; this.sourceSpan = sourceSpan; this.handlerSpan = handlerSpan; this.fullName = BoundEventAst.calcFullName(this.name, this.target, this.phase); this.isAnimation = !!this.phase; } _createClass2(BoundEventAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitEvent(this, context); } }], [{ key: "calcFullName", value: function calcFullName(name, target, phase) { if (target) { return "".concat(target, ":").concat(name); } if (phase) { return "@".concat(name, ".").concat(phase); } return name; } }, { key: "fromParsedEvent", value: function fromParsedEvent(event) { var target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; var phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; return new BoundEventAst(event.name, target, phase, event.handler, event.sourceSpan, event.handlerSpan); } }]); return BoundEventAst; }(); /** * A reference declaration on an element (e.g. `let someName="expression"`). */ var ReferenceAst = /*#__PURE__*/function () { function ReferenceAst(name, value, originalValue, sourceSpan) { _classCallCheck(this, ReferenceAst); this.name = name; this.value = value; this.originalValue = originalValue; this.sourceSpan = sourceSpan; } _createClass2(ReferenceAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitReference(this, context); } }]); return ReferenceAst; }(); /** * A variable declaration on a (e.g. `var-someName="someLocalName"`). */ var VariableAst = /*#__PURE__*/function () { function VariableAst(name, value, sourceSpan, valueSpan) { _classCallCheck(this, VariableAst); this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.valueSpan = valueSpan; } _createClass2(VariableAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitVariable(this, context); } }], [{ key: "fromParsedVariable", value: function fromParsedVariable(v) { return new VariableAst(v.name, v.value, v.sourceSpan, v.valueSpan); } }]); return VariableAst; }(); /** * An element declaration in a template. */ var ElementAst = /*#__PURE__*/function () { function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) { _classCallCheck(this, ElementAst); this.name = name; this.attrs = attrs; this.inputs = inputs; this.outputs = outputs; this.references = references; this.directives = directives; this.providers = providers; this.hasViewContainer = hasViewContainer; this.queryMatches = queryMatches; this.children = children; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; this.endSourceSpan = endSourceSpan; } _createClass2(ElementAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitElement(this, context); } }]); return ElementAst; }(); /** * A `` element included in an Angular template. */ var EmbeddedTemplateAst = /*#__PURE__*/function () { function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) { _classCallCheck(this, EmbeddedTemplateAst); this.attrs = attrs; this.outputs = outputs; this.references = references; this.variables = variables; this.directives = directives; this.providers = providers; this.hasViewContainer = hasViewContainer; this.queryMatches = queryMatches; this.children = children; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } _createClass2(EmbeddedTemplateAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitEmbeddedTemplate(this, context); } }]); return EmbeddedTemplateAst; }(); /** * A directive property with a bound value (e.g. `*ngIf="condition"). */ var BoundDirectivePropertyAst = /*#__PURE__*/function () { function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) { _classCallCheck(this, BoundDirectivePropertyAst); this.directiveName = directiveName; this.templateName = templateName; this.value = value; this.sourceSpan = sourceSpan; } _createClass2(BoundDirectivePropertyAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitDirectiveProperty(this, context); } }]); return BoundDirectivePropertyAst; }(); /** * A directive declared on an element. */ var DirectiveAst = /*#__PURE__*/function () { function DirectiveAst(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) { _classCallCheck(this, DirectiveAst); this.directive = directive; this.inputs = inputs; this.hostProperties = hostProperties; this.hostEvents = hostEvents; this.contentQueryStartId = contentQueryStartId; this.sourceSpan = sourceSpan; } _createClass2(DirectiveAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitDirective(this, context); } }]); return DirectiveAst; }(); /** * A provider declared on an element */ var ProviderAst = /*#__PURE__*/function () { function ProviderAst(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan, isModule) { _classCallCheck(this, ProviderAst); this.token = token; this.multiProvider = multiProvider; this.eager = eager; this.providers = providers; this.providerType = providerType; this.lifecycleHooks = lifecycleHooks; this.sourceSpan = sourceSpan; this.isModule = isModule; } _createClass2(ProviderAst, [{ key: "visit", value: function visit(visitor, context) { // No visit method in the visitor for now... return null; } }]); return ProviderAst; }(); var ProviderAstType; (function (ProviderAstType) { ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService"; ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService"; ProviderAstType[ProviderAstType["Component"] = 2] = "Component"; ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive"; ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin"; })(ProviderAstType || (ProviderAstType = {})); /** * Position where content is to be projected (instance of `` in a template). */ var NgContentAst = /*#__PURE__*/function () { function NgContentAst(index, ngContentIndex, sourceSpan) { _classCallCheck(this, NgContentAst); this.index = index; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } _createClass2(NgContentAst, [{ key: "visit", value: function visit(visitor, context) { return visitor.visitNgContent(this, context); } }]); return NgContentAst; }(); /** * A visitor that accepts each node but doesn't do anything. It is intended to be used * as the base class for a visitor that is only interested in a subset of the node types. */ var NullTemplateVisitor = /*#__PURE__*/function () { function NullTemplateVisitor() { _classCallCheck(this, NullTemplateVisitor); } _createClass2(NullTemplateVisitor, [{ key: "visitNgContent", value: function visitNgContent(ast, context) {} }, { key: "visitEmbeddedTemplate", value: function visitEmbeddedTemplate(ast, context) {} }, { key: "visitElement", value: function visitElement(ast, context) {} }, { key: "visitReference", value: function visitReference(ast, context) {} }, { key: "visitVariable", value: function visitVariable(ast, context) {} }, { key: "visitEvent", value: function visitEvent(ast, context) {} }, { key: "visitElementProperty", value: function visitElementProperty(ast, context) {} }, { key: "visitAttr", value: function visitAttr(ast, context) {} }, { key: "visitBoundText", value: function visitBoundText(ast, context) {} }, { key: "visitText", value: function visitText(ast, context) {} }, { key: "visitDirective", value: function visitDirective(ast, context) {} }, { key: "visitDirectiveProperty", value: function visitDirectiveProperty(ast, context) {} }]); return NullTemplateVisitor; }(); /** * Base class that can be used to build a visitor that visits each node * in an template ast recursively. */ var RecursiveTemplateAstVisitor = /*#__PURE__*/function (_NullTemplateVisitor) { _inherits(RecursiveTemplateAstVisitor, _NullTemplateVisitor); var _super96 = _createSuper(RecursiveTemplateAstVisitor); function RecursiveTemplateAstVisitor() { _classCallCheck(this, RecursiveTemplateAstVisitor); return _super96.call(this); } // Nodes with children _createClass2(RecursiveTemplateAstVisitor, [{ key: "visitEmbeddedTemplate", value: function visitEmbeddedTemplate(ast, context) { return this.visitChildren(context, function (visit) { visit(ast.attrs); visit(ast.references); visit(ast.variables); visit(ast.directives); visit(ast.providers); visit(ast.children); }); } }, { key: "visitElement", value: function visitElement(ast, context) { return this.visitChildren(context, function (visit) { visit(ast.attrs); visit(ast.inputs); visit(ast.outputs); visit(ast.references); visit(ast.directives); visit(ast.providers); visit(ast.children); }); } }, { key: "visitDirective", value: function visitDirective(ast, context) { return this.visitChildren(context, function (visit) { visit(ast.inputs); visit(ast.hostProperties); visit(ast.hostEvents); }); } }, { key: "visitChildren", value: function visitChildren(context, cb) { var results = []; var t = this; function visit(children) { if (children && children.length) results.push(templateVisitAll(t, children, context)); } cb(visit); return Array.prototype.concat.apply([], results); } }]); return RecursiveTemplateAstVisitor; }(NullTemplateVisitor); /** * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}. */ function templateVisitAll(visitor, asts) { var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var result = []; var visit = visitor.visit ? function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } : function (ast) { return ast.visit(visitor, context); }; asts.forEach(function (ast) { var astResult = visit(ast); if (astResult) { result.push(astResult); } }); return result; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var ProviderError = /*#__PURE__*/function (_ParseError4) { _inherits(ProviderError, _ParseError4); var _super97 = _createSuper(ProviderError); function ProviderError(message, span) { _classCallCheck(this, ProviderError); return _super97.call(this, span, message); } return _createClass2(ProviderError); }(ParseError); var ProviderViewContext = /*#__PURE__*/_createClass2(function ProviderViewContext(reflector, component) { var _this140 = this; _classCallCheck(this, ProviderViewContext); this.reflector = reflector; this.component = component; this.errors = []; this.viewQueries = _getViewQueries(component); this.viewProviders = new Map(); component.viewProviders.forEach(function (provider) { if (_this140.viewProviders.get(tokenReference(provider.token)) == null) { _this140.viewProviders.set(tokenReference(provider.token), true); } }); }); var ProviderElementContext = /*#__PURE__*/function () { function ProviderElementContext(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) { var _this141 = this; _classCallCheck(this, ProviderElementContext); this.viewContext = viewContext; this._parent = _parent; this._isViewRoot = _isViewRoot; this._directiveAsts = _directiveAsts; this._sourceSpan = _sourceSpan; this._transformedProviders = new Map(); this._seenProviders = new Map(); this._queriedTokens = new Map(); this.transformedHasViewContainer = false; this._attrs = {}; attrs.forEach(function (attrAst) { return _this141._attrs[attrAst.name] = attrAst.value; }); var directivesMeta = _directiveAsts.map(function (directiveAst) { return directiveAst.directive; }); this._allProviders = _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors); this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta); Array.from(this._allProviders.values()).forEach(function (provider) { _this141._addQueryReadsTo(provider.token, provider.token, _this141._queriedTokens); }); if (isTemplate) { var templateRefId = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef); this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens); } refs.forEach(function (refAst) { var defaultQueryValue = refAst.value || createTokenForExternalReference(_this141.viewContext.reflector, Identifiers.ElementRef); _this141._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, _this141._queriedTokens); }); if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef))) { this.transformedHasViewContainer = true; } // create the providers that we know are eager first Array.from(this._allProviders.values()).forEach(function (provider) { var eager = provider.eager || _this141._queriedTokens.get(tokenReference(provider.token)); if (eager) { _this141._getOrCreateLocalProvider(provider.providerType, provider.token, true); } }); } _createClass2(ProviderElementContext, [{ key: "afterElement", value: function afterElement() { var _this142 = this; // collect lazy providers Array.from(this._allProviders.values()).forEach(function (provider) { _this142._getOrCreateLocalProvider(provider.providerType, provider.token, false); }); } }, { key: "transformProviders", get: function get() { // Note: Maps keep their insertion order. var lazyProviders = []; var eagerProviders = []; this._transformedProviders.forEach(function (provider) { if (provider.eager) { eagerProviders.push(provider); } else { lazyProviders.push(provider); } }); return lazyProviders.concat(eagerProviders); } }, { key: "transformedDirectiveAsts", get: function get() { var sortedProviderTypes = this.transformProviders.map(function (provider) { return provider.token.identifier; }); var sortedDirectives = this._directiveAsts.slice(); sortedDirectives.sort(function (dir1, dir2) { return sortedProviderTypes.indexOf(dir1.directive.type) - sortedProviderTypes.indexOf(dir2.directive.type); }); return sortedDirectives; } }, { key: "queryMatches", get: function get() { var allMatches = []; this._queriedTokens.forEach(function (matches) { allMatches.push.apply(allMatches, _toConsumableArray(matches)); }); return allMatches; } }, { key: "_addQueryReadsTo", value: function _addQueryReadsTo(token, defaultValue, queryReadTokens) { this._getQueriesFor(token).forEach(function (query) { var queryValue = query.meta.read || defaultValue; var tokenRef = tokenReference(queryValue); var queryMatches = queryReadTokens.get(tokenRef); if (!queryMatches) { queryMatches = []; queryReadTokens.set(tokenRef, queryMatches); } queryMatches.push({ queryId: query.queryId, value: queryValue }); }); } }, { key: "_getQueriesFor", value: function _getQueriesFor(token) { var result = []; var currentEl = this; var distance = 0; var queries; while (currentEl !== null) { queries = currentEl._contentQueries.get(tokenReference(token)); if (queries) { result.push.apply(result, _toConsumableArray(queries.filter(function (query) { return query.meta.descendants || distance <= 1; }))); } if (currentEl._directiveAsts.length > 0) { distance++; } currentEl = currentEl._parent; } queries = this.viewContext.viewQueries.get(tokenReference(token)); if (queries) { result.push.apply(result, _toConsumableArray(queries)); } return result; } }, { key: "_getOrCreateLocalProvider", value: function _getOrCreateLocalProvider(requestingProviderType, token, eager) { var _this143 = this; var resolvedProvider = this._allProviders.get(tokenReference(token)); if (!resolvedProvider || (requestingProviderType === ProviderAstType.Directive || requestingProviderType === ProviderAstType.PublicService) && resolvedProvider.providerType === ProviderAstType.PrivateService || (requestingProviderType === ProviderAstType.PrivateService || requestingProviderType === ProviderAstType.PublicService) && resolvedProvider.providerType === ProviderAstType.Builtin) { return null; } var transformedProviderAst = this._transformedProviders.get(tokenReference(token)); if (transformedProviderAst) { return transformedProviderAst; } if (this._seenProviders.get(tokenReference(token)) != null) { this.viewContext.errors.push(new ProviderError("Cannot instantiate cyclic dependency! ".concat(tokenName(token)), this._sourceSpan)); return null; } this._seenProviders.set(tokenReference(token), true); var transformedProviders = resolvedProvider.providers.map(function (provider) { var transformedUseValue = provider.useValue; var transformedUseExisting = provider.useExisting; var transformedDeps = undefined; if (provider.useExisting != null) { var existingDiDep = _this143._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager); if (existingDiDep.token != null) { transformedUseExisting = existingDiDep.token; } else { transformedUseExisting = null; transformedUseValue = existingDiDep.value; } } else if (provider.useFactory) { var deps = provider.deps || provider.useFactory.diDeps; transformedDeps = deps.map(function (dep) { return _this143._getDependency(resolvedProvider.providerType, dep, eager); }); } else if (provider.useClass) { var _deps = provider.deps || provider.useClass.diDeps; transformedDeps = _deps.map(function (dep) { return _this143._getDependency(resolvedProvider.providerType, dep, eager); }); } return _transformProvider(provider, { useExisting: transformedUseExisting, useValue: transformedUseValue, deps: transformedDeps }); }); transformedProviderAst = _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); this._transformedProviders.set(tokenReference(token), transformedProviderAst); return transformedProviderAst; } }, { key: "_getLocalDependency", value: function _getLocalDependency(requestingProviderType, dep) { var eager = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (dep.isAttribute) { var attrValue = this._attrs[dep.token.value]; return { isValue: true, value: attrValue == null ? null : attrValue }; } if (dep.token != null) { // access builtints if (requestingProviderType === ProviderAstType.Directive || requestingProviderType === ProviderAstType.Component) { if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) { return dep; } if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) { this.transformedHasViewContainer = true; } } // access the injector if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.Injector)) { return dep; } // access providers if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) { return dep; } } return null; } }, { key: "_getDependency", value: function _getDependency(requestingProviderType, dep) { var eager = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var currElement = this; var currEager = eager; var result = null; if (!dep.isSkipSelf) { result = this._getLocalDependency(requestingProviderType, dep, eager); } if (dep.isSelf) { if (!result && dep.isOptional) { result = { isValue: true, value: null }; } } else { // check parent elements while (!result && currElement._parent) { var prevElement = currElement; currElement = currElement._parent; if (prevElement._isViewRoot) { currEager = false; } result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager); } // check @Host restriction if (!result) { if (!dep.isHost || this.viewContext.component.isHost || this.viewContext.component.type.reference === tokenReference(dep.token) || this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) { result = dep; } else { result = dep.isOptional ? { isValue: true, value: null } : null; } } } if (!result) { this.viewContext.errors.push(new ProviderError("No provider for ".concat(tokenName(dep.token)), this._sourceSpan)); } return result; } }]); return ProviderElementContext; }(); var NgModuleProviderAnalyzer = /*#__PURE__*/function () { function NgModuleProviderAnalyzer(reflector, ngModule, extraProviders, sourceSpan) { var _this144 = this; _classCallCheck(this, NgModuleProviderAnalyzer); this.reflector = reflector; this._transformedProviders = new Map(); this._seenProviders = new Map(); this._errors = []; this._allProviders = new Map(); ngModule.transitiveModule.modules.forEach(function (ngModuleType) { var ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType }; _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, _this144._errors, _this144._allProviders, /* isModule */ true); }); _resolveProviders(ngModule.transitiveModule.providers.map(function (entry) { return entry.provider; }).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders, /* isModule */ false); } _createClass2(NgModuleProviderAnalyzer, [{ key: "parse", value: function parse() { var _this145 = this; Array.from(this._allProviders.values()).forEach(function (provider) { _this145._getOrCreateLocalProvider(provider.token, provider.eager); }); if (this._errors.length > 0) { var errorString = this._errors.join('\n'); throw new Error("Provider parse errors:\n".concat(errorString)); } // Note: Maps keep their insertion order. var lazyProviders = []; var eagerProviders = []; this._transformedProviders.forEach(function (provider) { if (provider.eager) { eagerProviders.push(provider); } else { lazyProviders.push(provider); } }); return lazyProviders.concat(eagerProviders); } }, { key: "_getOrCreateLocalProvider", value: function _getOrCreateLocalProvider(token, eager) { var _this146 = this; var resolvedProvider = this._allProviders.get(tokenReference(token)); if (!resolvedProvider) { return null; } var transformedProviderAst = this._transformedProviders.get(tokenReference(token)); if (transformedProviderAst) { return transformedProviderAst; } if (this._seenProviders.get(tokenReference(token)) != null) { this._errors.push(new ProviderError("Cannot instantiate cyclic dependency! ".concat(tokenName(token)), resolvedProvider.sourceSpan)); return null; } this._seenProviders.set(tokenReference(token), true); var transformedProviders = resolvedProvider.providers.map(function (provider) { var transformedUseValue = provider.useValue; var transformedUseExisting = provider.useExisting; var transformedDeps = undefined; if (provider.useExisting != null) { var existingDiDep = _this146._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan); if (existingDiDep.token != null) { transformedUseExisting = existingDiDep.token; } else { transformedUseExisting = null; transformedUseValue = existingDiDep.value; } } else if (provider.useFactory) { var deps = provider.deps || provider.useFactory.diDeps; transformedDeps = deps.map(function (dep) { return _this146._getDependency(dep, eager, resolvedProvider.sourceSpan); }); } else if (provider.useClass) { var _deps2 = provider.deps || provider.useClass.diDeps; transformedDeps = _deps2.map(function (dep) { return _this146._getDependency(dep, eager, resolvedProvider.sourceSpan); }); } return _transformProvider(provider, { useExisting: transformedUseExisting, useValue: transformedUseValue, deps: transformedDeps }); }); transformedProviderAst = _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); this._transformedProviders.set(tokenReference(token), transformedProviderAst); return transformedProviderAst; } }, { key: "_getDependency", value: function _getDependency(dep) { var eager = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var requestorSourceSpan = arguments.length > 2 ? arguments[2] : undefined; var foundLocal = false; if (!dep.isSkipSelf && dep.token != null) { // access the injector if (tokenReference(dep.token) === this.reflector.resolveExternalReference(Identifiers.Injector) || tokenReference(dep.token) === this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) { foundLocal = true; // access providers } else if (this._getOrCreateLocalProvider(dep.token, eager) != null) { foundLocal = true; } } return dep; } }]); return NgModuleProviderAnalyzer; }(); function _transformProvider(provider, _ref11) { var useExisting = _ref11.useExisting, useValue = _ref11.useValue, deps = _ref11.deps; return { token: provider.token, useClass: provider.useClass, useExisting: useExisting, useFactory: provider.useFactory, useValue: useValue, deps: deps, multi: provider.multi }; } function _transformProviderAst(provider, _ref12) { var eager = _ref12.eager, providers = _ref12.providers; return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan, provider.isModule); } function _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) { var providersByToken = new Map(); directives.forEach(function (directive) { var dirProvider = { token: { identifier: directive.type }, useClass: directive.type }; _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken, /* isModule */ false); }); // Note: directives need to be able to overwrite providers of a component! var directivesWithComponentFirst = directives.filter(function (dir) { return dir.isComponent; }).concat(directives.filter(function (dir) { return !dir.isComponent; })); directivesWithComponentFirst.forEach(function (directive) { _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); }); return providersByToken; } function _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken, isModule) { providers.forEach(function (provider) { var resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token)); if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) { targetErrors.push(new ProviderError("Mixing multi and non multi provider is not possible for token ".concat(tokenName(resolvedProvider.token)), sourceSpan)); } if (!resolvedProvider) { var lifecycleHooks = provider.token.identifier && provider.token.identifier.lifecycleHooks ? provider.token.identifier.lifecycleHooks : []; var isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory); resolvedProvider = new ProviderAst(provider.token, !!provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan, isModule); targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider); } else { if (!provider.multi) { resolvedProvider.providers.length = 0; } resolvedProvider.providers.push(provider); } }); } function _getViewQueries(component) { // Note: queries start with id 1 so we can use the number in a Bloom filter! var viewQueryId = 1; var viewQueries = new Map(); if (component.viewQueries) { component.viewQueries.forEach(function (query) { return _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ }); }); } return viewQueries; } function _getContentQueries(contentQueryStartId, directives) { var contentQueryId = contentQueryStartId; var contentQueries = new Map(); directives.forEach(function (directive, directiveIndex) { if (directive.queries) { directive.queries.forEach(function (query) { return _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ }); }); } }); return contentQueries; } function _addQueryToTokenMap(map, query) { query.meta.selectors.forEach(function (token) { var entry = map.get(tokenReference(token)); if (!entry) { entry = []; map.set(tokenReference(token), entry); } entry.push(query); }); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var StyleWithImports = /*#__PURE__*/_createClass2(function StyleWithImports(style, styleUrls) { _classCallCheck(this, StyleWithImports); this.style = style; this.styleUrls = styleUrls; }); function isStyleUrlResolvable(url) { if (url == null || url.length === 0 || url[0] == '/') return false; var schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP); return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset'; } /** * Rewrites stylesheets by resolving and removing the @import urls that * are either relative or don't have a `package:` scheme */ function extractStyleUrls(resolver, baseUrl, cssText) { var foundUrls = []; var modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '').replace(CSS_IMPORT_REGEXP, function () { var url = (arguments.length <= 1 ? undefined : arguments[1]) || (arguments.length <= 2 ? undefined : arguments[2]); if (!isStyleUrlResolvable(url)) { // Do not attempt to resolve non-package absolute URLs with URI // scheme return arguments.length <= 0 ? undefined : arguments[0]; } foundUrls.push(resolver.resolve(baseUrl, url)); return ''; }); return new StyleWithImports(modifiedCssText, foundUrls); } var CSS_IMPORT_REGEXP = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g; var CSS_STRIPPABLE_COMMENT_REGEXP = /\/\*(?!#\s*(?:sourceURL|sourceMappingURL)=)[\s\S]+?\*\//g; var URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var PROPERTY_PARTS_SEPARATOR = '.'; var ATTRIBUTE_PREFIX = 'attr'; var CLASS_PREFIX = 'class'; var STYLE_PREFIX = 'style'; var TEMPLATE_ATTR_PREFIX = '*'; var ANIMATE_PROP_PREFIX = 'animate-'; /** * Parses bindings in templates and in the directive host area. */ var BindingParser = /*#__PURE__*/function () { function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) { _classCallCheck(this, BindingParser); this._exprParser = _exprParser; this._interpolationConfig = _interpolationConfig; this._schemaRegistry = _schemaRegistry; this.errors = errors; this.pipesByName = null; this._usedPipes = new Map(); // When the `pipes` parameter is `null`, do not check for used pipes // This is used in IVY when we might not know the available pipes at compile time if (pipes) { var pipesByName = new Map(); pipes.forEach(function (pipe) { return pipesByName.set(pipe.name, pipe); }); this.pipesByName = pipesByName; } } _createClass2(BindingParser, [{ key: "interpolationConfig", get: function get() { return this._interpolationConfig; } }, { key: "getUsedPipes", value: function getUsedPipes() { return Array.from(this._usedPipes.values()); } }, { key: "createBoundHostProperties", value: function createBoundHostProperties(dirMeta, sourceSpan) { var _this147 = this; if (dirMeta.hostProperties) { var boundProps = []; Object.keys(dirMeta.hostProperties).forEach(function (propName) { var expression = dirMeta.hostProperties[propName]; if (typeof expression === 'string') { _this147.parsePropertyBinding(propName, expression, true, sourceSpan, sourceSpan.start.offset, undefined, [], // Use the `sourceSpan` for `keySpan`. This isn't really accurate, but neither is the // sourceSpan, as it represents the sourceSpan of the host itself rather than the // source of the host binding (which doesn't exist in the template). Regardless, // neither of these values are used in Ivy but are only here to satisfy the function // signature. This should likely be refactored in the future so that `sourceSpan` // isn't being used inaccurately. boundProps, sourceSpan); } else { _this147._reportError("Value of the host property binding \"".concat(propName, "\" needs to be a string representing an expression but got \"").concat(expression, "\" (").concat(typeof expression, ")"), sourceSpan); } }); return boundProps; } return null; } }, { key: "createDirectiveHostPropertyAsts", value: function createDirectiveHostPropertyAsts(dirMeta, elementSelector, sourceSpan) { var _this148 = this; var boundProps = this.createBoundHostProperties(dirMeta, sourceSpan); return boundProps && boundProps.map(function (prop) { return _this148.createBoundElementProperty(elementSelector, prop); }); } }, { key: "createDirectiveHostEventAsts", value: function createDirectiveHostEventAsts(dirMeta, sourceSpan) { var _this149 = this; if (dirMeta.hostListeners) { var targetEvents = []; Object.keys(dirMeta.hostListeners).forEach(function (propName) { var expression = dirMeta.hostListeners[propName]; if (typeof expression === 'string') { // TODO: pass a more accurate handlerSpan for this event. _this149.parseEvent(propName, expression, sourceSpan, sourceSpan, [], targetEvents); } else { _this149._reportError("Value of the host listener \"".concat(propName, "\" needs to be a string representing an expression but got \"").concat(expression, "\" (").concat(typeof expression, ")"), sourceSpan); } }); return targetEvents; } return null; } }, { key: "parseInterpolation", value: function parseInterpolation(value, sourceSpan) { var sourceInfo = sourceSpan.start.toString(); try { var ast = this._exprParser.parseInterpolation(value, sourceInfo, sourceSpan.start.offset, this._interpolationConfig); if (ast) this._reportExpressionParserErrors(ast.errors, sourceSpan); this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError("".concat(e), sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, sourceSpan.start.offset); } } /** * Similar to `parseInterpolation`, but treats the provided string as a single expression * element that would normally appear within the interpolation prefix and suffix (`{{` and `}}`). * This is used for parsing the switch expression in ICUs. */ }, { key: "parseInterpolationExpression", value: function parseInterpolationExpression(expression, sourceSpan) { var sourceInfo = sourceSpan.start.toString(); try { var ast = this._exprParser.parseInterpolationExpression(expression, sourceInfo, sourceSpan.start.offset); if (ast) this._reportExpressionParserErrors(ast.errors, sourceSpan); this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError("".concat(e), sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, sourceSpan.start.offset); } } /** * Parses the bindings in a microsyntax expression, and converts them to * `ParsedProperty` or `ParsedVariable`. * * @param tplKey template binding name * @param tplValue template binding value * @param sourceSpan span of template binding relative to entire the template * @param absoluteValueOffset start of the tplValue relative to the entire template * @param targetMatchableAttrs potential attributes to match in the template * @param targetProps target property bindings in the template * @param targetVars target variables in the template */ }, { key: "parseInlineTemplateBinding", value: function parseInlineTemplateBinding(tplKey, tplValue, sourceSpan, absoluteValueOffset, targetMatchableAttrs, targetProps, targetVars, isIvyAst) { var absoluteKeyOffset = sourceSpan.start.offset + TEMPLATE_ATTR_PREFIX.length; var bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset); var _iterator9 = _createForOfIteratorHelper(bindings), _step9; try { for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { var binding = _step9.value; // sourceSpan is for the entire HTML attribute. bindingSpan is for a particular // binding within the microsyntax expression so it's more narrow than sourceSpan. var bindingSpan = moveParseSourceSpan(sourceSpan, binding.sourceSpan); var key = binding.key.source; var keySpan = moveParseSourceSpan(sourceSpan, binding.key.span); if (binding instanceof VariableBinding) { var value = binding.value ? binding.value.source : '$implicit'; var valueSpan = binding.value ? moveParseSourceSpan(sourceSpan, binding.value.span) : undefined; targetVars.push(new ParsedVariable(key, value, bindingSpan, keySpan, valueSpan)); } else if (binding.value) { var srcSpan = isIvyAst ? bindingSpan : sourceSpan; var _valueSpan = moveParseSourceSpan(sourceSpan, binding.value.ast.sourceSpan); this._parsePropertyAst(key, binding.value, srcSpan, keySpan, _valueSpan, targetMatchableAttrs, targetProps); } else { targetMatchableAttrs.push([key, '' /* value */ ]); // Since this is a literal attribute with no RHS, source span should be // just the key span. this.parseLiteralAttr(key, null /* value */ , keySpan, absoluteValueOffset, undefined /* valueSpan */ , targetMatchableAttrs, targetProps, keySpan); } } } catch (err) { _iterator9.e(err); } finally { _iterator9.f(); } } /** * Parses the bindings in a microsyntax expression, e.g. * ``` * * ``` * * @param tplKey template binding name * @param tplValue template binding value * @param sourceSpan span of template binding relative to entire the template * @param absoluteKeyOffset start of the `tplKey` * @param absoluteValueOffset start of the `tplValue` */ }, { key: "_parseTemplateBindings", value: function _parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset) { var _this150 = this; var sourceInfo = sourceSpan.start.toString(); try { var bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo, absoluteKeyOffset, absoluteValueOffset); this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan); bindingsResult.templateBindings.forEach(function (binding) { if (binding.value instanceof ASTWithSource) { _this150._checkPipes(binding.value, sourceSpan); } }); bindingsResult.warnings.forEach(function (warning) { _this150._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); }); return bindingsResult.templateBindings; } catch (e) { this._reportError("".concat(e), sourceSpan); return []; } } }, { key: "parseLiteralAttr", value: function parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, // TODO(atscott): keySpan is only optional here so VE template parser implementation does not // have to change This should be required when VE is removed. targetProps, keySpan) { if (isAnimationLabel(name)) { name = name.substring(1); if (value) { this._reportError("Assigning animation triggers via @prop=\"exp\" attributes with an expression is invalid." + " Use property bindings (e.g. [@prop]=\"exp\") or use an attribute without a value (e.g. @prop) instead.", sourceSpan, ParseErrorLevel.ERROR); } this._parseAnimation(name, value, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps); } else { targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, keySpan, valueSpan)); } } }, { key: "parsePropertyBinding", value: function parsePropertyBinding(name, expression, isHost, sourceSpan, absoluteOffset, valueSpan, // TODO(atscott): keySpan is only optional here so VE template parser implementation does not // have to change This should be required when VE is removed. targetMatchableAttrs, targetProps, keySpan) { if (name.length === 0) { this._reportError("Property name is missing in binding", sourceSpan); } var isAnimationProp = false; if (name.startsWith(ANIMATE_PROP_PREFIX)) { isAnimationProp = true; name = name.substring(ANIMATE_PROP_PREFIX.length); } else if (isAnimationLabel(name)) { isAnimationProp = true; name = name.substring(1); } if (isAnimationProp) { this._parseAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps); } else { this._parsePropertyAst(name, this._parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps); } } }, { key: "parsePropertyInterpolation", value: function parsePropertyInterpolation(name, value, sourceSpan, valueSpan, targetMatchableAttrs, // TODO(atscott): keySpan is only optional here so VE template parser implementation does not // have to change This should be required when VE is removed. targetProps, keySpan) { var expr = this.parseInterpolation(value, valueSpan || sourceSpan); if (expr) { this._parsePropertyAst(name, expr, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps); return true; } return false; } }, { key: "_parsePropertyAst", value: function _parsePropertyAst(name, ast, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps) { targetMatchableAttrs.push([name, ast.source]); targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan, keySpan, valueSpan)); } }, { key: "_parseAnimation", value: function _parseAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps) { if (name.length === 0) { this._reportError('Animation trigger is missing', sourceSpan); } // This will occur when a @trigger is not paired with an expression. // For animations it is valid to not have an expression since */void // states will be applied by angular when the element is attached/detached var ast = this._parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset); targetMatchableAttrs.push([name, ast.source]); targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan, keySpan, valueSpan)); } }, { key: "_parseBinding", value: function _parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) { var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString(); try { var ast = isHostBinding ? this._exprParser.parseSimpleBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig) : this._exprParser.parseBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig); if (ast) this._reportExpressionParserErrors(ast.errors, sourceSpan); this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError("".concat(e), sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } } }, { key: "createBoundElementProperty", value: function createBoundElementProperty(elementSelector, boundProp) { var skipValidation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var mapPropertyName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; if (boundProp.isAnimation) { return new BoundElementProperty(boundProp.name, 4 /* Animation */ , SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.keySpan, boundProp.valueSpan); } var unit = null; var bindingType = undefined; var boundPropertyName = null; var parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR); var securityContexts = undefined; // Check for special cases (prefix style, attr, class) if (parts.length > 1) { if (parts[0] == ATTRIBUTE_PREFIX) { boundPropertyName = parts.slice(1).join(PROPERTY_PARTS_SEPARATOR); if (!skipValidation) { this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true); } securityContexts = _calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true); var nsSeparatorIdx = boundPropertyName.indexOf(':'); if (nsSeparatorIdx > -1) { var ns = boundPropertyName.substring(0, nsSeparatorIdx); var name = boundPropertyName.substring(nsSeparatorIdx + 1); boundPropertyName = mergeNsAndName(ns, name); } bindingType = 1 /* Attribute */ ; } else if (parts[0] == CLASS_PREFIX) { boundPropertyName = parts[1]; bindingType = 2 /* Class */ ; securityContexts = [SecurityContext.NONE]; } else if (parts[0] == STYLE_PREFIX) { unit = parts.length > 2 ? parts[2] : null; boundPropertyName = parts[1]; bindingType = 3 /* Style */ ; securityContexts = [SecurityContext.STYLE]; } } // If not a special case, use the full property name if (boundPropertyName === null) { var mappedPropName = this._schemaRegistry.getMappedPropName(boundProp.name); boundPropertyName = mapPropertyName ? mappedPropName : boundProp.name; securityContexts = _calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, mappedPropName, false); bindingType = 0 /* Property */ ; if (!skipValidation) { this._validatePropertyOrAttributeName(mappedPropName, boundProp.sourceSpan, false); } } return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan, boundProp.keySpan, boundProp.valueSpan); } }, { key: "parseEvent", value: function parseEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { if (name.length === 0) { this._reportError("Event name is missing in binding", sourceSpan); } if (isAnimationLabel(name)) { name = name.substr(1); this._parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents); } else { this._parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents); } } }, { key: "calcPossibleSecurityContexts", value: function calcPossibleSecurityContexts(selector, propName, isAttribute) { var prop = this._schemaRegistry.getMappedPropName(propName); return _calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute); } }, { key: "_parseAnimationEvent", value: function _parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents) { var matches = splitAtPeriod(name, [name, '']); var eventName = matches[0]; var phase = matches[1].toLowerCase(); if (phase) { switch (phase) { case 'start': case 'done': var ast = this._parseAction(expression, handlerSpan); targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */ , ast, sourceSpan, handlerSpan)); break; default: this._reportError("The provided animation output phase value \"".concat(phase, "\" for \"@").concat(eventName, "\" is not supported (use start or done)"), sourceSpan); break; } } else { this._reportError("The animation trigger output event (@".concat(eventName, ") is missing its phase value name (start or done are currently supported)"), sourceSpan); } } }, { key: "_parseRegularEvent", value: function _parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { // long format: 'target: eventName' var _splitAtColon3 = splitAtColon(name, [null, name]), _splitAtColon4 = _slicedToArray(_splitAtColon3, 2), target = _splitAtColon4[0], eventName = _splitAtColon4[1]; var ast = this._parseAction(expression, handlerSpan); targetMatchableAttrs.push([name, ast.source]); targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */ , ast, sourceSpan, handlerSpan)); // Don't detect directives for event names for now, // so don't add the event name to the matchableAttrs } }, { key: "_parseAction", value: function _parseAction(value, sourceSpan) { var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString(); var absoluteOffset = sourceSpan && sourceSpan.start ? sourceSpan.start.offset : 0; try { var ast = this._exprParser.parseAction(value, sourceInfo, absoluteOffset, this._interpolationConfig); if (ast) { this._reportExpressionParserErrors(ast.errors, sourceSpan); } if (!ast || ast.ast instanceof EmptyExpr) { this._reportError("Empty expressions are not allowed", sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError("".concat(e), sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } } }, { key: "_reportError", value: function _reportError(message, sourceSpan) { var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ParseErrorLevel.ERROR; this.errors.push(new ParseError(sourceSpan, message, level)); } }, { key: "_reportExpressionParserErrors", value: function _reportExpressionParserErrors(errors, sourceSpan) { var _iterator10 = _createForOfIteratorHelper(errors), _step10; try { for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) { var _error = _step10.value; this._reportError(_error.message, sourceSpan); } } catch (err) { _iterator10.e(err); } finally { _iterator10.f(); } } // Make sure all the used pipes are known in `this.pipesByName` }, { key: "_checkPipes", value: function _checkPipes(ast, sourceSpan) { var _this151 = this; if (ast && this.pipesByName) { var collector = new PipeCollector(); ast.visit(collector); collector.pipes.forEach(function (ast, pipeName) { var pipeMeta = _this151.pipesByName.get(pipeName); if (!pipeMeta) { _this151._reportError("The pipe '".concat(pipeName, "' could not be found"), new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end))); } else { _this151._usedPipes.set(pipeName, pipeMeta); } }); } } /** * @param propName the name of the property / attribute * @param sourceSpan * @param isAttr true when binding to an attribute */ }, { key: "_validatePropertyOrAttributeName", value: function _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) { var report = isAttr ? this._schemaRegistry.validateAttribute(propName) : this._schemaRegistry.validateProperty(propName); if (report.error) { this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR); } } }]); return BindingParser; }(); var PipeCollector = /*#__PURE__*/function (_RecursiveAstVisitor$) { _inherits(PipeCollector, _RecursiveAstVisitor$); var _super98 = _createSuper(PipeCollector); function PipeCollector() { var _this152; _classCallCheck(this, PipeCollector); _this152 = _super98.apply(this, arguments); _this152.pipes = new Map(); return _this152; } _createClass2(PipeCollector, [{ key: "visitPipe", value: function visitPipe(ast, context) { this.pipes.set(ast.name, ast); ast.exp.visit(this); this.visitAll(ast.args, context); return null; } }]); return PipeCollector; }(RecursiveAstVisitor$1); function isAnimationLabel(name) { return name[0] == '@'; } function _calcPossibleSecurityContexts(registry, selector, propName, isAttribute) { var ctxs = []; CssSelector.parse(selector).forEach(function (selector) { var elementNames = selector.element ? [selector.element] : registry.allKnownElementNames(); var notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); }).map(function (selector) { return selector.element; })); var possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); }); ctxs.push.apply(ctxs, _toConsumableArray(possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); }))); }); return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort(); } /** * Compute a new ParseSourceSpan based off an original `sourceSpan` by using * absolute offsets from the specified `absoluteSpan`. * * @param sourceSpan original source span * @param absoluteSpan absolute source span to move to */ function moveParseSourceSpan(sourceSpan, absoluteSpan) { // The difference of two absolute offsets provide the relative offset var startDiff = absoluteSpan.start - sourceSpan.start.offset; var endDiff = absoluteSpan.end - sourceSpan.end.offset; return new ParseSourceSpan(sourceSpan.start.moveBy(startDiff), sourceSpan.end.moveBy(endDiff), sourceSpan.fullStart.moveBy(startDiff), sourceSpan.details); } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var NG_CONTENT_SELECT_ATTR = 'select'; var LINK_ELEMENT = 'link'; var LINK_STYLE_REL_ATTR = 'rel'; var LINK_STYLE_HREF_ATTR = 'href'; var LINK_STYLE_REL_VALUE = 'stylesheet'; var STYLE_ELEMENT = 'style'; var SCRIPT_ELEMENT = 'script'; var NG_NON_BINDABLE_ATTR = 'ngNonBindable'; var NG_PROJECT_AS = 'ngProjectAs'; function preparseElement(ast) { var selectAttr = null; var hrefAttr = null; var relAttr = null; var nonBindable = false; var projectAs = ''; ast.attrs.forEach(function (attr) { var lcAttrName = attr.name.toLowerCase(); if (lcAttrName == NG_CONTENT_SELECT_ATTR) { selectAttr = attr.value; } else if (lcAttrName == LINK_STYLE_HREF_ATTR) { hrefAttr = attr.value; } else if (lcAttrName == LINK_STYLE_REL_ATTR) { relAttr = attr.value; } else if (attr.name == NG_NON_BINDABLE_ATTR) { nonBindable = true; } else if (attr.name == NG_PROJECT_AS) { if (attr.value.length > 0) { projectAs = attr.value; } } }); selectAttr = normalizeNgContentSelect(selectAttr); var nodeName = ast.name.toLowerCase(); var type = PreparsedElementType.OTHER; if (isNgContent(nodeName)) { type = PreparsedElementType.NG_CONTENT; } else if (nodeName == STYLE_ELEMENT) { type = PreparsedElementType.STYLE; } else if (nodeName == SCRIPT_ELEMENT) { type = PreparsedElementType.SCRIPT; } else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) { type = PreparsedElementType.STYLESHEET; } return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs); } var PreparsedElementType; (function (PreparsedElementType) { PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT"; PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE"; PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET"; PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT"; PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER"; })(PreparsedElementType || (PreparsedElementType = {})); var PreparsedElement = /*#__PURE__*/_createClass2(function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) { _classCallCheck(this, PreparsedElement); this.type = type; this.selectAttr = selectAttr; this.hrefAttr = hrefAttr; this.nonBindable = nonBindable; this.projectAs = projectAs; }); function normalizeNgContentSelect(selectAttr) { if (selectAttr === null || selectAttr.length === 0) { return '*'; } return selectAttr; } /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.*))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/; // Group 1 = "bind-" var KW_BIND_IDX = 1; // Group 2 = "let-" var KW_LET_IDX = 2; // Group 3 = "ref-/#" var KW_REF_IDX = 3; // Group 4 = "on-" var KW_ON_IDX = 4; // Group 5 = "bindon-" var KW_BINDON_IDX = 5; // Group 6 = "@" var KW_AT_IDX = 6; // Group 7 = the identifier after "bind-", "let-", "ref-/#", "on-", "bindon-" or "@" var IDENT_KW_IDX = 7; // Group 8 = identifier inside [()] var IDENT_BANANA_BOX_IDX = 8; // Group 9 = identifier inside [] var IDENT_PROPERTY_IDX = 9; // Group 10 = identifier inside () var IDENT_EVENT_IDX = 10; var TEMPLATE_ATTR_PREFIX$1 = '*'; var CLASS_ATTR = 'class'; var _TEXT_CSS_SELECTOR; function TEXT_CSS_SELECTOR() { if (!_TEXT_CSS_SELECTOR) { _TEXT_CSS_SELECTOR = CssSelector.parse('*')[0]; } return _TEXT_CSS_SELECTOR; } var TemplateParseError = /*#__PURE__*/function (_ParseError5) { _inherits(TemplateParseError, _ParseError5); var _super99 = _createSuper(TemplateParseError); function TemplateParseError(message, span, level) { _classCallCheck(this, TemplateParseError); return _super99.call(this, span, message, level); } return _createClass2(TemplateParseError); }(ParseError); var TemplateParseResult = /*#__PURE__*/_createClass2(function TemplateParseResult(templateAst, usedPipes, errors) { _classCallCheck(this, TemplateParseResult); this.templateAst = templateAst; this.usedPipes = usedPipes; this.errors = errors; }); var TemplateParser = /*#__PURE__*/function () { function TemplateParser(_config, _reflector, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) { _classCallCheck(this, TemplateParser); this._config = _config; this._reflector = _reflector; this._exprParser = _exprParser; this._schemaRegistry = _schemaRegistry; this._htmlParser = _htmlParser; this._console = _console; this.transforms = transforms; } _createClass2(TemplateParser, [{ key: "expressionParser", get: function get() { return this._exprParser; } }, { key: "parse", value: function parse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { var _a; var result = this.tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces); var warnings = result.errors.filter(function (error) { return error.level === ParseErrorLevel.WARNING; }); var errors = result.errors.filter(function (error) { return error.level === ParseErrorLevel.ERROR; }); if (warnings.length > 0) { (_a = this._console) === null || _a === void 0 ? void 0 : _a.warn("Template parse warnings:\n".concat(warnings.join('\n'))); } if (errors.length > 0) { var errorString = errors.join('\n'); throw syntaxError("Template parse errors:\n".concat(errorString), errors); } return { template: result.templateAst, pipes: result.usedPipes }; } }, { key: "tryParse", value: function tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { var htmlParseResult = typeof template === 'string' ? this._htmlParser.parse(template, templateUrl, { tokenizeExpansionForms: true, interpolationConfig: this.getInterpolationConfig(component) }) : template; if (!preserveWhitespaces) { htmlParseResult = removeWhitespaces(htmlParseResult); } return this.tryParseHtml(this.expandHtml(htmlParseResult), component, directives, pipes, schemas); } }, { key: "tryParseHtml", value: function tryParseHtml(htmlAstWithErrors, component, directives, pipes, schemas) { var result; var errors = htmlAstWithErrors.errors; var usedPipes = []; if (htmlAstWithErrors.rootNodes.length > 0) { var uniqDirectives = removeSummaryDuplicates(directives); var uniqPipes = removeSummaryDuplicates(pipes); var providerViewContext = new ProviderViewContext(this._reflector, component); var interpolationConfig = undefined; if (component.template && component.template.interpolation) { interpolationConfig = { start: component.template.interpolation[0], end: component.template.interpolation[1] }; } var bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors); var parseVisitor = new TemplateParseVisitor(this._reflector, this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors); result = visitAll$1(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT); errors.push.apply(errors, _toConsumableArray(providerViewContext.errors)); usedPipes.push.apply(usedPipes, _toConsumableArray(bindingParser.getUsedPipes())); } else { result = []; } this._assertNoReferenceDuplicationOnTemplate(result, errors); if (errors.length > 0) { return new TemplateParseResult(result, usedPipes, errors); } if (this.transforms) { this.transforms.forEach(function (transform) { result = templateVisitAll(transform, result); }); } return new TemplateParseResult(result, usedPipes, errors); } }, { key: "expandHtml", value: function expandHtml(htmlAstWithErrors) { var forced = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var errors = htmlAstWithErrors.errors; if (errors.length == 0 || forced) { // Transform ICU messages to angular directives var expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes); errors.push.apply(errors, _toConsumableArray(expandedHtmlAst.errors)); htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors); } return htmlAstWithErrors; } }, { key: "getInterpolationConfig", value: function getInterpolationConfig(component) { if (component.template) { return InterpolationConfig.fromArray(component.template.interpolation); } return undefined; } /** @internal */ }, { key: "_assertNoReferenceDuplicationOnTemplate", value: function _assertNoReferenceDuplicationOnTemplate(result, errors) { var existingReferences = []; result.filter(function (element) { return !!element.references; }).forEach(function (element) { return element.references.forEach(function (reference) { var name = reference.name; if (existingReferences.indexOf(name) < 0) { existingReferences.push(name); } else { var _error2 = new TemplateParseError("Reference \"#".concat(name, "\" is defined several times"), reference.sourceSpan, ParseErrorLevel.ERROR); errors.push(_error2); } }); }); } }]); return TemplateParser; }(); var TemplateParseVisitor = /*#__PURE__*/function () { function TemplateParseVisitor(reflector, config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) { var _this153 = this; _classCallCheck(this, TemplateParseVisitor); this.reflector = reflector; this.config = config; this.providerViewContext = providerViewContext; this._bindingParser = _bindingParser; this._schemaRegistry = _schemaRegistry; this._schemas = _schemas; this._targetErrors = _targetErrors; this.selectorMatcher = new SelectorMatcher(); this.directivesIndex = new Map(); this.ngContentCount = 0; // Note: queries start with id 1 so we can use the number in a Bloom filter! this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1; directives.forEach(function (directive, index) { var selector = CssSelector.parse(directive.selector); _this153.selectorMatcher.addSelectables(selector, directive); _this153.directivesIndex.set(directive, index); }); } _createClass2(TemplateParseVisitor, [{ key: "visitExpansion", value: function visitExpansion(expansion, context) { return null; } }, { key: "visitExpansionCase", value: function visitExpansionCase(expansionCase, context) { return null; } }, { key: "visitText", value: function visitText(text, parent) { var ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR()); var valueNoNgsp = replaceNgsp(text.value); var expr = this._bindingParser.parseInterpolation(valueNoNgsp, text.sourceSpan); return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) : new TextAst(valueNoNgsp, ngContentIndex, text.sourceSpan); } }, { key: "visitAttribute", value: function visitAttribute(attribute, context) { return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan); } }, { key: "visitComment", value: function visitComment(comment, context) { return null; } }, { key: "visitElement", value: function visitElement(element, parent) { var _this154 = this; var queryStartIndex = this.contentQueryStartId; var elName = element.name; var preparsedElement = preparseElement(element); if (preparsedElement.type === PreparsedElementType.SCRIPT || preparsedElement.type === PreparsedElementType.STYLE) { // Skipping