| Current Path : /home/rtorresani/www/vendor/magento/module-customer/view/frontend/web/js/ |
| Current File : //home/rtorresani/www/vendor/magento/module-customer/view/frontend/web/js/section-config.js |
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define(['underscore'], function (_) {
'use strict';
var baseUrls = [],
sections = [],
clientSideSections = [],
sectionNames = [],
canonize;
/**
* @param {String} url
* @return {String}
*/
canonize = function (url) {
var route = url;
_.some(baseUrls, function (baseUrl) {
route = url.replace(baseUrl, '');
return route !== url;
});
return route.replace(/^\/?index.php\/?/, '').toLowerCase();
};
return {
/**
* Returns a list of sections which should be invalidated for given URL.
* @param {String} url - URL which was requested.
* @return {Object} - List of sections to invalidate.
*/
getAffectedSections: function (url) {
var route = canonize(url),
actions = _.find(sections, function (val, section) {
var matched;
// Covers the case where "*" works as a glob pattern.
if (section.indexOf('*') >= 0) {
section = section.replace(/\*/g, '[^/]+') + '$';
matched = route.match(section);
return matched && matched[0] === route;
}
return route.indexOf(section) === 0;
});
return _.union(_.toArray(actions), sections['*']);
},
/**
* Filters the list of given sections to the ones defined as client side.
* @param {Object} allSections - List of sections to check.
* @return {Object} - List of filtered sections.
*/
filterClientSideSections: function (allSections) {
return _.difference(allSections, clientSideSections);
},
/**
* Tells if section is defined as client side.
* @param {String} sectionName - Name of the section to check.
* @return {Boolean}
*/
isClientSideSection: function (sectionName) {
return _.contains(clientSideSections, sectionName);
},
/**
* Returns array of section names.
* @returns {Array}
*/
getSectionNames: function () {
return sectionNames;
},
/**
* @param {Object} options
* @constructor
*/
'Magento_Customer/js/section-config': function (options) {
baseUrls = options.baseUrls;
sections = options.sections;
clientSideSections = options.clientSideSections;
sectionNames = options.sectionNames;
}
};
});