delighted-loader
Version:
Async loader for the delighted api (browser, typescript)
68 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Loader = void 0;
class Loader {
constructor(apiKey = null) {
this.apiKey = apiKey;
if (typeof window === 'undefined') {
throw new Error('delighted is supported only in browser environment');
}
}
load() {
if (typeof this.api !== 'undefined') {
return Promise.resolve(this.api);
}
if (typeof this.loader !== 'undefined') {
return this.loader;
}
return this.loader = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
if (window['delighted']) {
resolve(window['delighted']);
return;
}
const functions = [
"survey",
"reset",
"config",
"init",
"set",
"get",
"event",
"identify",
"track",
"page",
"screen",
"group",
"alias"
];
const delighted = window['delighted'] = [];
for (var idx = 0; idx < functions.length; idx++) {
var func = functions[idx];
delighted[func] = delighted[func] || function (functionName) {
return function () {
var t = Array.prototype.slice.call(arguments);
delighted.push([functionName, t]);
};
}(func);
}
delighted['SNIPPET_VERSION'] = "1.0.1";
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = !0;
script.src = 'https://d2yyd1h5u9mauk.cloudfront.net/integrations/web/v1/library/' + this.apiKey + '/' + 'delighted' + '.js';
script.onload = () => {
resolve(delighted);
};
script.onerror = (error) => {
reject(error);
};
document.head.appendChild(script);
// var p = document.getElementsByTagName("script")[0];
// p.parentNode.insertBefore(o,p)
});
}
}
exports.Loader = Loader;
//# sourceMappingURL=loader.js.map