1234567891011121314151617181920212223242526272829303132333435363738 |
- #nullable enable
- using Jint.Runtime;
- using Jint.Runtime.Modules;
- using Zio;
- namespace Jint.Tests.Test262;
- internal sealed class Test262ModuleLoader : ModuleLoader
- {
- private readonly IFileSystem _fileSystem;
- private readonly string _basePath;
- public Test262ModuleLoader(IFileSystem fileSystem, string basePath)
- {
- _fileSystem = fileSystem;
- _basePath = "/test/" + basePath.TrimStart('\\').TrimStart('/');
- }
- public override ResolvedSpecifier Resolve(string? referencingModuleLocation, ModuleRequest moduleRequest)
- {
- return new ResolvedSpecifier(moduleRequest, moduleRequest.Specifier, null, SpecifierType.Bare);
- }
- protected override string LoadModuleContents(Engine engine, ResolvedSpecifier resolved)
- {
- lock (_fileSystem)
- {
- var fileName = Path.Combine(_basePath, resolved.Key).Replace('\\', '/');
- if (!_fileSystem.FileExists(fileName))
- {
- Throw.ModuleResolutionException("Module Not Found", resolved.ModuleRequest.Specifier, parent: null, fileName);
- }
- using var stream = new StreamReader(_fileSystem.OpenFile(fileName, FileMode.Open, FileAccess.Read));
- return stream.ReadToEnd();
- }
- }
- }
|