{"version":3,"sources":["webpack:///./node_modules/@firebase/messaging/dist/index.esm.js"],"names":["_a","MessageType","ERROR_MAP","ERROR_FACTORY","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","ENDPOINT","FCM_MSG","TAG","CONSOLE_CAMPAIGN_ANALYTICS_ENABLED","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_TIME","CONSOLE_CAMPAIGN_NAME","BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS","FOREGROUND_HANDLE_PREPARATION_TIME_MS","arrayToBase64","array","uint8Array","Uint8Array","base64String","btoa","String","fromCharCode","apply","replace","base64ToArray","padding","repeat","length","base64","rawData","atob","outputArray","i","charCodeAt","OLD_DB_NAME","OLD_DB_VERSION","OLD_OBJECT_STORE_NAME","migrateOldDatabase","senderId","this","databases","dbNames","tokenDetails","db","_this","label","indexedDB","sent","map","name","includes","objectStore","value","oldDetails","_b","oldVersion","objectStoreNames","contains","transaction","index","get","clear","auth","p256dh","endpoint","token","fcmToken","createTime","Date","now","subscriptionOptions","swScope","vapidKey","close","checkTokenDetails","DATABASE_NAME","DATABASE_VERSION","OBJECT_STORE_NAME","dbPromise","getDbPromise","upgradeDb","createObjectStore","dbGet","firebaseDependencies","key","oldTokenDetails","getKey","appConfig","dbSet","tx","put","complete","dbRemove","delete","appId","requestGetToken","headers","body","subscribeOptions","responseData","response","err_1","message","getHeaders","getBody","method","JSON","stringify","trys","push","fetch","getEndpoint","json","create","errorInfo","error","requestUpdateToken","updateOptions","err_2","requestDeleteToken","unsubscribeOptions","err_3","projectId","installations","authToken","getToken","Headers","Accept","apiKey","web","applicationPubKey","TOKEN_EXPIRATION_MS","swRegistration","pushSubscription","e_1","Notification","permission","getPushSubscription","scope","getNewToken","isTokenValid","console","warn","updateToken","deleteToken","pushManager","getSubscription","unsubscribe","updatedToken","updatedTokenDetails","e_2","subscription","subscribe","userVisibleOnly","applicationServerKey","dbOptions","currentOptions","isVapidKeyEqual","isEndpointEqual","isAuthEqual","isP256dhEqual","externalizePayload","internalPayload","payload","from","collapseKey","collapse_key","messageId","fcm_message_id","propagateNotificationPayload","propagateDataPayload","propagateFcmOptions","messagePayloadInternal","notification","title","image","data","fcmOptions","link","analyticsLabel","analytics_label","isConsoleMessage","sleep","ms","Promise","resolve","setTimeout","SwController","isOnBackgroundMessageUsed","bgMessageHandler","self","addEventListener","e","waitUntil","onPush","onSubChange","onNotificationClick","Object","defineProperty","prototype","app","enumerable","configurable","setBackgroundMessageHandler","callback","onBackgroundMessage","nextOrObserver","_c","registration","requestPermission","usePublicVapidKey","useServiceWorker","onMessage","onTokenRefresh","event","clientList","isNotificationShown","getMessagePayloadInternal","getClientList","debug","hasVisibleClients","sendMessagePayloadInternalToWindows","showNotification","wrapInternalPayload","next","newSubscription","url","originUrl","client","action","stopImmediatePropagation","getLink","URL","location","href","origin","host","getWindowClient","clients","openWindow","focus","messageType","NOTIFICATION_CLICKED","isFirebaseMessaging","postMessage","wrappedInternalPayload","err","clientList_1","clientList_1_1","clientUrl","done","e_1_1","return","call","some","visibilityState","startsWith","PUSH_RECEIVED","clientList_2","clientList_2_1","e_2_1","matchAll","type","includeUncontrolled","notificationPayloadInternal","actions","maxActions","click_action","WindowController","onMessageCallback","navigator","serviceWorker","messageEventListener","dataPayload","stripInternalFields","assign","logEvent","getVapidKey","getSwReg","options","updateVapidKey","updateSwReg","serviceWorkerRegistration","registerDefaultSw","ServiceWorkerRegistration","register","update","catch","browserErrorMessage","permissionResult","eventType","analytics","getEventType","analyticsProvider","message_id","message_name","message_time","message_device_time","Math","floor","Error","extractAppConfig","getMissingValueError","configKeys","configKeys_1","configKeys_1_1","keyName","appName","messagingSenderId","valueName","MESSAGING_NAME","factoryMethod","container","getProvider","getImmediate","isSupported","NAMESPACE_EXPORTS","isSWControllerSupported","isWindowControllerSupported","window","cookieEnabled","hasOwnProperty","PushSubscription","INTERNAL","registerComponent","setServiceProps"],"mappings":"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","file":"js/chunk-vendors~0f08bdbc.2d1f2d6b.js","sourcesContent":["import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spreadArray, __read, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */] = 'This method is available in a Window context.',\r\n _a[\"only-available-in-sw\" /* AVAILABLE_IN_SW */] = 'This method is available in a service worker context.',\r\n _a[\"permission-default\" /* PERMISSION_DEFAULT */] = 'The notification permission was not granted and dismissed instead.',\r\n _a[\"permission-blocked\" /* PERMISSION_BLOCKED */] = 'The notification permission was not granted and blocked instead.',\r\n _a[\"unsupported-browser\" /* UNSUPPORTED_BROWSER */] = \"This browser doesn't support the API's required to use the firebase SDK.\",\r\n _a[\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */] = 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n _a[\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n _a[\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */] = 'FCM returned no token when subscribing the user to push.',\r\n _a[\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */] = 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n _a[\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */] = 'FCM returned no token when updating the user to push.',\r\n _a[\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */] = 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n _a[\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n _a[\"invalid-bg-handler\" /* INVALID_BG_HANDLER */] = 'The input to setBackgroundMessageHandler() must be a function.',\r\n _a[\"invalid-vapid-key\" /* INVALID_VAPID_KEY */] = 'The public VAPID key must be a string.',\r\n _a[\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */] = 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\n// Key of FCM Payload in Notification's data field.\r\nvar FCM_MSG = 'FCM_MSG';\r\nvar TAG = 'FirebaseMessaging: ';\r\n// Set to '1' if Analytics is enabled for the campaign\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\n// Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\r\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\r\n// Experiments were ran to determine the majority onBackground message clock time. This brief\r\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\r\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000;\r\n// Preparation time for client to initialize and set up the message handler.\r\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n var uint8Array = new Uint8Array(array);\r\n var base64String = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(uint8Array))));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n var rawData = atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nvar OLD_DB_VERSION = 5;\r\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nfunction migrateOldDatabase(senderId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var databases, dbNames, tokenDetails, db;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!('databases' in indexedDB)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, indexedDB.databases()];\r\n case 1:\r\n databases = _a.sent();\r\n dbNames = databases.map(function (db) { return db.name; });\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n tokenDetails = null;\r\n return [4 /*yield*/, openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) { return __awaiter(_this, void 0, void 0, function () {\r\n var objectStore, value, oldDetails, oldDetails, oldDetails;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return [2 /*return*/];\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return [2 /*return*/];\r\n }\r\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.index('fcmSenderId').get(senderId)];\r\n case 1:\r\n value = _b.sent();\r\n return [4 /*yield*/, objectStore.clear()];\r\n case 2:\r\n _b.sent();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return [2 /*return*/];\r\n }\r\n if (db.oldVersion === 2) {\r\n oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return [2 /*return*/];\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n case 3:\r\n db = _a.sent();\r\n db.close();\r\n // Delete all old databases.\r\n return [4 /*yield*/, deleteDb(OLD_DB_NAME)];\r\n case 4:\r\n // Delete all old databases.\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('fcm_vapid_details_db')];\r\n case 5:\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('undefined')];\r\n case 6:\r\n _a.sent();\r\n return [2 /*return*/, checkTokenDetails(tokenDetails) ? tokenDetails : null];\r\n }\r\n });\r\n });\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n var subscriptionOptions = tokenDetails.subscriptionOptions;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nvar DATABASE_NAME = 'firebase-messaging-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nfunction dbGet(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tokenDetails, oldTokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n return [4 /*yield*/, db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 3];\r\n return [2 /*return*/, tokenDetails];\r\n case 3: return [4 /*yield*/, migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\r\n case 4:\r\n oldTokenDetails = _a.sent();\r\n if (!oldTokenDetails) return [3 /*break*/, 6];\r\n return [4 /*yield*/, dbSet(firebaseDependencies, oldTokenDetails)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/, oldTokenDetails];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction dbSet(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction dbRemove(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getKey(_a) {\r\n var appConfig = _a.appConfig;\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, subscribeOptions, responseData, response, err_1, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(subscriptionOptions);\r\n subscribeOptions = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_1 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err_1\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, updateOptions, responseData, response, err_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(tokenDetails.subscriptionOptions);\r\n updateOptions = {\r\n method: 'PATCH',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_2 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err_2\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestDeleteToken(firebaseDependencies, token) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, unsubscribeOptions, response, responseData, message, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_3 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err_3\r\n });\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\r\n}\r\nfunction getHeaders(_a) {\r\n var appConfig = _a.appConfig, installations = _a.installations;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getToken()];\r\n case 1:\r\n authToken = _b.sent();\r\n return [2 /*return*/, new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getBody(_a) {\r\n var p256dh = _a.p256dh, auth = _a.auth, endpoint = _a.endpoint, vapidKey = _a.vapidKey;\r\n var body = {\r\n web: {\r\n endpoint: endpoint,\r\n auth: auth,\r\n p256dh: p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** UpdateRegistration will be called once every week. */\r\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, getPushSubscription(swRegistration, vapidKey)];\r\n case 1:\r\n pushSubscription = _a.sent();\r\n return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n subscriptionOptions = {\r\n vapidKey: vapidKey,\r\n swScope: swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n if (!!tokenDetails) return [3 /*break*/, 3];\r\n // No token, get a new one.\r\n return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 3:\r\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3 /*break*/, 8];\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 5:\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_1 = _a.sent();\r\n // Suppress errors because of #2364\r\n console.warn(e_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 8:\r\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return [2 /*return*/, updateToken({\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n }, firebaseDependencies, swRegistration)];\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nfunction deleteToken(firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails, pushSubscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 4];\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, dbRemove(firebaseDependencies)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 5:\r\n pushSubscription = _a.sent();\r\n if (pushSubscription) {\r\n return [2 /*return*/, pushSubscription.unsubscribe()];\r\n }\r\n // If there's no SW, consider it a success.\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updatedToken, updatedTokenDetails, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 5]);\r\n return [4 /*yield*/, requestUpdateToken(firebaseDependencies, tokenDetails)];\r\n case 1:\r\n updatedToken = _a.sent();\r\n updatedTokenDetails = __assign(__assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n return [4 /*yield*/, dbSet(firebaseDependencies, updatedTokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, updatedToken];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [4 /*yield*/, deleteToken(firebaseDependencies, swRegistration)];\r\n case 4:\r\n _a.sent();\r\n throw e_2;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, tokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, requestGetToken(firebaseDependencies, subscriptionOptions)];\r\n case 1:\r\n token = _a.sent();\r\n tokenDetails = {\r\n token: token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n };\r\n return [4 /*yield*/, dbSet(firebaseDependencies, tokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nfunction getPushSubscription(swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var subscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 1:\r\n subscription = _a.sent();\r\n if (subscription) {\r\n return [2 /*return*/, subscription];\r\n }\r\n return [2 /*return*/, swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n var payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcm_message_id\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n var title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n var body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n var image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n var link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SwController = /** @class */ (function () {\r\n function SwController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n // A boolean flag to determine wether an app is using onBackgroundMessage or\r\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\r\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\r\n // MessagePayload if a NotificationPayload is included.\r\n this.isOnBackgroundMessageUsed = null;\r\n this.vapidKey = null;\r\n this.bgMessageHandler = null;\r\n self.addEventListener('push', function (e) {\r\n e.waitUntil(_this.onPush(e));\r\n });\r\n self.addEventListener('pushsubscriptionchange', function (e) {\r\n e.waitUntil(_this.onSubChange(e));\r\n });\r\n self.addEventListener('notificationclick', function (e) {\r\n e.waitUntil(_this.onNotificationClick(e));\r\n });\r\n }\r\n Object.defineProperty(SwController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\r\n this.isOnBackgroundMessageUsed = false;\r\n if (!callback || typeof callback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-bg-handler\" /* INVALID_BG_HANDLER */);\r\n }\r\n this.bgMessageHandler = callback;\r\n };\r\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.isOnBackgroundMessageUsed = true;\r\n this.bgMessageHandler = nextOrObserver;\r\n return function () {\r\n _this.bgMessageHandler = null;\r\n };\r\n };\r\n // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.getToken = function () {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!!this.vapidKey) return [3 /*break*/, 2];\r\n return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _c.sent();\r\n this.vapidKey =\r\n (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\r\n _c.label = 2;\r\n case 2: return [2 /*return*/, getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.deleteToken = function () {\r\n return deleteToken(this.firebaseDependencies, self.registration);\r\n };\r\n SwController.prototype.requestPermission = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n // TODO: Remove this together with getToken from SW Controller.\r\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n SwController.prototype.useServiceWorker = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onTokenRefresh = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, clientList, isNotificationShown, payload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = getMessagePayloadInternal(event);\r\n if (!internalPayload) {\r\n console.debug(TAG +\r\n 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _a.sent();\r\n if (hasVisibleClients(clientList)) {\r\n return [2 /*return*/, sendMessagePayloadInternalToWindows(clientList, internalPayload)];\r\n }\r\n isNotificationShown = false;\r\n if (!!!internalPayload.notification) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(wrapInternalPayload(internalPayload))];\r\n case 2:\r\n _a.sent();\r\n isNotificationShown = true;\r\n _a.label = 3;\r\n case 3:\r\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\r\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\r\n if (isNotificationShown === true &&\r\n this.isOnBackgroundMessageUsed === false) {\r\n return [2 /*return*/];\r\n }\r\n if (!!this.bgMessageHandler) {\r\n payload = externalizePayload(internalPayload);\r\n if (typeof this.bgMessageHandler === 'function') {\r\n this.bgMessageHandler(payload);\r\n }\r\n else {\r\n this.bgMessageHandler.next(payload);\r\n }\r\n }\r\n // wait briefly to allow onBackgroundMessage to complete\r\n return [4 /*yield*/, sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\r\n case 4:\r\n // wait briefly to allow onBackgroundMessage to complete\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onSubChange = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newSubscription, tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n newSubscription = event.newSubscription;\r\n if (!!newSubscription) return [3 /*break*/, 2];\r\n // Subscription revoked, delete token\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 1:\r\n // Subscription revoked, delete token\r\n _c.sent();\r\n return [2 /*return*/];\r\n case 2: return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 3:\r\n tokenDetails = _c.sent();\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 4:\r\n _c.sent();\r\n return [4 /*yield*/, getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\r\n case 5:\r\n _c.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onNotificationClick = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, link, url, originUrl, client;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!internalPayload) {\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button. This will allow developers to act on action button clicks\r\n // by using a custom onNotificationClick listener that they define.\r\n return [2 /*return*/];\r\n }\r\n // Prevent other listeners from receiving the event\r\n event.stopImmediatePropagation();\r\n event.notification.close();\r\n link = getLink(internalPayload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n url = new URL(link, self.location.href);\r\n originUrl = new URL(self.location.origin);\r\n if (url.host !== originUrl.host) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(url)];\r\n case 1:\r\n client = _c.sent();\r\n if (!!client) return [3 /*break*/, 4];\r\n return [4 /*yield*/, self.clients.openWindow(link)];\r\n case 2:\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n return [4 /*yield*/, sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, client.focus()];\r\n case 5:\r\n client = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n if (!client) {\r\n // Window Client will not be returned if it's for a third party origin.\r\n return [2 /*return*/];\r\n }\r\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\r\n internalPayload.isFirebaseMessaging = true;\r\n return [2 /*return*/, client.postMessage(internalPayload)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction wrapInternalPayload(internalPayload) {\r\n var _a;\r\n var wrappedInternalPayload = __assign({}, internalPayload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\r\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n wrappedInternalPayload.data = (_a = {},\r\n _a[FCM_MSG] = internalPayload,\r\n _a);\r\n return wrappedInternalPayload;\r\n}\r\nfunction getMessagePayloadInternal(_a) {\r\n var data = _a.data;\r\n if (!data) {\r\n return null;\r\n }\r\n try {\r\n return data.json();\r\n }\r\n catch (err) {\r\n // Not JSON so not an FCM message.\r\n return null;\r\n }\r\n}\r\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\r\nfunction getWindowClient(url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _b.sent();\r\n try {\r\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\r\n client = clientList_1_1.value;\r\n clientUrl = new URL(client.url, self.location.href);\r\n if (url.host === clientUrl.host) {\r\n return [2 /*return*/, client];\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\r\nfunction hasVisibleClients(clientList) {\r\n return clientList.some(function (client) {\r\n return client.visibilityState === 'visible' &&\r\n // Ignore chrome-extension clients as that matches the background pages of extensions, which\r\n // are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\r\n var e_2, _a;\r\n internalPayload.isFirebaseMessaging = true;\r\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\r\n try {\r\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\r\n var client = clientList_2_1.value;\r\n client.postMessage(internalPayload);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n}\r\nfunction getClientList() {\r\n return self.clients.matchAll({\r\n type: 'window',\r\n includeUncontrolled: true\r\n // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\r\n });\r\n}\r\nfunction showNotification(notificationPayloadInternal) {\r\n var _a;\r\n // Note: Firefox does not support the maxActions property.\r\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\r\n var actions = notificationPayloadInternal.actions;\r\n var maxActions = Notification.maxActions;\r\n if (actions && maxActions && actions.length > maxActions) {\r\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\r\n }\r\n return self.registration.showNotification(\r\n /* title= */ (_a = notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\r\n}\r\nfunction getLink(payload) {\r\n var _a, _b, _c;\r\n // eslint-disable-next-line camelcase\r\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\r\n if (link) {\r\n return link;\r\n }\r\n if (isConsoleMessage(payload.data)) {\r\n // Notification created in the Firebase Console. Redirect to origin.\r\n return self.location.origin;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WindowController = /** @class */ (function () {\r\n function WindowController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n this.vapidKey = null;\r\n this.onMessageCallback = null;\r\n navigator.serviceWorker.addEventListener('message', function (e) {\r\n return _this.messageEventListener(e);\r\n });\r\n }\r\n Object.defineProperty(WindowController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WindowController.prototype.messageEventListener = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, dataPayload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return [2 /*return*/];\r\n }\r\n // onMessageCallback is either a function or observer/subscriber.\r\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\r\n // the legacy payload where some fields are in snake cases.\r\n if (this.onMessageCallback &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof this.onMessageCallback === 'function') {\r\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\r\n }\r\n else {\r\n this.onMessageCallback.next(Object.assign({}, internalPayload));\r\n }\r\n }\r\n dataPayload = internalPayload.data;\r\n if (!(isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.logEvent(internalPayload.messageType, dataPayload)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.getVapidKey = function () {\r\n return this.vapidKey;\r\n };\r\n WindowController.prototype.getSwReg = function () {\r\n return this.swRegistration;\r\n };\r\n WindowController.prototype.getToken = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateVapidKey = function (vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!!vapidKey) {\r\n this.vapidKey = vapidKey;\r\n }\r\n else if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateSwReg = function (swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(!swRegistration && !this.swRegistration)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!swRegistration && !!this.swRegistration) {\r\n return [2 /*return*/];\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n this.swRegistration = swRegistration;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.registerDefaultSw = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n _a = this;\r\n return [4 /*yield*/, navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n })];\r\n case 1:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n this.swRegistration.update().catch(function () {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e_1.message\r\n });\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.deleteToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.swRegistration) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, deleteToken(this.firebaseDependencies, this.swRegistration)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\r\n WindowController.prototype.requestPermission = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var permissionResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n permissionResult = _a.sent();\r\n if (permissionResult === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n else if (permissionResult === 'denied') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"permission-default\" /* PERMISSION_DEFAULT */);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.useServiceWorker = function (swRegistration) {\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n if (this.swRegistration) {\r\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */);\r\n }\r\n this.swRegistration = swRegistration;\r\n };\r\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback = nextOrObserver;\r\n return function () {\r\n _this.onMessageCallback = null;\r\n };\r\n };\r\n WindowController.prototype.setBackgroundMessageHandler = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n WindowController.prototype.onBackgroundMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n WindowController.prototype.logEvent = function (messageType, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var eventType, analytics;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n eventType = getEventType(messageType);\r\n return [4 /*yield*/, this.firebaseDependencies.analyticsProvider.get()];\r\n case 1:\r\n analytics = _a.sent();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return WindowController;\r\n}());\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\r\nfunction stripInternalFields(internalPayload) {\r\n delete internalPayload.messageType;\r\n delete internalPayload.isFirebaseMessaging;\r\n return internalPayload;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n var options = app.options;\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MESSAGING_NAME = 'messaging';\r\nfunction factoryMethod(container) {\r\n // Dependencies.\r\n var app = container.getProvider('app').getImmediate();\r\n var appConfig = extractAppConfig(app);\r\n var installations = container.getProvider('installations').getImmediate();\r\n var analyticsProvider = container.getProvider('analytics-internal');\r\n var firebaseDependencies = {\r\n app: app,\r\n appConfig: appConfig,\r\n installations: installations,\r\n analyticsProvider: analyticsProvider\r\n };\r\n if (!isSupported()) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return new SwController(firebaseDependencies);\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return new WindowController(firebaseDependencies);\r\n }\r\n}\r\nvar NAMESPACE_EXPORTS = {\r\n isSupported: isSupported\r\n};\r\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\" /* PUBLIC */).setServiceProps(NAMESPACE_EXPORTS));\r\nfunction isSupported() {\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return isSWControllerSupported();\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return isWindowControllerSupported();\r\n }\r\n}\r\n/**\r\n * Checks to see if the required APIs exist.\r\n */\r\nfunction isWindowControllerSupported() {\r\n return ('indexedDB' in window &&\r\n indexedDB !== null &&\r\n navigator.cookieEnabled &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\r\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\r\nfunction isSWControllerSupported() {\r\n return ('indexedDB' in self &&\r\n indexedDB !== null &&\r\n 'PushManager' in self &&\r\n 'Notification' in self &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n//# sourceMappingURL=index.esm.js.map\n"],"sourceRoot":""}