Repository URL to install this package:
|
Version:
1.2.8 ▾
|
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const identifier_1 = require("@skava/modules/___dist/identifier");
const exotic_1 = require("exotic");
const deps_1 = require("./deps");
class LoadableContext {
constructor(asyncRequire) {
this.asyncRequire = asyncRequire;
this.isLoaded = this.existing !== undefined;
}
get componentName() {
return identifier_1.toComponentName(this.resolved);
}
get existing() {
return deps_1.ALL_INITIALIZERS.has(this.asyncRequire)
? deps_1.ALL_INITIALIZERS.get(this.asyncRequire)
: undefined;
}
init() {
if (this.resolved === undefined && exotic_1.isPromise(this.asyncRequire) === true) {
return new Promise(resolve => this.asyncRequire
.then(resolved => {
this.resolved = deps_1.toExport(resolved);
this.isLoaded = true;
deps_1.ALL_INITIALIZERS.set(this.asyncRequire, this.resolved);
resolve(this.resolved);
})
.catch(asyncError => {
throw asyncError;
}));
}
else {
return this.resolved;
}
}
wait() {
return __awaiter(this, void 0, void 0, function* () {
return new Promise(resolve => {
const resolved = this.init();
exotic_1.isPromise(resolved) ? resolve(resolved) : resolve(this.resolved);
});
});
}
}
exports.LoadableContext = LoadableContext;
exports.default = LoadableContext;
//# sourceMappingURL=LoadableContext.js.map