UNPKG

1.42 kBJavaScriptView Raw
1/**
2 * Singelton object to register all user functions.
3 */
4import dataLayerPush from "./helpers/dataLayerPush"
5import forEach from "lodash-es/forEach"
6import isUndefined from "lodash-es/isUndefined"
7import isFunction from "lodash-es/isFunction"
8
9class MeasurementFramework {
10
11 constructor() {
12 this.registered = []
13 this.vars = {}
14 this.a = "__mf_lock"
15 }
16
17 register(func) {
18 if (isFunction(func)) {
19 this.registered.push(func)
20 } else {
21 console.warn("Measurement Framework received a non-function.", func)
22 }
23
24 }
25
26 init() {
27 let self = this
28 if (isUndefined(window[this.a])) {
29 console.log("Measurement Framework Loaded with " + this.registered.length + " tasks.")
30 forEach(this.registered, function (registeredFunc) {
31 let funcInitDataLayer = registeredFunc()
32 forEach(funcInitDataLayer, function (value, key) {
33 self.vars[key] = value
34 })
35 })
36 window[this.a] = true
37 dataLayerPush("Measurement Framework Loaded", {
38 "mfDebug": this.registered.length + " tasks registered."
39 })
40 return self.vars
41 } else {
42 console.log("Measurement Framework already loaded. Skipping initialization")
43 }
44
45 }
46}
47
48
49export default new MeasurementFramework()
\No newline at end of file