From cba9d4637ab7200b2fa5ad690384b6ccbab1db37 Mon Sep 17 00:00:00 2001 From: Mateusz Krzeszowiak Date: Sun, 5 Apr 2020 10:31:37 +0200 Subject: [PATCH 1/3] Load storage polyfill conditionally --- .../Theme/view/base/requirejs-config.js | 35 ++++++++++++++----- .../frontend/layout/default_head_blocks.xml | 1 - 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Theme/view/base/requirejs-config.js b/app/code/Magento/Theme/view/base/requirejs-config.js index f5580461f7d9e..7da527b691db5 100644 --- a/app/code/Magento/Theme/view/base/requirejs-config.js +++ b/app/code/Magento/Theme/view/base/requirejs-config.js @@ -4,8 +4,8 @@ */ var config = { - 'waitSeconds': 0, - 'map': { + waitSeconds: 0, + map: { '*': { 'ko': 'knockoutjs/knockout', 'knockout': 'knockoutjs/knockout', @@ -13,7 +13,7 @@ var config = { 'rjsResolver': 'mage/requirejs/resolver' } }, - 'shim': { + shim: { 'jquery/jquery-migrate': ['jquery'], 'jquery/jstree/jquery.hotkeys': ['jquery'], 'jquery/hover-intent': ['jquery'], @@ -28,7 +28,7 @@ var config = { }, 'magnifier/magnifier': ['jquery'] }, - 'paths': { + paths: { 'jquery/validate': 'jquery/jquery.validate', 'jquery/hover-intent': 'jquery/jquery.hoverIntent', 'jquery/file-uploader': 'jquery/fileUploader/jquery.fileupload-fp', @@ -40,11 +40,11 @@ var config = { 'tinycolor': 'jquery/spectrum/tinycolor', 'jquery-ui-modules': 'jquery/ui-modules' }, - 'deps': [ + deps: [ 'jquery/jquery-migrate' ], - 'config': { - 'mixins': { + config: { + mixins: { 'jquery/jstree/jquery.jstree': { 'mage/backend/jstree-mixin': true }, @@ -52,7 +52,7 @@ var config = { 'jquery/patches/jquery': true } }, - 'text': { + text: { 'headers': { 'X-Requested-With': 'XMLHttpRequest' } @@ -60,6 +60,25 @@ var config = { } }; +/** + * Adds polyfills only for browser contexts which prevents bundlers from including them. + */ +if (typeof window !== "undefined" && window.document) { + /** + * Polyfill localStorage and sessionStorage for browsers that do not support them. + */ + try { + if (!window.localStorage || !window.sessionStorage) { + throw new Error(); + } + + localStorage.setItem('storage_test', 1); + localStorage.removeItem('storage_test'); + } catch (e) { + config.deps.push('mage/polyfill'); + } +} + require(['jquery'], function ($) { 'use strict'; diff --git a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml index a4a10ef3f6ee9..96f8fbed4c041 100644 --- a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml +++ b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml @@ -10,7 +10,6 @@