ModuleLoader.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. namespace Jint.Runtime.Modules;
  2. /// <summary>
  3. /// Base template for module loaders.
  4. /// </summary>
  5. public abstract class ModuleLoader : IModuleLoader
  6. {
  7. public abstract ResolvedSpecifier Resolve(string? referencingModuleLocation, ModuleRequest moduleRequest);
  8. public Module LoadModule(Engine engine, ResolvedSpecifier resolved)
  9. {
  10. string code;
  11. try
  12. {
  13. code = LoadModuleContents(engine, resolved);
  14. }
  15. catch (Exception)
  16. {
  17. Throw.JavaScriptException(engine, $"Could not load module {resolved.ModuleRequest.Specifier}", AstExtensions.DefaultLocation);
  18. return default!;
  19. }
  20. var isJson = resolved.ModuleRequest.IsJsonModule();
  21. Module moduleRecord = isJson
  22. ? ModuleFactory.BuildJsonModule(engine, resolved, code)
  23. : ModuleFactory.BuildSourceTextModule(engine, resolved, code);
  24. return moduleRecord;
  25. }
  26. protected abstract string LoadModuleContents(Engine engine, ResolvedSpecifier resolved);
  27. }