@interopio/ng
Version:
IO Connect library for Angular - Browser and Desktop
72 lines • 11.4 kB
JavaScript
import { Injectable } from "@angular/core";
import { Subject } from "rxjs";
import * as i0 from "@angular/core";
import * as i1 from "./glue-config.service";
export class IOConnectInitializer {
constructor(configService) {
this.configService = configService;
this.defaultInitTimeoutMilliseconds = 60000;
this.initializationSource = new Subject();
}
start() {
try {
this.configService.verifyConfig();
}
catch (error) {
this.initializationSource.next({ error: { message: error.message } });
this.initializationSource.complete();
return Promise.resolve();
}
const config = this.configService.getConfig();
const factory = this.configService.getFactory();
if (!factory) {
const errorMessage = "Initialization failed, because no Glue Factory function was found. Please provide a factory function when importing the Glue42Ng module. Alternatively make sure there is a GlueWeb or Glue or GlueWebPlatform function attached to the global window object";
this.initializationSource.next({ error: { message: errorMessage } });
this.initializationSource.complete();
return Promise.resolve();
}
const gluePromise = this.safeCallFactory(config, factory, this.defaultInitTimeoutMilliseconds, `Glue factory timeout hit. Set at: ${this.defaultInitTimeoutMilliseconds} milliseconds`)
.then((glueResult) => {
this.initializationSource.next({ glueInstance: glueResult.glue });
this.initializationSource.complete();
})
.catch((error) => {
this.initializationSource.next({ error });
this.initializationSource.complete();
});
return this.configService.getSettings().holdInit ? gluePromise : Promise.resolve();
}
onState() {
return this.initializationSource.asObservable();
}
safeCallFactory(config, factory, timeoutMilliseconds, timeoutMessage) {
return new Promise((resolve, reject) => {
let timeoutHit = false;
const timeout = setTimeout(() => {
timeoutHit = true;
const message = timeoutMessage;
reject(message);
}, timeoutMilliseconds);
factory(config)
.then((result) => {
if (!timeoutHit) {
clearTimeout(timeout);
const glue = result.glue || result.io || result;
resolve({ glue });
}
})
.catch((error) => {
if (!timeoutHit) {
clearTimeout(timeout);
reject(error);
}
});
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IOConnectInitializer, deps: [{ token: i1.IOConnectConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IOConnectInitializer }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IOConnectInitializer, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.IOConnectConfigService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS1pbml0aWFsaXplci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nbHVlLWluaXRpYWxpemVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFJM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUk3QixZQUE2QixhQUFxQztRQUFyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFIakQsbUNBQThCLEdBQUcsS0FBSyxDQUFDO1FBQ2hELHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUErRSxDQUFDO0lBRXBELENBQUM7SUFFaEUsS0FBSztRQUVSLElBQUk7WUFDQSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFHLEtBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWhELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixNQUFNLFlBQVksR0FBRyw4UEFBOFAsQ0FBQztZQUNwUixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLHFDQUFxQyxJQUFJLENBQUMsOEJBQThCLGVBQWUsQ0FBQzthQUNsTCxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxNQUFXLEVBQUUsT0FBWSxFQUFFLG1CQUEyQixFQUFFLGNBQXNCO1FBQ2xHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBRXZCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBRWxCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQztnQkFFL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BCLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBRXhCLE9BQU8sQ0FBQyxNQUFNLENBQUM7aUJBQ1YsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUV0QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDO29CQUVoRCxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNyQjtZQUNMLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDYixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDakI7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F4RVEsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElPQ29ubmVjdERlc2t0b3AgfSBmcm9tIFwiQGludGVyb3Bpby9kZXNrdG9wXCI7XG5pbXBvcnQgeyBJT0Nvbm5lY3RCcm93c2VyIH0gZnJvbSBcIkBpbnRlcm9waW8vYnJvd3NlclwiO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJT0Nvbm5lY3RDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4vZ2x1ZS1jb25maWcuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSU9Db25uZWN0SW5pdGlhbGl6ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEluaXRUaW1lb3V0TWlsbGlzZWNvbmRzID0gNjAwMDA7XG4gICAgcHJpdmF0ZSBpbml0aWFsaXphdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PHsgZ2x1ZUluc3RhbmNlPzogSU9Db25uZWN0QnJvd3Nlci5BUEkgfCBJT0Nvbm5lY3REZXNrdG9wLkFQSTsgZXJyb3I/OiBhbnkgfT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogSU9Db25uZWN0Q29uZmlnU2VydmljZSkgeyB9XG5cbiAgICBwdWJsaWMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS52ZXJpZnlDb25maWcoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Tb3VyY2UubmV4dCh7IGVycm9yOiB7IG1lc3NhZ2U6IChlcnJvciBhcyBhbnkpLm1lc3NhZ2UgfSB9KTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Tb3VyY2UuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRGYWN0b3J5KCk7XG5cbiAgICAgICAgaWYgKCFmYWN0b3J5KSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBcIkluaXRpYWxpemF0aW9uIGZhaWxlZCwgYmVjYXVzZSBubyBHbHVlIEZhY3RvcnkgZnVuY3Rpb24gd2FzIGZvdW5kLiBQbGVhc2UgcHJvdmlkZSBhIGZhY3RvcnkgZnVuY3Rpb24gd2hlbiBpbXBvcnRpbmcgdGhlIEdsdWU0Mk5nIG1vZHVsZS4gQWx0ZXJuYXRpdmVseSBtYWtlIHN1cmUgdGhlcmUgaXMgYSBHbHVlV2ViIG9yIEdsdWUgb3IgR2x1ZVdlYlBsYXRmb3JtIGZ1bmN0aW9uIGF0dGFjaGVkIHRvIHRoZSBnbG9iYWwgd2luZG93IG9iamVjdFwiO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXphdGlvblNvdXJjZS5uZXh0KHsgZXJyb3I6IHsgbWVzc2FnZTogZXJyb3JNZXNzYWdlIH0gfSk7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemF0aW9uU291cmNlLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBnbHVlUHJvbWlzZSA9IHRoaXMuc2FmZUNhbGxGYWN0b3J5KGNvbmZpZywgZmFjdG9yeSwgdGhpcy5kZWZhdWx0SW5pdFRpbWVvdXRNaWxsaXNlY29uZHMsIGBHbHVlIGZhY3RvcnkgdGltZW91dCBoaXQuIFNldCBhdDogJHt0aGlzLmRlZmF1bHRJbml0VGltZW91dE1pbGxpc2Vjb25kc30gbWlsbGlzZWNvbmRzYClcbiAgICAgICAgICAgIC50aGVuKChnbHVlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXphdGlvblNvdXJjZS5uZXh0KHsgZ2x1ZUluc3RhbmNlOiBnbHVlUmVzdWx0LmdsdWUgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXphdGlvblNvdXJjZS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemF0aW9uU291cmNlLm5leHQoeyBlcnJvciB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemF0aW9uU291cmNlLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldFNldHRpbmdzKCkuaG9sZEluaXQgPyBnbHVlUHJvbWlzZSA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN0YXRlKCk6IE9ic2VydmFibGU8eyBnbHVlSW5zdGFuY2U/OiBJT0Nvbm5lY3RCcm93c2VyLkFQSSB8IElPQ29ubmVjdERlc2t0b3AuQVBJOyBlcnJvcj86IGFueSB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemF0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZUNhbGxGYWN0b3J5KGNvbmZpZzogYW55LCBmYWN0b3J5OiBhbnksIHRpbWVvdXRNaWxsaXNlY29uZHM6IG51bWJlciwgdGltZW91dE1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8eyBnbHVlOiBJT0Nvbm5lY3REZXNrdG9wLkFQSSB8IElPQ29ubmVjdEJyb3dzZXIuQVBJIH0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCB0aW1lb3V0SGl0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0SGl0ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aW1lb3V0TWVzc2FnZTtcblxuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH0sIHRpbWVvdXRNaWxsaXNlY29uZHMpO1xuXG4gICAgICAgICAgICBmYWN0b3J5KGNvbmZpZylcbiAgICAgICAgICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aW1lb3V0SGl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsdWUgPSByZXN1bHQuZ2x1ZSB8fCByZXN1bHQuaW8gfHwgcmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgZ2x1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGltZW91dEhpdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=