@ecomplus/utils
Version:
JS utility functions to E-Com Plus (not only) related apps
131 lines (121 loc) • 4.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.string.replace.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.symbol.iterator.js");
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/web.dom-collections.iterator.js");
var _globals = require("./globals");
var _constants = require("./constants");
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); }
// check for predefined config options
var getConfig = function getConfig(prop) {
if ((typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && document) {
// DOM object
// try to get config from HTML meta tags
var metas = document.getElementsByTagName('meta');
for (var i = 0; i < metas.length; i++) {
// parse prop name to kebab case and check meta tag name
if (metas[i].getAttribute('name') === prop.replace(/_/g, '-')) {
var val = metas[i].getAttribute('content');
// returns int for Store ID or string for others
return prop === 'ecom_store_id' ? parseInt(val, 10) : val;
}
}
}
// try to get config prop from env (global) object
return _globals.env[prop.toUpperCase()];
};
/**
* @namespace $ecomConfig
* @description
* General config values for E-Com Plus apps.
* It tries to get values from metatags or `window` on browser,
* or `proccess.env` on Node.js environments,
* when undefineds it uses
* [predefined constants]{@link https://github.com/ecomclub/ecomplus-utils/blob/master/src/lib/constants.js}.
* <br><br>
* Check all common config properties on
* [`src/lib/config.js`]{@link https://github.com/ecomclub/ecomplus-utils/blob/master/src/lib/config.js}
* file.
*
* @example
// Preset config on browser with HTML meta tags
<meta name="ecom-store-id" content="1011">
<meta name="ecom-store-object-id" content="5b1abe30a4d4531b8fe40725">
<meta name="ecom-lang" content="pt_br">
* @example
// Preset config on browser with JS window
window.ECOM_STORE_ID = 1011
window.ECOM_STORE_OBJECT_ID = '5b1abe30a4d4531b8fe40725'
window.ECOM_LANG = 'pt_br'
* @example
// Preset config on Node.js env
process.env.ECOM_STORE_ID = 1011
process.env.ECOM_STORE_OBJECT_ID = '5b1abe30a4d4531b8fe40725'
process.env.ECOM_LANG = 'pt_br'
*/
// setup config object
var config = {};
['lang', 'currency', 'currency_symbol', 'country_code', 'store_id', 'store_object_id'].forEach(function (prop) {
config[prop] = getConfig('ecom_' + prop);
});
// exports fuctions to get and set config props
var _default = exports.default = {
/**
* @memberof $ecomConfig
* @description Get the stored value for specified config property.
* @param {string} prop - Configuration property
* @example
* $ecomConfig.get('store_id')
* // => 1011
* $ecomConfig.get('currency')
* // => 'USD'
* $ecomConfig.get('currency_symbol')
* // => '$'
*/
get: function get(prop) {
// try to get stored value from config object first
var value = config[prop];
if (value !== undefined && value !== null && value !== '') {
return value;
} else {
// return default value from constants
switch (prop) {
case 'lang':
return _constants.DEFAULT_LANG;
case 'currency':
return _constants.DEFAULT_CURRENCY;
case 'currency_symbol':
return _constants.DEFAULT_CURRENCY_SYMBOL;
case 'country_code':
return _constants.DEFAULT_COUNTRY_CODE;
case 'store_id':
return _constants.DEFAULT_STORE_ID;
case 'store_object_id':
return _constants.DEFAULT_STORE_OBJECT_ID;
// 'channel_id', 'page_resource', 'page_object_id'
}
}
return null;
},
/**
* @memberof $ecomConfig
* @description Save the value for specified config property.
* @param {string} prop - Configuration property
* @param {string} value - New prop value
* @example
* $ecomConfig.set('store_id', 1012)
*/
set: function set(prop, value) {
// save prop value on config object
config[prop] = value;
}
};