UNPKG

@netvlies/utility-collection

Version:

Collection of frequently used utilities by Netvlies

95 lines (89 loc) 3.4 kB
const BUNDLE_NAME = 'NVS Utility Collection'; // Globals class Logger { constructor(appName = BUNDLE_NAME) { this.appName = appName; this.formatMessage = (message, type) => { return `[${this.appName} ${type}]: ${typeof message === 'object' ? JSON.stringify(message) : message}`; }; this.error = (message) => { console.error(this.formatMessage(message, 'error')); }; this.info = (message) => { console.info(this.formatMessage(message, 'info')); }; this.warn = (message) => { console.warn(this.formatMessage(message, 'warning')); }; } } const useLogger = (appName) => new Logger(appName); // Utils class GTM { constructor(baseEventData = {}, dataLayer = (window.dataLayer = window.dataLayer || []), logging = false) { this.baseEventData = baseEventData; this.dataLayer = dataLayer; this.logging = logging; this.logger = useLogger(); this.constructDataObject = (event, data) => { return Object.assign(Object.assign(Object.assign({ event }, this.baseEventData), data), { timestamp: new Date().getTime() }); }; this.push = (event, data) => { if (this.logging && data) { this.logger.info(data); } this.dataLayer.push(this.constructDataObject(event, data || {})); }; this.purchase = (data) => { if (this.logging) { this.logger.info(data); } this.dataLayer.push(this.constructDataObject('purchase', data || {})); }; } } const useGTM = (baseEventData, dataLayer, logging = false) => new GTM(baseEventData, dataLayer, logging); function stringify(obj, prefix = '', separator = '&') { return Object.entries(obj).reduce((queryString, [key, value]) => { const encodedKey = prefix ? encodeURIComponent(`${prefix}[${key}]`) : encodeURIComponent(key); if (typeof value === 'object' && value !== null) { const nestedQuery = stringify(value, encodedKey); return queryString ? `${queryString}${separator}${nestedQuery}` : nestedQuery; } else { const encodedValue = encodeURIComponent(value); const keyValueString = `${encodedKey}=${encodedValue}`; return queryString ? `${queryString}${separator}${keyValueString}` : keyValueString; } }, ''); } // Modules class DynamicURL { constructor(url) { this.url = url; this.logger = useLogger(); } setQueryParams(query) { this.url = `${this.url}?${stringify(query)}`; return this; } setRouteParams(replaceValue) { this.url = typeof replaceValue !== 'object' ? this.url.replace(/ *\{[^)]*\} */g, replaceValue) : Object.entries(replaceValue).reduce((acc, currentVal) => acc.replace(`{${currentVal[0]}}`, currentVal[1]), this.url); return this; } setDynamicRoute(replaceValue) { this.logger.warn('Method "setDynamicRoute" is deprecated, please use "setRouteParams" instead.'); this.setRouteParams(replaceValue); return this; } resolve() { return this.url; } } export { DynamicURL, GTM, Logger, useGTM, useLogger }; //# sourceMappingURL=index.esm.js.map