beginor
2/16/2017 - 2:35 AM

SystemJS Dojo Loader

SystemJS Dojo Loader

exports.fetch = function(load) {
    var name = load.name;
    return new Promise(function(resolve) {
        var dojoName = convertToDojoModule(name);
        window.require([dojoName], function(mod) {
            SystemJS.register(dojoName, [], function (exp, idObj) {
                return {
                    setters: [],
                    execute: function() {
                        exp("default", mod);
                    }
                };
            });
            resolve('');
        });
    });
};

exports.instantiate = function (load) {
    var name = load.name.split('!')[0];
    var dojoName = convertToDojoModule(name);
    return new Promise(function (resolve) {
        // Since module is loaded by fetch, just require it again,
        // dojo require does not load the module again.
        window.require([dojoName], function (module) {
            resolve(module);
        });
    });
};

function convertToDojoModule(module) {
    // we just replace SystemJS.baseURL with '';
    return module.replace(SystemJS.baseURL, '');
}