diff options
Diffstat (limited to 'server/google-analytics.js')
-rw-r--r-- | server/google-analytics.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/server/google-analytics.js b/server/google-analytics.js new file mode 100644 index 0000000..57ae7b7 --- /dev/null +++ b/server/google-analytics.js @@ -0,0 +1,28 @@ +const jsesc = require("jsesc"); +const { escape } = require("html-escaper"); + +/** + * Returns a string that represents the javascript that is required to insert the Google Analytics scripts + * into a webpage. + * @param {string} tagId Google UA/G/AW/DC Property ID to use with the Google Analytics script. + * @returns {string} HTML script tags to inject into page + */ +function getGoogleAnalyticsScript(tagId) { + let escapedTagIdJS = jsesc(tagId, { isScriptContext: true }); + + if (escapedTagIdJS) { + escapedTagIdJS = escapedTagIdJS.trim(); + } + + // Escape the tag ID for use in an HTML attribute. + let escapedTagIdHTMLAttribute = escape(tagId); + + return ` + <script async src="https://www.googletagmanager.com/gtag/js?id=${escapedTagIdHTMLAttribute}"></script> + <script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date());gtag('config', '${escapedTagIdJS}'); </script> + `; +} + +module.exports = { + getGoogleAnalyticsScript, +}; |