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());
                }
            }
        }
Exemplo n.º 3
0
        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);
                    });
                }
            }
        }