1
0
mirror of https://github.com/musix-org/musix-oss synced 2024-12-23 22:33:17 +00:00
musix-oss/node_modules/@firebase/analytics/dist/index.cjs.js.map
2020-03-03 22:30:50 +02:00

1 line
32 KiB
Plaintext

{"version":3,"file":"index.cjs.js","sources":["../src/constants.ts","../src/functions.ts","../src/helpers.ts","../src/errors.ts","../src/factory.ts","../index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const ANALYTICS_ID_FIELD = 'measurementId';\n\n// Key to attach FID to in gtag params.\nexport const GA_FID_KEY = 'firebase_id';\nexport const ORIGIN_KEY = 'origin';\n\nexport const GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\n\nexport enum GtagCommand {\n EVENT = 'event',\n SET = 'set',\n CONFIG = 'config'\n}\n\n/*\n * Officially recommended event names for gtag.js\n * Any other string is also allowed.\n */\nexport enum EventName {\n ADD_PAYMENT_INFO = 'add_payment_info',\n ADD_TO_CART = 'add_to_cart',\n ADD_TO_WISHLIST = 'add_to_wishlist',\n BEGIN_CHECKOUT = 'begin_checkout',\n CHECKOUT_PROGRESS = 'checkout_progress',\n EXCEPTION = 'exception',\n GENERATE_LEAD = 'generate_lead',\n LOGIN = 'login',\n PAGE_VIEW = 'page_view',\n PURCHASE = 'purchase',\n REFUND = 'refund',\n REMOVE_FROM_CART = 'remove_from_cart',\n SCREEN_VIEW = 'screen_view',\n SEARCH = 'search',\n SELECT_CONTENT = 'select_content',\n SET_CHECKOUT_OPTION = 'set_checkout_option',\n SHARE = 'share',\n SIGN_UP = 'sign_up',\n TIMING_COMPLETE = 'timing_complete',\n VIEW_ITEM = 'view_item',\n VIEW_ITEM_LIST = 'view_item_list',\n VIEW_PROMOTION = 'view_promotion',\n VIEW_SEARCH_RESULTS = 'view_search_results'\n}\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnalyticsCallOptions,\n Gtag,\n CustomParams,\n ControlParams,\n EventParams\n} from '@firebase/analytics-types';\nimport { GtagCommand } from './constants';\n/**\n * Logs an analytics event through the Firebase SDK.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\n * @param eventParams Analytics event parameters.\n */\nexport function logEvent(\n gtagFunction: Gtag,\n analyticsId: string,\n eventName: string,\n eventParams?: EventParams,\n options?: AnalyticsCallOptions\n): void {\n let params: EventParams | ControlParams = eventParams || {};\n if (!options || !options.global) {\n params = { ...eventParams, 'send_to': analyticsId };\n }\n // Workaround for http://b/141370449 - third argument cannot be undefined.\n gtagFunction(GtagCommand.EVENT, eventName, params || {});\n}\n\n// TODO: Brad is going to add `screen_name` to GA Gold config parameter schema\n\n/**\n * Set screen_name parameter for this Google Analytics ID.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param screenName Screen name string to set.\n */\nexport function setCurrentScreen(\n gtagFunction: Gtag,\n analyticsId: string,\n screenName: string | null,\n options?: AnalyticsCallOptions\n): void {\n if (options && options.global) {\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\n } else {\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\n update: true,\n 'screen_name': screenName\n });\n }\n}\n\n/**\n * Set user_id parameter for this Google Analytics ID.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param id User ID string to set\n */\nexport function setUserId(\n gtagFunction: Gtag,\n analyticsId: string,\n id: string | null,\n options?: AnalyticsCallOptions\n): void {\n if (options && options.global) {\n gtagFunction(GtagCommand.SET, { 'user_id': id });\n } else {\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\n update: true,\n 'user_id': id\n });\n }\n}\n\n/**\n * Set all other user properties other than user_id and screen_name.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param properties Map of user properties to set\n */\nexport function setUserProperties(\n gtagFunction: Gtag,\n analyticsId: string,\n properties: CustomParams,\n options?: AnalyticsCallOptions\n): void {\n if (options && options.global) {\n const flatProperties: { [key: string]: unknown } = {};\n for (const key of Object.keys(properties)) {\n // use dot notation for merge behavior in gtag.js\n flatProperties[`user_properties.${key}`] = properties[key];\n }\n gtagFunction(GtagCommand.SET, flatProperties);\n } else {\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\n update: true,\n 'user_properties': properties\n });\n }\n}\n\n/**\n * Set whether collection is enabled for this ID.\n *\n * @param enabled If true, collection is enabled for this ID.\n */\nexport function setAnalyticsCollectionEnabled(\n analyticsId: string,\n enabled: boolean\n): void {\n window[`ga-disable-${analyticsId}`] = !enabled;\n}\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp } from '@firebase/app-types';\nimport {\n DataLayer,\n Gtag,\n CustomParams,\n ControlParams,\n EventParams\n} from '@firebase/analytics-types';\nimport {\n GtagCommand,\n ANALYTICS_ID_FIELD,\n GA_FID_KEY,\n ORIGIN_KEY,\n GTAG_URL\n} from './constants';\nimport { FirebaseInstallations } from '@firebase/installations-types';\n\n/**\n * Initialize the analytics instance in gtag.js by calling config command with fid.\n *\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\n * part of the `page_view` event that's sent during the initialization\n * @param app Firebase app\n * @param gtagCore The gtag function that's not wrapped.\n */\nexport async function initializeGAId(\n app: FirebaseApp,\n installations: FirebaseInstallations,\n gtagCore: Gtag\n): Promise<void> {\n const fid = await installations.getId();\n\n // This command initializes gtag.js and only needs to be called once for the entire web app,\n // but since it is idempotent, we can call it multiple times.\n // We keep it together with other initialization logic for better code structure.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gtagCore('js' as any, new Date());\n\n // It should be the first config command called on this GA-ID\n // Initialize this GA-ID and set FID on it using the gtag config API.\n gtagCore(GtagCommand.CONFIG, app.options[ANALYTICS_ID_FIELD]!, {\n [GA_FID_KEY]: fid,\n // guard against developers accidentally setting properties with prefix `firebase_`\n [ORIGIN_KEY]: 'firebase',\n update: true\n });\n}\n\nexport function insertScriptTag(dataLayerName: string): void {\n const script = document.createElement('script');\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\n script.src = `${GTAG_URL}?l=${dataLayerName}`;\n script.async = true;\n document.head.appendChild(script);\n}\n\n/** Get reference to, or create, global datalayer.\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\")\n */\nexport function getOrCreateDataLayer(dataLayerName: string): DataLayer {\n // Check for existing dataLayer and create if needed.\n let dataLayer: DataLayer = [];\n if (Array.isArray(window[dataLayerName])) {\n dataLayer = window[dataLayerName] as DataLayer;\n } else {\n window[dataLayerName] = dataLayer;\n }\n return dataLayer;\n}\n/**\n * Wraps a standard gtag function with extra code to wait for completion of\n * relevant initialization promises before sending requests.\n *\n * @param gtagCore Basic gtag function that just appends to dataLayer\n * @param initializedIdPromisesMap Map of gaIds to their initialization promises\n */\nfunction wrapGtag(\n gtagCore: Gtag,\n initializedIdPromisesMap: { [gaId: string]: Promise<void> }\n): Function {\n return (\n command: 'config' | 'set' | 'event',\n idOrNameOrParams: string | ControlParams,\n gtagParams?: ControlParams & EventParams & CustomParams\n ) => {\n // If event, check that relevant initialization promises have completed.\n if (command === GtagCommand.EVENT) {\n let initializationPromisesToWaitFor: Array<Promise<void>> = [];\n // If there's a 'send_to' param, check if any ID specified matches\n // a FID we have begun a fetch on.\n if (gtagParams && gtagParams['send_to']) {\n let gaSendToList: string | string[] = gtagParams['send_to'];\n // Make it an array if is isn't, so it can be dealt with the same way.\n if (!Array.isArray(gaSendToList)) {\n gaSendToList = [gaSendToList];\n }\n for (const sendToId of gaSendToList) {\n const initializationPromise = initializedIdPromisesMap[sendToId];\n // Groups will not be in the map.\n if (initializationPromise) {\n initializationPromisesToWaitFor.push(initializationPromise);\n } else {\n // There is an item in 'send_to' that is not associated\n // directly with an FID, possibly a group. Empty this array\n // and let it get populated below.\n initializationPromisesToWaitFor = [];\n break;\n }\n }\n }\n\n // This will be unpopulated if there was no 'send_to' field , or\n // if not all entries in the 'send_to' field could be mapped to\n // a FID. In these cases, wait on all pending initialization promises.\n if (initializationPromisesToWaitFor.length === 0) {\n for (const idPromise of Object.values(initializedIdPromisesMap)) {\n initializationPromisesToWaitFor.push(idPromise);\n }\n }\n // Run core gtag function with args after all relevant initialization\n // promises have been resolved.\n Promise.all(initializationPromisesToWaitFor)\n // Workaround for http://b/141370449 - third argument cannot be undefined.\n .then(() =>\n gtagCore(\n GtagCommand.EVENT,\n idOrNameOrParams as string,\n gtagParams || {}\n )\n )\n .catch(e => console.error(e));\n } else if (command === GtagCommand.CONFIG) {\n const initializationPromiseToWait =\n initializedIdPromisesMap[idOrNameOrParams as string] ||\n Promise.resolve();\n initializationPromiseToWait\n .then(() => {\n gtagCore(GtagCommand.CONFIG, idOrNameOrParams as string, gtagParams);\n })\n .catch(e => console.error(e));\n } else {\n // SET command.\n // Splitting calls for CONFIG and SET to make it clear which signature\n // Typescript is checking.\n gtagCore(GtagCommand.SET, idOrNameOrParams as CustomParams);\n }\n };\n}\n\n/**\n * Creates global gtag function or wraps existing one if found.\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\n * 'event' calls that belong to the GAID associated with this Firebase instance.\n *\n * @param initializedIdPromisesMap Map of gaId to initialization promises.\n * @param dataLayerName Name of global GA datalayer array.\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified)\n */\nexport function wrapOrCreateGtag(\n initializedIdPromisesMap: { [gaId: string]: Promise<void> },\n dataLayerName: string,\n gtagFunctionName: string\n): {\n gtagCore: Gtag;\n wrappedGtag: Gtag;\n} {\n // Create a basic core gtag function\n let gtagCore: Gtag = function(..._args: unknown[]) {\n // Must push IArguments object, not an array.\n (window[dataLayerName] as DataLayer).push(arguments);\n };\n\n // Replace it with existing one if found\n if (\n window[gtagFunctionName] &&\n typeof window[gtagFunctionName] === 'function'\n ) {\n // @ts-ignore\n gtagCore = window[gtagFunctionName];\n }\n\n window[gtagFunctionName] = wrapGtag(gtagCore, initializedIdPromisesMap);\n\n return {\n gtagCore,\n wrappedGtag: window[gtagFunctionName] as Gtag\n };\n}\n\n/**\n * Returns first script tag in DOM matching our gtag url pattern.\n */\nexport function findGtagScriptOnPage(): HTMLScriptElement | null {\n const scriptTags = window.document.getElementsByTagName('script');\n for (const tag of Object.values(scriptTags)) {\n if (tag.src && tag.src.includes(GTAG_URL)) {\n return tag;\n }\n }\n return null;\n}\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\nimport { ANALYTICS_ID_FIELD } from './constants';\n\nexport const enum AnalyticsError {\n NO_GA_ID = 'no-ga-id',\n ALREADY_EXISTS = 'already-exists',\n ALREADY_INITIALIZED = 'already-initialized',\n INTEROP_COMPONENT_REG_FAILED = 'interop-component-reg-failed'\n}\n\nconst ERRORS: ErrorMap<AnalyticsError> = {\n [AnalyticsError.NO_GA_ID]:\n `\"${ANALYTICS_ID_FIELD}\" field is empty in ` +\n 'Firebase config. Firebase Analytics ' +\n 'requires this field to contain a valid measurement ID.',\n [AnalyticsError.ALREADY_EXISTS]:\n 'A Firebase Analytics instance with the measurement ID ${id} ' +\n ' already exists. ' +\n 'Only one Firebase Analytics instance can be created for each measurement ID.',\n [AnalyticsError.ALREADY_INITIALIZED]:\n 'Firebase Analytics has already been initialized.' +\n 'settings() must be called before initializing any Analytics instance' +\n 'or it will have no effect.',\n [AnalyticsError.INTEROP_COMPONENT_REG_FAILED]:\n 'Firebase Analytics Interop Component failed to instantiate'\n};\n\ninterface ErrorParams {\n [AnalyticsError.ALREADY_EXISTS]: { id: string };\n [AnalyticsError.INTEROP_COMPONENT_REG_FAILED]: { reason: Error };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory<AnalyticsError, ErrorParams>(\n 'analytics',\n 'Analytics',\n ERRORS\n);\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseAnalytics,\n Gtag,\n SettingsOptions\n} from '@firebase/analytics-types';\nimport {\n logEvent,\n setCurrentScreen,\n setUserId,\n setUserProperties,\n setAnalyticsCollectionEnabled\n} from './functions';\nimport {\n initializeGAId,\n insertScriptTag,\n getOrCreateDataLayer,\n wrapOrCreateGtag,\n findGtagScriptOnPage\n} from './helpers';\nimport { ANALYTICS_ID_FIELD } from './constants';\nimport { AnalyticsError, ERROR_FACTORY } from './errors';\nimport { FirebaseApp } from '@firebase/app-types';\nimport { FirebaseInstallations } from '@firebase/installations-types';\n\n/**\n * Maps gaId to FID fetch promises.\n */\nlet initializedIdPromisesMap: { [gaId: string]: Promise<void> } = {};\n\n/**\n * Name for window global data layer array used by GA: defaults to 'dataLayer'.\n */\nlet dataLayerName: string = 'dataLayer';\n\n/**\n * Name for window global gtag function used by GA: defaults to 'gtag'.\n */\nlet gtagName: string = 'gtag';\n\n/**\n * Reproduction of standard gtag function or reference to existing\n * gtag function on window object.\n */\nlet gtagCoreFunction: Gtag;\n\n/**\n * Wrapper around gtag function that ensures FID is sent with all\n * relevant event and config calls.\n */\nlet wrappedGtagFunction: Gtag;\n\n/**\n * Flag to ensure page initialization steps (creation or wrapping of\n * dataLayer and gtag script) are only run once per page load.\n */\nlet globalInitDone: boolean = false;\n\n/**\n * For testing\n */\nexport function resetGlobalVars(\n newGlobalInitDone = false,\n newGaInitializedPromise = {}\n): void {\n globalInitDone = newGlobalInitDone;\n initializedIdPromisesMap = newGaInitializedPromise;\n dataLayerName = 'dataLayer';\n gtagName = 'gtag';\n}\n\n/**\n * This must be run before calling firebase.analytics() or it won't\n * have any effect.\n * @param options Custom gtag and dataLayer names.\n */\nexport function settings(options: SettingsOptions): void {\n if (globalInitDone) {\n throw ERROR_FACTORY.create(AnalyticsError.ALREADY_INITIALIZED);\n }\n if (options.dataLayerName) {\n dataLayerName = options.dataLayerName;\n }\n if (options.gtagName) {\n gtagName = options.gtagName;\n }\n}\n\nexport function factory(\n app: FirebaseApp,\n installations: FirebaseInstallations\n): FirebaseAnalytics {\n const analyticsId = app.options[ANALYTICS_ID_FIELD];\n if (!analyticsId) {\n throw ERROR_FACTORY.create(AnalyticsError.NO_GA_ID);\n }\n\n if (initializedIdPromisesMap[analyticsId] != null) {\n throw ERROR_FACTORY.create(AnalyticsError.ALREADY_EXISTS, {\n id: analyticsId\n });\n }\n\n if (!globalInitDone) {\n // Steps here should only be done once per page: creation or wrapping\n // of dataLayer and global gtag function.\n\n // Detect if user has already put the gtag <script> tag on this page.\n if (!findGtagScriptOnPage()) {\n insertScriptTag(dataLayerName);\n }\n getOrCreateDataLayer(dataLayerName);\n\n const { wrappedGtag, gtagCore } = wrapOrCreateGtag(\n initializedIdPromisesMap,\n dataLayerName,\n gtagName\n );\n wrappedGtagFunction = wrappedGtag;\n gtagCoreFunction = gtagCore;\n\n globalInitDone = true;\n }\n // Async but non-blocking.\n initializedIdPromisesMap[analyticsId] = initializeGAId(\n app,\n installations,\n gtagCoreFunction\n );\n\n const analyticsInstance: FirebaseAnalytics = {\n app,\n logEvent: (eventName, eventParams, options) =>\n logEvent(\n wrappedGtagFunction,\n analyticsId,\n eventName,\n eventParams,\n options\n ),\n setCurrentScreen: (screenName, options) =>\n setCurrentScreen(wrappedGtagFunction, analyticsId, screenName, options),\n setUserId: (id, options) =>\n setUserId(wrappedGtagFunction, analyticsId, id, options),\n setUserProperties: (properties, options) =>\n setUserProperties(wrappedGtagFunction, analyticsId, properties, options),\n setAnalyticsCollectionEnabled: enabled =>\n setAnalyticsCollectionEnabled(analyticsId, enabled)\n };\n\n return analyticsInstance;\n}\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { FirebaseAnalytics } from '@firebase/analytics-types';\nimport { FirebaseAnalyticsInternal } from '@firebase/analytics-interop-types';\nimport { _FirebaseNamespace } from '@firebase/app-types/private';\nimport { factory, settings, resetGlobalVars } from './src/factory';\nimport { EventName } from './src/constants';\nimport {\n Component,\n ComponentType,\n ComponentContainer\n} from '@firebase/component';\nimport { ERROR_FACTORY, AnalyticsError } from './src/errors';\n\nimport { name, version } from './package.json';\n\ndeclare global {\n interface Window {\n [key: string]: unknown;\n }\n}\n\n/**\n * Type constant for Firebase Analytics.\n */\nconst ANALYTICS_TYPE = 'analytics';\nexport function registerAnalytics(instance: _FirebaseNamespace): void {\n instance.INTERNAL.registerComponent(\n new Component(\n ANALYTICS_TYPE,\n container => {\n // getImmediate for FirebaseApp will always succeed\n const app = container.getProvider('app').getImmediate();\n const installations = container\n .getProvider('installations')\n .getImmediate();\n\n return factory(app, installations);\n },\n ComponentType.PUBLIC\n ).setServiceProps({\n settings,\n EventName\n })\n );\n\n instance.INTERNAL.registerComponent(\n new Component('analytics-internal', internalFactory, ComponentType.PRIVATE)\n );\n\n instance.registerVersion(name, version);\n\n function internalFactory(\n container: ComponentContainer\n ): FirebaseAnalyticsInternal {\n try {\n const analytics = container.getProvider(ANALYTICS_TYPE).getImmediate();\n return {\n logEvent: analytics.logEvent\n };\n } catch (e) {\n throw ERROR_FACTORY.create(AnalyticsError.INTEROP_COMPONENT_REG_FAILED, {\n reason: e\n });\n }\n }\n}\n\nexport { factory, settings, resetGlobalVars };\n\nregisterAnalytics(firebase as _FirebaseNamespace);\n\n/**\n * Define extension behavior of `registerAnalytics`\n */\ndeclare module '@firebase/app-types' {\n interface FirebaseNamespace {\n analytics(app?: FirebaseApp): FirebaseAnalytics;\n }\n interface FirebaseApp {\n analytics(): FirebaseAnalytics;\n }\n}\n"],"names":["ErrorFactory","Component"],"mappings":"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"}