public void PrioritizedModuleLoaderExaminesAllModuleLoaders() { var script = @" import goodnightMoon from 'goodnight_moon'; export default goodnightMoon; "; var inMemoryModuleLoader = new InMemoryModuleLoader(); inMemoryModuleLoader.RegisterModule(new HelloWorldModule()); var inMemoryModuleLoader1 = new InMemoryModuleLoader(); inMemoryModuleLoader1.RegisterModule(new GoodnightMoonModule()); var aggregateModuleLoader = new PrioritizedAggregateModuleLoader(); aggregateModuleLoader.RegisterModuleLoader(inMemoryModuleLoader1, priority: 100); aggregateModuleLoader.RegisterModuleLoader(inMemoryModuleLoader, priority: 1); var baristaRuntime = GetRuntimeFactory(aggregateModuleLoader); using (var rt = baristaRuntime.CreateRuntime()) { using (var ctx = rt.CreateContext()) { var result = ctx.EvaluateModule(script); Assert.Equal("Goodnight, moon.", result.ToString()); } } }
public void PrioritizedModuleLoaderUsesHigherPriorityModuleLoadersOverLowerPriority() { var script = @" import helloworld from 'hello_world'; export default helloworld; "; var inMemoryModuleLoader = new InMemoryModuleLoader(); inMemoryModuleLoader.RegisterModule(new HelloWorldModule()); var inMemoryModuleLoader1 = new InMemoryModuleLoader(); inMemoryModuleLoader1.RegisterModule(new AnotherHelloWorldModule()); var aggregateModuleLoader = new PrioritizedAggregateModuleLoader(); aggregateModuleLoader.RegisterModuleLoader(inMemoryModuleLoader1, priority: 100); aggregateModuleLoader.RegisterModuleLoader(inMemoryModuleLoader, priority: 1); var baristaRuntime = GetRuntimeFactory(aggregateModuleLoader); using (var rt = baristaRuntime.CreateRuntime()) { using (var ctx = rt.CreateContext()) { var result = ctx.EvaluateModule(script); Assert.Equal("Hello, World!", result.ToString()); } } }
public static IBaristaModuleLoader Invoke(BrewOrder brewOrder, HttpRequest req) { //Set up the module loader for the request. var moduleLoader = new PrioritizedAggregateModuleLoader(); //Register all the modules within the BaristaLabs.BaristaCore.Extensions assembly. moduleLoader.RegisterModuleLoader(new AssemblyModuleLoader(typeof(TypeScriptTranspiler).Assembly), 1); //Register modules needing context. var currentContextModule = new BaristaContextModule(req); var contextModuleLoader = new InMemoryModuleLoader(); contextModuleLoader.RegisterModule(currentContextModule); moduleLoader.RegisterModuleLoader(contextModuleLoader, 2); //Register the web resource module loader rooted at the target path. if (Uri.TryCreate(new Uri(brewOrder.BaseUrl, UriKind.Absolute), brewOrder.Path, out Uri targetUri)) { var targetPath = targetUri.GetLeftPart(UriPartial.Authority) + String.Join("", targetUri.Segments.Take(targetUri.Segments.Length - 1)); var webResourceModuleLoader = new WebResourceModuleLoader(targetPath); moduleLoader.RegisterModuleLoader(webResourceModuleLoader, 100); } return(moduleLoader); }
public void RegisterPrioritizedModuleLoaderThrowsWhenNoModuleLoaderSpecified() { var aggregateModuleLoader = new PrioritizedAggregateModuleLoader(); Assert.Throws <ArgumentNullException>(() => { aggregateModuleLoader.RegisterModuleLoader(null, -1, null); }); }
public void PrioritizedModuleLoaderThrowsWhenNoLoaderCouldBeFound() { var script = @" import helloworld from 'hello_world'; export default helloworld; "; var aggregateModuleLoader = new PrioritizedAggregateModuleLoader(); var baristaRuntime = GetRuntimeFactory(aggregateModuleLoader); using (var rt = baristaRuntime.CreateRuntime()) { using (var ctx = rt.CreateContext()) { Assert.Throws <JsScriptException>(() => { var result = ctx.EvaluateModule(script); }); } } }