gatsby-plugin-rudderstack
Version:
Event tracking with RudderStack in your Gatsby frontend.
44 lines (43 loc) • 7.28 kB
JavaScript
"use strict";
var _jsxRuntime = require("react/jsx-runtime");
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
exports.onRenderBody = function (_ref, pluginOptions) {
var setHeadComponents = _ref.setHeadComponents;
var prodKey = pluginOptions.prodKey,
devKey = pluginOptions.devKey,
_pluginOptions$dataPl = pluginOptions.dataPlaneUrl,
dataPlaneUrl = _pluginOptions$dataPl === void 0 ? 'https://hosted.rudderlabs.com' : _pluginOptions$dataPl,
controlPlaneUrl = pluginOptions.controlPlaneUrl,
delayLoad = pluginOptions.delayLoad,
delayLoadTime = pluginOptions.delayLoadTime,
manualLoad = pluginOptions.manualLoad,
loadType = pluginOptions.loadType,
_pluginOptions$sdkURL = pluginOptions.sdkURL,
sdkURL = _pluginOptions$sdkURL === void 0 ? 'https://cdn.rudderlabs.com/v3' : _pluginOptions$sdkURL,
_pluginOptions$loadOp = pluginOptions.loadOptions,
loadOptions = _pluginOptions$loadOp === void 0 ? {} : _pluginOptions$loadOp;
if (!prodKey || prodKey.length < 10) console.error('Your RudderStack prodKey must be at least 10 char in length.');
if (devKey && devKey.length < 10) console.error('If present, your RudderStack devKey must be at least 10 char in length.');
var writeKey = process.env.NODE_ENV === 'production' ? prodKey : devKey;
var finalLoadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
configUrl: controlPlaneUrl || loadOptions.configUrl
});
var loadConfig = "'".concat(writeKey, "', '").concat(dataPlaneUrl, "', ").concat(JSON.stringify(finalLoadOptions));
var snippet = "!function(){\"use strict\";window.RudderSnippetVersion=\"3.0.32\";var e=\"rudderanalytics\";window[e]||(window[e]=[])\n;var rudderanalytics=window[e];if(Array.isArray(rudderanalytics)){\nif(true===rudderanalytics.snippetExecuted&&window.console&&console.error){\nconsole.error(\"RudderStack JavaScript SDK snippet included more than once.\")}else{rudderanalytics.snippetExecuted=true,\nwindow.rudderAnalyticsBuildType=\"legacy\";var sdkBaseUrl=\"".concat(sdkURL, "\";var sdkName=\"rsa.min.js\"\n;var scriptLoadingMode=\"").concat(loadType, "\"\n;var r=[\"setDefaultInstanceKey\",\"load\",\"ready\",\"page\",\"track\",\"identify\",\"alias\",\"group\",\"reset\",\"setAnonymousId\",\"startSession\",\"endSession\",\"consent\"]\n;for(var n=0;n<r.length;n++){var t=r[n];rudderanalytics[t]=function(r){return function(){var n\n;Array.isArray(window[e])?rudderanalytics.push([r].concat(Array.prototype.slice.call(arguments))):null===(n=window[e][r])||void 0===n||n.apply(window[e],arguments)\n}}(t)}try{\nnew Function('class Test{field=()=>{};test({prop=[]}={}){return prop?(prop?.property??[...prop]):import(\"\");}}'),\nwindow.rudderAnalyticsBuildType=\"modern\"}catch(o){}var d=document.head||document.getElementsByTagName(\"head\")[0]\n;var i=document.body||document.getElementsByTagName(\"body\")[0];window.rudderAnalyticsAddScript=function(e,r,n){\nvar t=document.createElement(\"script\");t.src=e,t.setAttribute(\"data-loader\",\"RS_JS_SDK\"),r&&n&&t.setAttribute(r,n),\n\"async\"===scriptLoadingMode?t.async=true:\"defer\"===scriptLoadingMode&&(t.defer=true),\nd?d.insertBefore(t,d.firstChild):i.insertBefore(t,i.firstChild)},window.rudderAnalyticsMount=function(){!function(){\nif(\"undefined\"==typeof globalThis){var e;var r=function getGlobal(){\nreturn\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:null}();r&&Object.defineProperty(r,\"globalThis\",{\nvalue:r,configurable:true})}\n}(),window.rudderAnalyticsAddScript(\"\".concat(sdkBaseUrl,\"/\").concat(window.rudderAnalyticsBuildType,\"/\").concat(sdkName),\"data-rsa-write-key\",\"").concat(writeKey, "\")\n},\n\"undefined\"==typeof Promise||\"undefined\"==typeof globalThis?window.rudderAnalyticsAddScript(\"https://polyfill-fastly.io/v3/polyfill.min.js?version=3.111.0&features=Symbol%2CPromise&callback=rudderAnalyticsMount\"):window.rudderAnalyticsMount()}}}();");
var instantLoader = "".concat(snippet).concat(manualLoad ? "" : "window.rudderanalytics.load(".concat(loadConfig, ")"), ";");
var delayedLoader = "\n window.rudderSnippetLoaded = false;\n window.rudderSnippetLoading = false;\n window.rudderSnippetLoadedCallback = undefined;\n window.rudderSnippetLoader = function (callback) {\n if (!window.rudderSnippetLoaded && !window.rudderSnippetLoading) {\n window.rudderSnippetLoading = true;\n function loader() {\n ".concat(snippet, "\n window.rudderanalytics.load(").concat(loadConfig, ");\n window.rudderSnippetLoading = false;\n window.rudderSnippetLoaded = true;\n if (callback) { callback(); }\n if (window.rudderSnippetLoadedCallback) {\n window.rudderSnippetLoadedCallback();\n window.rudderSnippetLoadedCallback = undefined;\n }\n };\n\n \"requestIdleCallback\" in window\n ? requestIdleCallback(function () { loader(); })\n : loader();\n }\n }\n window.addEventListener('scroll',function () {window.rudderSnippetLoader()}, { once: true });\n setTimeout(\n function () {\n \"requestIdleCallback\" in window\n ? requestIdleCallback(function () { window.rudderSnippetLoader(); })\n : window.rudderSnippetLoader();\n },\n ").concat(delayLoadTime, " || 1000\n );\n ");
var snippetToUse = "".concat(delayLoad && !manualLoad ? delayedLoader : instantLoader);
if (writeKey) {
var tags = [(0, _jsxRuntime.jsx)("script", {
dangerouslySetInnerHTML: {
__html: snippetToUse
}
}, "plugin-rudderstack")];
setHeadComponents(tags);
}
};