summaryrefslogtreecommitdiffstats
path: root/server/google-analytics.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/google-analytics.js')
-rw-r--r--server/google-analytics.js28
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,
+};