import development from "./commons/environment/development.env"; import production from "./commons/environment/production.env"; import { Configuration } from "./loader/config"; import defaultConfig from "./loader/default.config"; /** * Main RecSys integration module. * * @export * @abstract * @class RecSys */ export default abstract class RecSys { /** * Initialization method. This needs to be run before using any of this * modules features. * * @static * @param {Configuration} config Store configuration. * @memberof RecSys */ public static init(config: Configuration) { window._RecSys = window._RecSys || {}; window._RecSys.Bundle = window._RecSys.Bundle; // eslint-disable-line const properties = this.env(config) === "production" ? production : development; window._RecSys.Bundle = { Properties: properties(config.store.slug), Configuration: this.mergeConfig(config), Version: "__version__", Environment: this.env(config), }; } /** * Merge current configuration provided by the store with * the default configuration, filling in the blanks. * * @static * @param {Configuration} config Current configuration * @return {Configuration} * @memberof RecSys */ public static mergeConfig(config: Configuration): Configuration { return Object.assign(defaultConfig, config); } /** * Environment running right now. * NOTE: This comes from `recsys build`. * * @private * @static * @param {Configuration} config Configuration * @return {string} Current environment * @memberof RecSys */ private static env(config: Configuration): string { return config.environment || "__environment__"; } }