/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // A basic synchronous module loader for testing the shell. Reflect.Loader = new class { constructor() { this.registry = new Map(); this.loadPath = getModuleLoadPath(); } resolve(name) { if (os.path.isAbsolute(name)) return name; return os.path.join(this.loadPath, name); } fetch(path) { return os.file.readFile(path); } loadAndParse(name) { let path = this.resolve(name); if (this.registry.has(path)) return this.registry.get(path); let source = this.fetch(path); let module = parseModule(source, path); this.registry.set(path, module); return module; } ["import"](name, referrer) { let module = this.loadAndParse(name); module.declarationInstantiation(); return module.evaluation(); } }; setModuleResolveHook((module, requestName) => Reflect.Loader.loadAndParse(requestName));