Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/framework / dist / bootstrapper / containers / Loadable / LoadableContext.js
Size: Mime:
"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