From 61b592e068f856a9a3eabb45dff68e58c393f3aa Mon Sep 17 00:00:00 2001 From: Moumita Mandal Date: Wed, 17 Nov 2021 15:09:34 +0530 Subject: [PATCH 1/5] suffix added to identify integration scripts --- analytics.js | 35 ++++++++++++++++++++--------------- rollup.intgConfig.js | 2 +- utils/constants.js | 3 ++- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/analytics.js b/analytics.js index 6f1ba5c855..a47c8d9582 100644 --- a/analytics.js +++ b/analytics.js @@ -34,6 +34,7 @@ import { INTEGRATION_LOAD_CHECK_INTERVAL, DEST_SDK_BASE_URL, CDN_INT_DIR, + INTG_SUFFIX, } from "./utils/constants"; import RudderElementBuilder from "./utils/RudderElementBuilder"; import Storage from "./utils/storage"; @@ -116,8 +117,9 @@ class Analytics { if ( this.clientIntegrations.every( (intg) => - this.dynamicallyLoadedIntegrations[configToIntNames[intg.name]] != - undefined + this.dynamicallyLoadedIntegrations[ + `${configToIntNames[intg.name]}${INTG_SUFFIX}` + ] != undefined ) ) { // logger.debug( @@ -177,38 +179,40 @@ class Analytics { // Load all the client integrations dynamically this.clientIntegrations.forEach((intg) => { const modName = configToIntNames[intg.name]; + const scriptName = `${modName}${INTG_SUFFIX}`; if (process.browser) { const modURL = `${this.destSDKBaseURL}/${modName}.min.js`; - if (!window.hasOwnProperty(modName)) { - ScriptLoader(modName, modURL); + if (!window.hasOwnProperty(scriptName)) { + ScriptLoader(scriptName, modURL); } const self = this; const interval = setInterval(function () { - if (window.hasOwnProperty(modName)) { - const intMod = window[modName]; + if (window.hasOwnProperty(scriptName)) { + const intMod = window[scriptName]; clearInterval(interval); - // logger.debug(modName, " dynamically loaded integration SDK") + // logger.debug(scriptName, " dynamically loaded integration SDK") let intgInstance; try { // logger.debug( - // modName, + // scriptName, // " [Analytics] processResponse :: trying to initialize integration ::" // ); - intgInstance = new intMod[modName](intg.config, self); + intgInstance = new intMod[scriptName](intg.config, self); intgInstance.init(); - // logger.debug(modName, " initializing destination") + // logger.debug(scriptName, " initializing destination") self.isInitialized(intgInstance).then(() => { - // logger.debug(modName, " module init sequence complete") - self.dynamicallyLoadedIntegrations[modName] = intMod[modName]; + // logger.debug(scriptName, " module init sequence complete") + self.dynamicallyLoadedIntegrations[scriptName] = + intMod[scriptName]; }); } catch (e) { logger.error( - modName, + scriptName, " [Analytics] initialize integration (integration.init()) failed", e ); @@ -230,8 +234,9 @@ class Analytics { // remove from the list which don't have support yet in SDK self.clientIntegrations = self.clientIntegrations.filter((intg) => { return ( - self.dynamicallyLoadedIntegrations[configToIntNames[intg.name]] != - undefined + self.dynamicallyLoadedIntegrations[ + `${configToIntNames[intg.name]}${INTG_SUFFIX}` + ] != undefined ); }); diff --git a/rollup.intgConfig.js b/rollup.intgConfig.js index d15d03494b..b611ec6fa2 100644 --- a/rollup.intgConfig.js +++ b/rollup.intgConfig.js @@ -63,7 +63,7 @@ if (process.env.NPM === "true") { outputFiles.push({ file: distFileName, format: "iife", - name: `${process.env.INTG_NAME}`, + name: `${process.env.INTG_NAME}_RS`, sourcemap: process.env.PROD_DEBUG_INLINE === "true" ? "inline" diff --git a/utils/constants.js b/utils/constants.js index 2a19431925..6f2ac18bf3 100644 --- a/utils/constants.js +++ b/utils/constants.js @@ -72,7 +72,7 @@ const DEST_SDK_BASE_URL = `https://cdn.rudderlabs.com/v1.1/${CDN_INT_DIR}`; const MAX_WAIT_FOR_INTEGRATION_LOAD = 10000; const INTEGRATION_LOAD_CHECK_INTERVAL = 1000; - +const INTG_SUFFIX = "_RS"; export { ReservedPropertyKeywords, ECommerceParamNames, @@ -82,6 +82,7 @@ export { DEST_SDK_BASE_URL, MAX_WAIT_FOR_INTEGRATION_LOAD, INTEGRATION_LOAD_CHECK_INTERVAL, + INTG_SUFFIX, }; /* module.exports = { MessageType: MessageType, From a823878b845207801ba4ad34c6cf920225998987 Mon Sep 17 00:00:00 2001 From: Moumita Mandal Date: Thu, 18 Nov 2021 14:37:51 +0530 Subject: [PATCH 2/5] mod name altered with scriptname --- analytics.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/analytics.js b/analytics.js index a47c8d9582..b4995b5f9c 100644 --- a/analytics.js +++ b/analytics.js @@ -178,41 +178,40 @@ class Analytics { // logger.debug("this.clientIntegrations: ", this.clientIntegrations) // Load all the client integrations dynamically this.clientIntegrations.forEach((intg) => { - const modName = configToIntNames[intg.name]; - const scriptName = `${modName}${INTG_SUFFIX}`; + const scriptName = configToIntNames[intg.name]; + const modName = `${scriptName}${INTG_SUFFIX}`; if (process.browser) { - const modURL = `${this.destSDKBaseURL}/${modName}.min.js`; - if (!window.hasOwnProperty(scriptName)) { - ScriptLoader(scriptName, modURL); + const modURL = `${this.destSDKBaseURL}/${scriptName}.min.js`; + if (!window.hasOwnProperty(modName)) { + ScriptLoader(modName, modURL); } const self = this; const interval = setInterval(function () { - if (window.hasOwnProperty(scriptName)) { - const intMod = window[scriptName]; + if (window.hasOwnProperty(modName)) { + const intMod = window[modName]; clearInterval(interval); - // logger.debug(scriptName, " dynamically loaded integration SDK") + // logger.debug(modName, " dynamically loaded integration SDK") let intgInstance; try { // logger.debug( - // scriptName, + // modName, // " [Analytics] processResponse :: trying to initialize integration ::" // ); - intgInstance = new intMod[scriptName](intg.config, self); + intgInstance = new intMod[modName](intg.config, self); intgInstance.init(); - // logger.debug(scriptName, " initializing destination") + // logger.debug(modName, " initializing destination") self.isInitialized(intgInstance).then(() => { - // logger.debug(scriptName, " module init sequence complete") - self.dynamicallyLoadedIntegrations[scriptName] = - intMod[scriptName]; + // logger.debug(modName, " module init sequence complete") + self.dynamicallyLoadedIntegrations[modName] = intMod[modName]; }); } catch (e) { logger.error( - scriptName, + modName, " [Analytics] initialize integration (integration.init()) failed", e ); From d2a5fa05f96711dc40e7ee0471ab355cf862e136 Mon Sep 17 00:00:00 2001 From: Moumita Mandal Date: Thu, 18 Nov 2021 16:39:03 +0530 Subject: [PATCH 3/5] suffix added in intg Mod name --- analytics.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/analytics.js b/analytics.js index b4995b5f9c..7be5e7c0d5 100644 --- a/analytics.js +++ b/analytics.js @@ -192,7 +192,7 @@ class Analytics { const intMod = window[modName]; clearInterval(interval); - // logger.debug(modName, " dynamically loaded integration SDK") + // logger.debug(modName, " dynamically loaded integration SDK"); let intgInstance; try { @@ -200,14 +200,15 @@ class Analytics { // modName, // " [Analytics] processResponse :: trying to initialize integration ::" // ); - intgInstance = new intMod[modName](intg.config, self); + intgInstance = new intMod[scriptName](intg.config, self); intgInstance.init(); - // logger.debug(modName, " initializing destination") + // logger.debug(modName, " initializing destination"); self.isInitialized(intgInstance).then(() => { - // logger.debug(modName, " module init sequence complete") - self.dynamicallyLoadedIntegrations[modName] = intMod[modName]; + // logger.debug(modName, " module init sequence complete"); + self.dynamicallyLoadedIntegrations[modName] = + intMod[scriptName]; }); } catch (e) { logger.error( From 6ca81c3d672dfc9cb618007adb8ad4b0d333d50e Mon Sep 17 00:00:00 2001 From: Moumita Mandal Date: Thu, 18 Nov 2021 16:44:10 +0530 Subject: [PATCH 4/5] suffix constant imported --- rollup.intgConfig.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rollup.intgConfig.js b/rollup.intgConfig.js index b611ec6fa2..4dc0baca2d 100644 --- a/rollup.intgConfig.js +++ b/rollup.intgConfig.js @@ -13,6 +13,7 @@ import brotli from "rollup-plugin-brotli"; import visualizer from "rollup-plugin-visualizer"; import * as webPackage from "./package.json"; import * as npmPackage from "./dist/rudder-sdk-js/package.json"; +import { INTG_SUFFIX } from "./utils/constants"; let distFileName = ""; let { version } = webPackage; @@ -63,7 +64,7 @@ if (process.env.NPM === "true") { outputFiles.push({ file: distFileName, format: "iife", - name: `${process.env.INTG_NAME}_RS`, + name: `${process.env.INTG_NAME}${INTG_SUFFIX}`, sourcemap: process.env.PROD_DEBUG_INLINE === "true" ? "inline" From a32116f1a5aba3cb8646ec0d0024450e9cdd875f Mon Sep 17 00:00:00 2001 From: Moumita Mandal Date: Fri, 19 Nov 2021 12:58:10 +0530 Subject: [PATCH 5/5] Proper name added for identification of intg script in window --- analytics.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/analytics.js b/analytics.js index 7be5e7c0d5..2b14bdec50 100644 --- a/analytics.js +++ b/analytics.js @@ -178,41 +178,41 @@ class Analytics { // logger.debug("this.clientIntegrations: ", this.clientIntegrations) // Load all the client integrations dynamically this.clientIntegrations.forEach((intg) => { - const scriptName = configToIntNames[intg.name]; - const modName = `${scriptName}${INTG_SUFFIX}`; + const modName = configToIntNames[intg.name]; // script URL can be constructed from this + const pluginName = `${modName}${INTG_SUFFIX}`; // this is the name of the object loaded on the window if (process.browser) { - const modURL = `${this.destSDKBaseURL}/${scriptName}.min.js`; - if (!window.hasOwnProperty(modName)) { - ScriptLoader(modName, modURL); + const modURL = `${this.destSDKBaseURL}/${modName}.min.js`; + if (!window.hasOwnProperty(pluginName)) { + ScriptLoader(pluginName, modURL); } const self = this; const interval = setInterval(function () { - if (window.hasOwnProperty(modName)) { - const intMod = window[modName]; + if (window.hasOwnProperty(pluginName)) { + const intMod = window[pluginName]; clearInterval(interval); - // logger.debug(modName, " dynamically loaded integration SDK"); + // logger.debug(pluginName, " dynamically loaded integration SDK"); let intgInstance; try { // logger.debug( - // modName, + // pluginName, // " [Analytics] processResponse :: trying to initialize integration ::" // ); - intgInstance = new intMod[scriptName](intg.config, self); + intgInstance = new intMod[modName](intg.config, self); intgInstance.init(); - // logger.debug(modName, " initializing destination"); + // logger.debug(pluginName, " initializing destination"); self.isInitialized(intgInstance).then(() => { - // logger.debug(modName, " module init sequence complete"); - self.dynamicallyLoadedIntegrations[modName] = - intMod[scriptName]; + // logger.debug(pluginName, " module init sequence complete"); + self.dynamicallyLoadedIntegrations[pluginName] = + intMod[modName]; }); } catch (e) { logger.error( - modName, + pluginName, " [Analytics] initialize integration (integration.init()) failed", e );