From 3cc48f6df663e73c718c07ced3ec386d93349292 Mon Sep 17 00:00:00 2001 From: Leonardo Venturini Date: Sun, 5 Jul 2020 13:27:19 -0400 Subject: [PATCH] add option to disable location origin on iframes --- packages/dynamic-import/client.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/dynamic-import/client.js b/packages/dynamic-import/client.js index 91eefc4e3c..61f0410775 100644 --- a/packages/dynamic-import/client.js +++ b/packages/dynamic-import/client.js @@ -2,6 +2,11 @@ var Module = module.constructor; var cache = require("./cache.js"); var meteorInstall = require("meteor/modules").meteorInstall; +var dynamicImportSettings = Meteor.settings + && Meteor.settings.public + && Meteor.settings.public.packages + && Meteor.settings.public.packages.dynamicImport; + // Call module.dynamicImport(id) to fetch a module and any/all of its // dependencies that have not already been fetched, and evaluate them as // soon as they arrive. This runtime API makes it very easy to implement @@ -116,7 +121,7 @@ exports.setSecretKey = function (key) { secretKey = key; }; -const fetchURL = require("./common.js").fetchURL; +var fetchURL = require("./common.js").fetchURL; function inIframe() { try { @@ -136,16 +141,15 @@ function fetchMissing(missingTree) { // import() request, so it's a good idea for ROOT_URL to match // location.host if possible, though not strictly necessary. - let url = fetchURL; + var url = fetchURL; - // Lo and behold! - const useDynamicOrigin = Meteor.settings - && Meteor.settings.public - && Meteor.settings.public.packages - && Meteor.settings.public.packages.dynamicImport - && Meteor.settings.public.packages.dynamicImport.useDynamicOrigin; + var useLocationOrigin = dynamicImportSettings + && dynamicImportSettings.useLocationOrigin; - if (useDynamicOrigin && location && !inIframe()) { + var disableLocationOriginIframe = dynamicImportSettings + && dynamicImportSettings.disableLocationOriginIframe; + + if (useLocationOrigin && location && !(disableLocationOriginIframe && inIframe())) { url = location.origin.concat(url); } else { url = Meteor.absoluteUrl(url);