-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathga-task-manager.js.map
1 lines (1 loc) · 11.9 KB
/
ga-task-manager.js.map
1
{"version":3,"sources":["lib/index.js","lib/provide.js","lib/utilities.js"],"names":["constructor","GaTaskManager","tracker","registry","gaTaskNames","addFunctionToTask","bind","removeFunctionFromTask","setCustomDimension","unsetCustomDimension","forEach","gaTaskName","get","set","model","userTask","hasOwnProperty","userTaskName","taskFunction","index","value","auxValue","auxType","Error","name","toString","remove","originalTaskFunction","provide","pluginName","pluginConstructor","gaAlias","window","GoogleAnalyticsObject","push","q","args","gaplugins","charAt","toUpperCase","slice"],"mappings":"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","file":"","sourcesContent":["import provide from './provide';\n\n/**\n * Class for the `ga-task-manager` analytics.js plugin.\n * @implements {GaTaskManagerPublicInterface}\n */\nclass GaTaskManager {\n /**\n * Registers declarative event tracking.\n * @param {!Tracker} tracker Passed internally by analytics.js\n */\n constructor(tracker) {\n this.tracker = tracker;\n this.registry = {};\n // @see https://developers.google.com/analytics/devguides/collection/analyticsjs/tasks\n this.gaTaskNames = [\n 'customTask',\n 'previewTask',\n 'checkProtocolTask',\n 'validationTask',\n 'checkStorageTask',\n 'historyImportTask',\n 'samplerTask',\n 'buildHitTask',\n 'sendHitTask',\n 'timingTask',\n 'displayFeaturesTask'\n ];\n\n // Bind methods.\n this.addFunctionToTask = this.addFunctionToTask.bind(this);\n this.removeFunctionFromTask = this.removeFunctionFromTask.bind(this);\n this.setCustomDimension = this.setCustomDimension.bind(this);\n this.unsetCustomDimension = this.unsetCustomDimension.bind(this);\n\n this.gaTaskNames.forEach((gaTaskName) => {\n this.registry[gaTaskName] = {};\n // Grab a reference to the default function for this task and register it as the first task.\n this.addFunctionToTask(gaTaskName, 'original', tracker.get(gaTaskName));\n\n // Override the GA Tracker's task with our task manager executor which calls all user tasks added to the registry.\n this.tracker.set(gaTaskName, (model) => {\n for (var userTask in this.registry[gaTaskName]) {\n if (this.registry[gaTaskName].hasOwnProperty(userTask)) {\n this.registry[gaTaskName][userTask](model);\n }\n }\n });\n });\n }\n\n /**\n * Adds a function to be executed at the specified GA Task.\n * @param {string} gaTaskName The name of the GA Task to add the taskFunction to.\n * @param {string} userTaskName An arbitrary name for the task performed by the taskFunction.\n * @param {function(!Model)} taskFunction The function to be added to the execution stack of the GA Task specified in gaTaskName.\n * The GA Model Object (https://developers.google.com/analytics/devguides/collection/analyticsjs/model-object-reference) will be passed to it at time of execution.\n */\n addFunctionToTask(gaTaskName, userTaskName, taskFunction) {\n if (this.registry[gaTaskName]) {\n this.registry[gaTaskName][userTaskName] = taskFunction;\n }\n }\n\n /**\n * Removes a function from the specified GA Task by the name given by the user.\n * @param {string} gaTaskName The name of the GA Task to remove the task from.\n * @param {string} userTaskName The arbitrary name for the task given to addFunctionToTask.\n */\n removeFunctionFromTask(gaTaskName, userTaskName) {\n if (this.registry[gaTaskName] && this.registry[gaTaskName][userTaskName]) {\n delete this.registry[gaTaskName][userTaskName];\n }\n }\n\n /**\n * Adds a function which sets a GA Custom Dimension at the specified GA Task execution time. Defaults to execution on the customTask Task.\n * @param {string} index The index of your dimension as defined in your Google Analytics property settings.\n * @param {string|number|function(): string|number} value Arbitrary string, number or function to set value for the dimension.\n * If a function is given, it will be executed every time at the moment of task execution.\n * If a number is given, it will be cast automatically to a string by calling Number.toString() method.\n * Observe size limit for the string value https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#customs\n * @param {string} gaTaskName The name of the GA Task on which to set the Custom Dimension. Defaults to 'customTask'.\n */\n setCustomDimension(index, value, gaTaskName = 'customTask') {\n const userTaskName = 'customDimension' + index;\n this.addFunctionToTask(gaTaskName, userTaskName, function(model){\n let auxValue = value;\n // If user provided a function to set value at execution time, then type check itsreturn value.\n if (typeof value == 'function') {\n auxValue = value();\n const auxType = typeof auxValue;\n if (auxType != 'string' && auxType != 'number') {\n throw new Error('Function ' + value.name + ' must return a string or number. Got ' + auxType + 'instead.');\n }\n }\n\n if (typeof auxValue === 'number') auxValue = auxValue.toString();\n\n // Set the dimension value to be sent to GA.\n model.set('dimension' + index, auxValue);\n });\n }\n\n /**\n * Removes a function added with setCustomDimension.\n * @param {string} index The index of your dimension as defined in your Google Analytics property settings.\n * @param {string} gaTaskName The name of the GA Task to add the taskFunction to.\n */\n unsetCustomDimension(index, gaTaskName = 'customTask') {\n const userTaskName = 'customDimension' + index;\n this.removeFunctionFromTask(gaTaskName, userTaskName);\n }\n\n /**\n * Resets all Tasks of the Tracker to the original function registered at the moment the plugin was required.\n */\n remove() {\n this.gaTaskNames.forEach((gaTaskName) => {\n const originalTaskFunction = this.registry[gaTaskName]['original'];\n this.tracker.set(gaTaskName, originalTaskFunction);\n });\n }\n}\n\nprovide('gaTaskManager', GaTaskManager);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\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 * Modifications Copyright (C) 2017 Anki, Inc\n */\n\n\nimport {capitalize} from './utilities';\n\n\n/**\n * Provides a plugin for use with analytics.js, accounting for the possibility\n * that the global command queue has been renamed or not yet defined.\n * @param {string} pluginName The plugin name identifier.\n * @param {Function} pluginConstructor The plugin constructor function.\n */\nexport default function provide(pluginName, pluginConstructor) {\n const gaAlias = window.GoogleAnalyticsObject || 'ga';\n window[gaAlias] = window[gaAlias] || function(...args) {\n (window[gaAlias].q = window[gaAlias].q || []).push(args);\n };\n\n // Formally provides the plugin for use with analytics.js.\n window[gaAlias]('provide', pluginName, pluginConstructor);\n\n // Registers the plugin on the global gaplugins object.\n window.gaplugins = window.gaplugins || {};\n window.gaplugins[capitalize(pluginName)] = pluginConstructor;\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\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 * Modifications Copyright (C) 2018 Anki, Inc.\n */\n\n/**\n * A small shim of Object.assign that aims for brevity over spec-compliant\n * handling all the edge cases.\n * @param {!Object} target The target object to assign to.\n * @param {...?Object} sources Additional objects who properties should be\n * assigned to target. Non-objects are converted to objects.\n * @return {!Object} The modified target object.\n */\nexport const assign = Object.assign || function(target, ...sources) {\n for (let i = 0, len = sources.length; i < len; i++) {\n const source = Object(sources[i]);\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\n\n\n/**\n * Capitalizes the first letter of a string.\n * @param {string} str The input string.\n * @return {string} The capitalized string\n */\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n"]}