js-slang
Version:
Javascript-based implementations of Source, written in Typescript
53 lines • 2.92 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.memoizedGetModuleManifestAsync = exports.memoizedGetModuleDocsAsync = exports.MODULES_STATIC_URL = exports.setModulesStaticURL = exports.loadSourceModuleTypes = void 0;
const loaders_1 = require("./loaders");
/**
* Initialize module contexts and add UI tabs needed for modules to program context
*/
async function initModuleContextAsync(moduleName, context, loadTabs) {
// Load the module's tabs
if (!(moduleName in context.moduleContexts)) {
context.moduleContexts[moduleName] = {
state: null,
tabs: loadTabs ? await (0, loaders_1.loadModuleTabsAsync)(moduleName) : null
};
}
else if (context.moduleContexts[moduleName].tabs === null && loadTabs) {
context.moduleContexts[moduleName].tabs = await (0, loaders_1.loadModuleTabsAsync)(moduleName);
}
}
/**
* With the given set of Source Modules to Import, load all of the bundles and
* tabs (if `loadTabs` is true) and populate the `context.nativeStorage.loadedModules`
* property.
*/
async function loadSourceModules(sourceModulesToImport, context, loadTabs) {
const loadedModules = await Promise.all([...sourceModulesToImport].map(async (moduleName) => {
await initModuleContextAsync(moduleName, context, loadTabs);
const bundle = await (0, loaders_1.loadModuleBundleAsync)(moduleName, context);
return [moduleName, bundle];
}));
const loadedObj = Object.fromEntries(loadedModules);
context.nativeStorage.loadedModules = loadedObj;
return loadedObj;
}
exports.default = loadSourceModules;
async function loadSourceModuleTypes(sourceModulesToImport, context) {
const loadedModules = await Promise.all([...sourceModulesToImport].map(async (moduleName) => {
await initModuleContextAsync(moduleName, context, false);
const bundle = await (0, loaders_1.loadModuleBundleAsync)(moduleName, context);
return [moduleName, bundle];
}));
const loadedObj = Object.fromEntries(loadedModules);
sourceModulesToImport.forEach(module => {
context.nativeStorage.loadedModuleTypes[module] = loadedObj[module].type_map;
});
}
exports.loadSourceModuleTypes = loadSourceModuleTypes;
var loaders_2 = require("./loaders");
Object.defineProperty(exports, "setModulesStaticURL", { enumerable: true, get: function () { return loaders_2.setModulesStaticURL; } });
Object.defineProperty(exports, "MODULES_STATIC_URL", { enumerable: true, get: function () { return loaders_2.MODULES_STATIC_URL; } });
Object.defineProperty(exports, "memoizedGetModuleDocsAsync", { enumerable: true, get: function () { return loaders_2.memoizedGetModuleDocsAsync; } });
Object.defineProperty(exports, "memoizedGetModuleManifestAsync", { enumerable: true, get: function () { return loaders_2.memoizedGetModuleManifestAsync; } });
//# sourceMappingURL=index.js.map
;