UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

53 lines 2.92 kB
"use strict"; 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