예제 #1
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            var js = new ScriptBundle("~/bundles/js").Include(
                "~/Scripts/jquery-{version}.js",
                "~/Scripts/bootstrap.js",
                "~/Scripts/less.min.js",
                "~/Scripts/moment.js",
                "~/Scripts/main.js",
                "~/Scripts/jquery.quick.pagination.min.js",
                "~/Scripts/bootstrap-fileupload.min.js"
                );

            js.Transforms.Add(jsTransformer);
            js.Orderer = nullOrderer;

            bundles.Add(js);

            var css = new StyleBundle("~/bundles/css").Include(
                "~/Content/less/bootstrap.less",
                "~/Content/styles.css",
                "~/Content/custom.css",
                "~/Content/bootstrap-fileupload.min.css"
                );

            css.Transforms.Add(cssTransformer);
            css.Orderer = nullOrderer;


            bundles.Add(css);
        }
예제 #2
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.UseCdn = true;

            var nullBuilder    = new NullBuilder();
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            /*Common Styles */
            var commonStylesBundle = new Bundle("~/Bundles/CommonStyles");

            commonStylesBundle.Include("~/Content/bootstrap.css");
            commonStylesBundle.Builder = nullBuilder;
            commonStylesBundle.Transforms.Add(cssTransformer);
            commonStylesBundle.Orderer = nullOrderer;

            bundles.Add(commonStylesBundle);

            /*App Css */
            var appStylesBundle = new Bundle("~/Bundles/AppStyles");

            appStylesBundle.Include(
                "~/App/css/base.css",
                "~/App/css/custom.css");
            appStylesBundle.Builder = nullBuilder;
            appStylesBundle.Transforms.Add(cssTransformer);
            appStylesBundle.Orderer = nullOrderer;

            bundles.Add(appStylesBundle);
        }
예제 #3
0
 public LoopTransformer(JsTransformer transformer, StatementSyntax loop, int loopDepth, StatementSyntax body)
 {
     this.transformer = transformer;
     idioms           = transformer.idioms;
     this.loopDepth   = loopDepth;
     this.body        = body;
     loopNode         = loop;
 }
예제 #4
0
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = false;

            bundles.UseCdn = true;
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            var cssBundle = new CustomStyleBundle("~/bundles/css");

            cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap/bootstrap.less");
            cssBundle.Transforms.Add(cssTransformer);
            cssBundle.Orderer = nullOrderer;
            bundles.Add(cssBundle);

            var jqueryBundle = new CustomScriptBundle("~/bundles/jquery");

            jqueryBundle.Include("~/Scripts/jquery-{version}.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(jqueryBundle);

            var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval");

            jqueryvalBundle.Include("~/Scripts/jquery.validate*");
            jqueryvalBundle.Transforms.Add(jsTransformer);
            jqueryvalBundle.Orderer = nullOrderer;
            bundles.Add(jqueryvalBundle);


            // Use the development version of Modernizr to develop with and learn from. Then, when you're
            // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.

            var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr");

            modernizrBundle.Include("~/Scripts/modernizr-*");
            modernizrBundle.Transforms.Add(jsTransformer);
            modernizrBundle.Orderer = nullOrderer;
            bundles.Add(modernizrBundle);


            var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap");

            bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js");
            bootstrapBundle.Transforms.Add(jsTransformer);
            bootstrapBundle.Orderer = nullOrderer;
            bundles.Add(bootstrapBundle);

            var angularBundle = new CustomScriptBundle("~/bundles/angular");

            angularBundle.Include("~/Scripts/angular*");
            angularBundle.Transforms.Add(jsTransformer);
            angularBundle.Orderer = nullOrderer;
            bundles.Add(angularBundle);
        }
예제 #5
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            var commonStylesBundle = new Bundle("~/Bundles/Styles");

            commonStylesBundle.Include(
                "~/stylesheets/screen.css");
            commonStylesBundle.Transforms.Add(cssTransformer);
            commonStylesBundle.Orderer = nullOrderer;

            bundles.Add(commonStylesBundle);

            //var modernizrBundle = new Bundle("~/Bundles/Modernizr");
            //modernizrBundle.Include("~/Scripts/modernizr-2.*");
            //modernizrBundle.Transforms.Add(jsTransformer);
            //modernizrBundle.Orderer = nullOrderer;

            //bundles.Add(modernizrBundle);

            var commonScriptsBundle = new Bundle("~/Bundles/ProjectAether");

            commonScriptsBundle.Include(//"~/ProjectAether/libs/knockout.debug.js",
                "~/libs/underscore.js",
                "~/libs/underscore-ko-1.1.0.js",
                "~/libs/hash/jshashset.js",
                "~/libs/hash/jshashtable.js",
                "~/app/helper.js")
            .IncludeDirectory("~/app", "*.js", true);


            commonScriptsBundle.Transforms.Add(jsTransformer);
            commonScriptsBundle.Orderer = nullOrderer;

            bundles.Add(commonScriptsBundle);

            var testScriptsBundle = new Bundle("~/Bundles/Tests");

            testScriptsBundle.Include(//"~/ProjectAether/libs/knockout.debug.js",
                "~/libs/underscore.js",
                "~/libs/underscore-ko-1.1.0.js",
                "~/libs/hash/jshashset.js",
                "~/libs/hash/jshashtable.js",
                "~/app/helper.js")
            .IncludeDirectory("~/tests/app", "*.js", true);


            testScriptsBundle.Transforms.Add(jsTransformer);
            testScriptsBundle.Orderer = nullOrderer;

            bundles.Add(testScriptsBundle);
        }
예제 #6
0
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.UseCdn = true;
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            #region Script Bundle

            var jqueryBundle = new CustomScriptBundle("~/bundles/jquery");
            jqueryBundle.Include("~/Scripts/jquery-{version}.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(jqueryBundle);

            var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval");
            jqueryvalBundle.Include("~/Scripts/jquery.validate*");
            jqueryvalBundle.Transforms.Add(jsTransformer);
            jqueryvalBundle.Orderer = nullOrderer;
            bundles.Add(jqueryvalBundle);

            var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr");
            modernizrBundle.Include("~/Scripts/modernizr-*");
            modernizrBundle.Transforms.Add(jsTransformer);
            modernizrBundle.Orderer = nullOrderer;
            bundles.Add(modernizrBundle);

            var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap");
            bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js");
            bootstrapBundle.Transforms.Add(jsTransformer);
            bootstrapBundle.Orderer = nullOrderer;
            bundles.Add(bootstrapBundle);

            var createjsBundle = new CustomScriptBundle("~/bundles/createjs");
            createjsBundle.Include("~/Scripts/createjs-2013.12.12.min.js");
            createjsBundle.Transforms.Add(jsTransformer);
            createjsBundle.Orderer = nullOrderer;
            bundles.Add(createjsBundle);

            #endregion Script Bundle

            #region Style Bundle

            var cssBundle = new CustomStyleBundle("~/bundles/css");
            cssBundle.Include(
                "~/Content/bootstrap/bootstrap.less",
                "~/Content/Site.css");
            cssBundle.Transforms.Add(cssTransformer);
            cssBundle.Orderer = nullOrderer;
            bundles.Add(cssBundle);

            #endregion Style Bundle
        }
예제 #7
0
 public BaseStateGenerator(Func <BaseStateGenerator, JsTransformer> transformer, CSharpSyntaxNode node, JsBlockStatement stateMachineBody, Idioms idioms, IMethodSymbol method, Action <BaseStateGenerator, JsTransformer> nodeAcceptor = null)
 {
     if (nodeAcceptor == null)
     {
         nodeAcceptor = (stateGenerator, jsTransformer) => node.Accept(stateGenerator);
     }
     this.transformer      = transformer(this);
     this.node             = node;
     this.stateMachineBody = stateMachineBody;
     this.method           = method;
     this.idioms           = idioms;
     this.nodeAcceptor     = nodeAcceptor;
 }
예제 #8
0
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var cssMinifier    = new CssMinify();
            var jsMinifier     = new JsMinify();
            var nullOrderer    = new NullOrderer();

            // Script Bundles

//            const string jQueryCdnPath = "http://code.jquery.com/jquery-1.9.1.min.js";

            bundles.Add(new ScriptBundle("~/bundles/global")
                        .Include("~/Content/custom/scripts/global.js"));

            bundles.Add(new ScriptBundle("~/bundles/admin")
                        //.Include("~/Content/scripts/jquery-autogrow-textarea.js")
                        .Include("~/Content/scripts/ace/ace.js")
                        .Include("~/Content/scripts/ace/theme-clouds.js")
                        .Include("~/Content/scripts/ace/mode-html.js"));


            // Style Bundles

            var mainBundle = new Bundle("~/Content/global")
                             .Include("~/Content/font-awesome/css/font-awesome.min.css")
                             .Include("~/Content/custom/less/custom.less")
                             .Include("~/Content/custom/less/shCoreDefault.less")
                             .Include("~/Content/custom/less/shThemeDefault.less");

            mainBundle.Transforms.Add(cssTransformer);
            mainBundle.Transforms.Add(cssMinifier);
            mainBundle.Orderer = nullOrderer;
            bundles.Add(mainBundle);

            var adminBundle = new Bundle("~/Content/admin");

            adminBundle.Transforms.Add(cssTransformer);
            mainBundle.Transforms.Add(cssMinifier);
            adminBundle.Orderer = nullOrderer;
            bundles.Add(adminBundle);


            //BundleTable.EnableOptimizations = true;  // executing this line will force bundling and minification by overwriting whatever stands in web.config
//            #if DEBUG
//                BundleTable.EnableOptimizations = false;
//            #endif
        }
예제 #9
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            var cssTransformer = new CssTransformer(new YuiCssMinifier());
            var jsTransformer  = new JsTransformer(new UglifyJsMinifier());
            var nullOrderer    = new NullOrderer();

            // Lib CSS
            Bundle libCss = new Bundle("~/bundles/css_lib").IncludeDirectory("~/Content/css/lib/aui", "*.css");

            //libCss.Transforms.Add(cssTransformer);
            bundles.Add(libCss);

            // App CSS
            Bundle appCss = new Bundle("~/bundles/css_app").Include("~/Content/css/app/bootstrap.less", new CssRewriteUrlTransform());

            appCss.Transforms.Add(cssTransformer);
            bundles.Add(appCss);

//            // App CSS
//            Bundle appCss = new Bundle("~/bundles/css_app").Include("~/Content/less/app/bootstrap.less", new CssRewriteUrlTransform());
//            appCss.Transforms.Add(cssTransformer);
//            bundles.Add(appCss);

            // Lib JS
            Bundle libJs = new Bundle("~/bundles/js_lib").Include(
                "~/Scripts/jquery-{version}.js",
                "~/Content/js/lib/aui/aui-all.js");

            libJs.Transforms.Add(jsTransformer);
            libJs.Orderer = nullOrderer;
            bundles.Add(libJs);


#if (DEBUG && !DEBUGMINIFIED)
            BundleTable.EnableOptimizations = false;
#else
            BundleTable.EnableOptimizations = true;
#endif
        }
예제 #10
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                            "~/Scripts/jquery-1.*"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                            "~/Scripts/jquery-ui*", "~/Scripts/jquery.ui*"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                            "~/Scripts/jquery.unobtrusive*",
                            "~/Scripts/jquery.validate*"));

            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                            "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                            "~/Content/themes/base/jquery.ui.core.css",
                            "~/Content/themes/base/jquery.ui.resizable.css",
                            "~/Content/themes/base/jquery.ui.selectable.css",
                            "~/Content/themes/base/jquery.ui.accordion.css",
                            "~/Content/themes/base/jquery.ui.autocomplete.css",
                            "~/Content/themes/base/jquery.ui.button.css",
                            "~/Content/themes/base/jquery.ui.dialog.css",
                            "~/Content/themes/base/jquery.ui.slider.css",
                            "~/Content/themes/base/jquery.ui.tabs.css",
                            "~/Content/themes/base/jquery.ui.datepicker.css",
                            "~/Content/themes/base/jquery.ui.progressbar.css",
                            "~/Content/themes/base/jquery.ui.theme.css"));

            // MyJs
            bundles.Add(new Bundle("~/MyJs").Include(
                            "~/Scripts/jquery.nailthumb.1.1.js",
                            "~/Scripts/jquery.mousewheel.js",
                            "~/Scripts/jquery.jscrollpane.js",
                            "~/Scripts/jquery.ba-bbq.js",
                            "~/Scripts/jquery.ba-resize.js"
                            ));


            // MyCss
            bundles.Add(new Bundle("~/Content/MyCss").Include(
                            "~/Content/jquery.nailthumb.1.1.css",
                            "~/Content/jquery.jscrollpane1.css"
                            ));


            var jsTransformer  = new JsTransformer();
            var cssTransformer = new CssTransformer();
            var nullOrderer    = new NullOrderer();
            var cssMinify      = new CssMinify();
            var jsMinify       = new JsMinify();

            // MyCoffee
            var bundle = new Bundle("~/MyCoffee").Include(
                "~/Scripts/EntryRenderer.coffee",
                "~/Scripts/HomePresenter.coffee",
                "~/Scripts/Application.coffee"
                );

            bundle.Transforms.Add(jsTransformer);
            if ("true".Equals(ConfigurationManager.AppSettings["CoffeeMinify"]))
            {
                bundle.Transforms.Add(jsMinify);
            }
            bundle.Orderer = nullOrderer;
            bundles.Add(bundle);

            // MySass
            bundle = new Bundle("~/Content/MySass").Include(
                "~/Content/enews.sass"
                );
            bundle.Transforms.Add(cssTransformer);
            if ("true".Equals(ConfigurationManager.AppSettings["SassMinify"]))
            {
                bundle.Transforms.Add(cssMinify);
            }
            bundle.Orderer = nullOrderer;
            bundles.Add(bundle);
        }
예제 #11
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            try
            {
                var ignoreCompilationDebug = Settings.GetSetting("ignoreCompilationDebug") == "True" || string.IsNullOrEmpty(Settings.GetSetting("ignoreCompilationDebug"));

                if (ignoreCompilationDebug)
                {
                    BundleTable.EnableOptimizations = true;
                }

                var cssTransformer = new CssTransformer();
                var jsTransformer  = new JsTransformer();
                var nullOrderer    = new NullOrderer();

                var doc = XDocument.Load(HttpContext.Current.Server.MapPath(Config.BundlesConfigPath));

                foreach (string bundleType in "script,style".Split(','))
                {
                    foreach (var bundleElement in doc.Descendants(bundleType + "Bundle"))
                    {
                        var bundle         = new Bundle(bundleElement.Attribute("virtualPath").Value);
                        var bundleHasFiles = false;
                        var dontMinify     = bundleElement.Attribute("disableMinification") != null?bundleElement.Attribute("disableMinification").Value == true.ToString() : false;

                        foreach (var includeElement in bundleElement.Elements())
                        {
                            var    filePath = includeElement.Attribute("virtualPath").Value;
                            string fullPath = null;
                            try
                            {
                                fullPath = HttpContext.Current.Server.MapPath(filePath);
                            }
                            catch (Exception ex)
                            {
                                LogHelper.Warn <Exception>("Optmius skipped '" + filePath + "' in Bundle '" + bundle.Path + "' as the file path was invalid. Only application relative URLs (~/url) are allowed.");
                            }

                            if (fullPath != null)
                            {
                                bundle.Include(filePath);
                                bundleHasFiles = true;
                            }
                        }

                        if (bundleHasFiles)
                        {
                            if (bundleType == "script")
                            {
                                bundle.Transforms.Add(jsTransformer);
                                if (!dontMinify)
                                {
                                    bundle.Transforms.Add(new JsMinify());
                                }
                            }
                            else
                            {
                                bundle.Transforms.Add(cssTransformer);
                                if (!dontMinify)
                                {
                                    bundle.Transforms.Add(new CssMinify());
                                }
                            }
                            bundle.Orderer = nullOrderer;


                            bundles.Add(bundle);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LogHelper.Error(typeof(BundleCollection), "Error adding bundles: " + e.ToString(), e);
            }
        }
예제 #12
0
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = false;

            bundles.UseCdn = true;
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            var cssBundle = new CustomStyleBundle("~/bundles/css");

            cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap/bootstrap.less");
            cssBundle.Transforms.Add(cssTransformer);
            cssBundle.Orderer = nullOrderer;
            bundles.Add(cssBundle);

            var jqueryBundle = new CustomScriptBundle("~/bundles/jquery");

            jqueryBundle.Include("~/Scripts/jquery-{version}.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(jqueryBundle);

            var signalRBundle = new CustomScriptBundle("~/bundles/jquery-signalR");

            jqueryBundle.Include("~/Scripts/jquery.signalR-{version}.js", "~/Scripts/jquery.signalR-{version}.min.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(signalRBundle);

            var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval");

            jqueryvalBundle.Include("~/Scripts/jquery.validate*");
            jqueryvalBundle.Transforms.Add(jsTransformer);
            jqueryvalBundle.Orderer = nullOrderer;
            bundles.Add(jqueryvalBundle);


            // Use the development version of Modernizr to develop with and learn from. Then, when you're
            // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.

            var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr");

            modernizrBundle.Include("~/Scripts/modernizr-*");
            modernizrBundle.Transforms.Add(jsTransformer);
            modernizrBundle.Orderer = nullOrderer;
            bundles.Add(modernizrBundle);


            var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap");

            bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/bootstrap.min.js", "~/Scripts/respond.js");
            bootstrapBundle.Transforms.Add(jsTransformer);
            bootstrapBundle.Orderer = nullOrderer;
            bundles.Add(bootstrapBundle);

            var bootstrapLess = new CustomStyleBundle("~/bundles/bootstrapLess");

            bootstrapLess.Include("~/Content/bootstrap/bootstrap.less");
            bootstrapLess.Transforms.Add(cssTransformer);
            bootstrapLess.Orderer = nullOrderer;
            bundles.Add(bootstrapLess);

            //Google Map CSS bundle
            var googMapCSS = new CustomStyleBundle("~/bundles/googMapCSS");

            googMapCSS.Include("~/Content/Map/GOOG/*.css");
            googMapCSS.Transforms.Add(cssTransformer);
            googMapCSS.Orderer = nullOrderer;
            bundles.Add(googMapCSS);

            //Google Map JS bundle
            var googMapJS = new CustomScriptBundle("~/bundles/googMapJS");

            googMapJS.Include("~/Content/Map/GOOG/*.js");
            googMapJS.Transforms.Add(jsTransformer);
            googMapJS.Orderer = nullOrderer;
            bundles.Add(googMapJS);

            //Open Layers Map CSS bundle
            var olMapCSS = new CustomStyleBundle("~/bundles/olMapCSS");

            olMapCSS.Include("~/Content/Map/OL/*.css");
            olMapCSS.Transforms.Add(cssTransformer);
            olMapCSS.Orderer = nullOrderer;
            bundles.Add(olMapCSS);

            //Open Layers Map JS bundle
            var olMapJS = new CustomScriptBundle("~/bundles/olMapJS");

            olMapJS.Include("~/Content/Map/OL/*.js");
            olMapJS.Transforms.Add(jsTransformer);
            olMapJS.Orderer = nullOrderer;
            bundles.Add(olMapJS);

            //Angular Scripts Bundle
            var angularJS = new CustomScriptBundle("~/bundles/angular");

            angularJS.Include("~/Scripts/angular-route.js");
            angularJS.Include("~/Scripts/angular-resource.js");
            angularJS.Include("~/Scripts/angular-animate.js");
            angularJS.Include("~/Scripts/angular.js");
            angularJS.Include("~/Controllers/app/js/admin_page/admin_page.app.js");
            angularJS.Include("~/Controllers/app/js/admin_page/controllers/admin.ctrl.js");
            angularJS.Transforms.Add(jsTransformer);
            angularJS.Orderer = nullOrderer;
            bundles.Add(angularJS);

            var detailView = new CustomStyleBundle("~/bundles/detailsCSS");

            detailView.Include("~/Content/detailViewResources/dv.css");
            detailView.Transforms.Add(cssTransformer);
            detailView.Orderer = nullOrderer;
            bundles.Add(detailView);

            var detailViewJS = new CustomScriptBundle("~/bundles/detailsJS");

            detailViewJS.Include("~/Content/detailViewResources/dv.js");
            detailViewJS.Transforms.Add(jsTransformer);
            detailViewJS.Orderer = nullOrderer;
            bundles.Add(detailViewJS);

            var sim = new CustomScriptBundle("~/bundles/sim");

            sim.Include("~/Scripts/proj4.js");
            sim.Include("~/Content/NestScripts/reporter.js");
            sim.Include("~/Content/NestScripts/simulation.js");
            sim.Include("~/Content/NestScripts/vehicle.js");
            bundles.Add(sim);
            //Font Awesome
            //var fa = new CustomStyleBundle("~/bundles/fontawesome");
            //fa.Include("~/Content/font-awesome-4.3.0/css/font-awesome.min.css");
            //fa.Include("~/Content/font-awesome-4.3.0/fonts/font-awesome.webfont.woff");
            //bundles.Add(fa);
        }
예제 #13
0
파일: Idioms.cs 프로젝트: x335/WootzJs
 public Idioms(JsTransformer transformer)
 {
     this.transformer = transformer;
 }
예제 #14
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            // jQuery
            var jqueryUiCss = new Bundle("~/bundles/jqueryuicss").Include(
                "~/Content/themes/base/jquery.ui.core.css",
                "~/Content/themes/base/jquery.ui.resizable.css",
                "~/Content/themes/base/jquery.ui.selectable.css",
                "~/Content/themes/base/jquery.ui.accordion.css",
                "~/Content/themes/base/jquery.ui.autocomplete.css",
                "~/Content/themes/base/jquery.ui.button.css",
                "~/Content/themes/base/jquery.ui.dialog.css",
                "~/Content/themes/base/jquery.ui.slider.css",
                "~/Content/themes/base/jquery.ui.tabs.css",
                "~/Content/themes/base/jquery.ui.datepicker.css",
                "~/Content/themes/base/jquery.ui.progressbar.css",
                "~/Content/themes/base/jquery.ui.theme.css");

            jqueryUiCss.Transforms.Add(cssTransformer);
            jqueryUiCss.Transforms.Add(new CssMinify());
            jqueryUiCss.Orderer = nullOrderer;
            bundles.Add(jqueryUiCss);

            var jq = new Bundle("~/bundles/jquery").Include(
                "~/Scripts/jquery-{version}.js",
                "~/Scripts/jquery-ui-{version}.js");

            jq.Transforms.Add(jsTransformer);
            jq.Orderer = nullOrderer;
            bundles.Add(jq);

            var js = new Bundle("~/bundles/js").Include(
                "~/Scripts/bootstrap.min.js",
                "~/Scripts/Prettify/prettify.js",
                "~/Scripts/application.js");

            js.Transforms.Add(jsTransformer);
            js.Orderer = nullOrderer;
            bundles.Add(js);

            var jqueryVal = new Bundle("~/bundles/jqueryval").Include(
                "~/Scripts/jquery.unobtrusive*",
                "~/Scripts/jquery.validate*");

            jqueryVal.Transforms.Add(jsTransformer);
            jqueryVal.Orderer = nullOrderer;
            bundles.Add(jqueryVal);

            // Css
            var css = new Bundle("~/bundles/css").Include(
                "~/Content/less/bootstrap.less",
                "~/Content/less/responsive.less",
                "~/Content/Prettify/prettify.css",
                "~/Content/docs.css",
                "~/Content/icons.css");

            css.Transforms.Add(cssTransformer);
            css.Transforms.Add(new CssMinify());
            css.Orderer = nullOrderer;
            bundles.Add(css);

            BundleTable.EnableOptimizations = true;
        }
예제 #15
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            // bundles.IgnoreList.Clear();
            //  AddDefaultIgnorePatterns(bundles.IgnoreList);
            //NOTE: it's bundles.DirectoryFilter in Microsoft.AspNet.Web.Optimization.1.1.3 and not bundles.IgnoreList

            var engine = new V8JsEngine();

            var uglySettings = new UglifySettings();

            uglySettings.Js.CodeGeneration.Beautify = true;

            bundles.UseCdn = false;

            var uglifyJsMinifier = new UglifyJsMinifier(() => engine, uglySettings)

            {
                CompressionOptions = { Angular = true },
                ParsingOptions     = new ParsingOptions {
                    Strict = true
                },
                CodeGenerationOptions = new CodeGenerationOptions()
            };


            var lessTranslator = new LessTranslator();

            var cssTransformer = new CssTransformer(new CleanCssMinifier(), new ITranslator[] { lessTranslator });

            var tsTranslater = new TypeScriptTranslator();

            var jsTransformer = new JsTransformer(uglifyJsMinifier, new List <ITranslator> {
                tsTranslater
            });

            var jsBundle = new CustomScriptBundle("~/bundles/js");

            jsBundle.IncludeDirectory("~/scripts", "*.js", true);
            jsBundle.IncludeDirectory("~/scripts", "*.map", true);

            bundles.IgnoreList.Ignore("angular-mocks.js");
            bundles.IgnoreList.Ignore("angular-scenario.js");

            //   jsBundle.IncludeDirectory("~/scripts/angular-dialog-service-5.1.2", "*.js", true);

            jsBundle.Builder = new DefaultBundleBuilder();

            jsBundle.Orderer = new JsBundlerOrderer();

            jsBundle.Transforms.Add(jsTransformer);

            bundles.Add(jsBundle);


            var typeScriptBundle = new CustomScriptBundle("~/bundles/ts");    //// Typescript generatred locally via visual studio and checked in - not done on the fly

            typeScriptBundle.IncludeDirectory("~/app", "*.js", true);

            typeScriptBundle.Transforms.Add(jsTransformer);

            typeScriptBundle.Builder = new DefaultBundleBuilder();

            typeScriptBundle.Orderer = new JsBundlerOrderer();

            bundles.Add(typeScriptBundle);


            var lessCssBundle = new Bundle("~/bundles/less");

            lessCssBundle.Include("~/Content/bootstrap/bootstrap.less");

            lessCssBundle.Builder = new DefaultBundleBuilder();

            lessCssBundle.Transforms.Add(cssTransformer);

            lessCssBundle.Orderer = new DefaultBundleOrderer();

            bundles.Add(lessCssBundle);

            var cssBundle = new StyleBundle("~/bundles/css");

            cssBundle.IncludeDirectory("~/Content/Bootstrap", "*.css", false);
            cssBundle.IncludeDirectory("~/Content/", "*.css", false);
            cssBundle.IncludeDirectory("~/Content/css", "*.css", false);

            cssBundle.Builder = new DefaultBundleBuilder();

            cssBundle.Transforms.Add(cssTransformer);

            cssBundle.Orderer = new PushToTopOrderer("bootstrap");

            bundles.Add(cssBundle);

            var publicCssBundle = new StyleBundle("~/bundles/public/css");

            publicCssBundle.IncludeDirectory("~/Content/public", "*.css", true);
            publicCssBundle.Builder = new DefaultBundleBuilder();
            publicCssBundle.Transforms.Add(cssTransformer);
            publicCssBundle.Orderer = new PushToTopOrderer("bootstrap");
            bundles.Add(publicCssBundle);
        }
예제 #16
0
 public JavaScriptReferenceHandler()
 {
     Transform = new JsTransformer();
 }
예제 #17
0
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = true;

            var yuisetting = new YuiSettings();

#if DEBUG
            yuisetting.JsMinifier.DisableOptimizations = true;
            yuisetting.JsMinifier.CompressionType      = CompressionType.None;
#endif
            var cssTransformer = new CssTransformer(new YuiCssMinifier());
            var jsTransformer  = new JsTransformer(new YuiJsMinifier(yuisetting));
            var nullOrderer    = new NullOrderer();

            // internal css
            var cssBundle = new Bundle("~/css/all");
            cssBundle.Include(
                "~/Content/css/Reset.css",
                "~/Content/css/common.css",
                "~/Content/css/Site.css",
                "~/Content/css/internal.css");
            cssBundle.IncludeDirectory("~/Content/css/fileuploader", "*.css");
            cssBundle.IncludeDirectory("~/Content/css/jgrowl", "*.css");
            cssBundle.IncludeDirectory("~/Content/css/jqueryui", "*.css");
            cssBundle.IncludeDirectory("~/Content/css/prettyLoader", "*.css");
            cssBundle.Transforms.Add(cssTransformer);
            cssBundle.Orderer = nullOrderer;

            bundles.Add(cssBundle);

            // external css
            var cssextBundle = new Bundle("~/css/ext");
            cssextBundle.Include(
                "~/Content/css/Reset.css",
                "~/Content/css/common.css",
                "~/Content/css/external.css",
                "~/Content/css/Site.css",
                "~/Content/css/jgrowl/jquery.jgrowl.css",
                "~/Content/css/prettyLoader/prettyLoader.css"
                );
            cssextBundle.Transforms.Add(cssTransformer);
            cssextBundle.Orderer = nullOrderer;

            bundles.Add(cssextBundle);

            // common css
            var csscommonBundle = new Bundle("~/css/common");
            csscommonBundle.Include(
                "~/Content/css/Reset.css",
                "~/Content/css/common.css");
            csscommonBundle.Transforms.Add(cssTransformer);
            csscommonBundle.Orderer = nullOrderer;
            bundles.Add(csscommonBundle);

            // email css
            var cssemailBundle = new Bundle("~/css/email");
            cssemailBundle.Include(
                "~/Content/css/Reset.css",
                "~/Content/css/common.css",
                "~/Content/css/email/email.css");
            cssemailBundle.Transforms.Add(cssTransformer);
            cssemailBundle.Orderer = nullOrderer;
            bundles.Add(cssemailBundle);

            // jquery js
            var jqueryBundle = new Bundle("~/js/jquery");
            jqueryBundle.Include("~/Scripts/jquery-1.8.1.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(jqueryBundle);

            var jscoreBundle = new Bundle("~/js/core");
            jscoreBundle.IncludeDirectory("~/Scripts/core", "*.js");
#if DEBUG
            jscoreBundle.Include("~/Scripts/debug_true.js");
#else
            jscoreBundle.Include("~/Scripts/debug_false.js");
#endif
            jscoreBundle.Transforms.Add(jsTransformer);
            jscoreBundle.Orderer = nullOrderer;
            bundles.Add(jscoreBundle);

            var jsextBundle = new Bundle("~/js/extend");
            jsextBundle.IncludeDirectory("~/Scripts/extend", "*.js");
            jsextBundle.Transforms.Add(jsTransformer);
            jsextBundle.Orderer = nullOrderer;
            bundles.Add(jsextBundle);
        }
        // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = false;

            bundles.UseCdn = true;
            var cssTransformer = new CssTransformer();
            var jsTransformer  = new JsTransformer();
            var nullOrderer    = new NullOrderer();

            var cssBundle = new CustomStyleBundle("~/bundles/css");

            cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap.css");
            cssBundle.Transforms.Add(cssTransformer);
            cssBundle.Orderer = nullOrderer;
            bundles.Add(cssBundle);

            var momemtBundle = new CustomScriptBundle("~/bundles/moment");

            momemtBundle.Include("~/Scripts/moment.js", "~/Scripts/moment-with-locales.js");
            momemtBundle.Transforms.Add(jsTransformer);
            momemtBundle.Orderer = nullOrderer;
            bundles.Add(momemtBundle);



            bundles.Add(new StyleBundle("~/Content/GridCss").Include(
                            "~/Content/WebGrid.css")
                        );

            bundles.Add(new StyleBundle("~/Content/PrintStyles").Include(
                            "~/Content/PrintStyles.css"));

            bundles.Add(new ScriptBundle("~/Scripts/ShowHide").Include(
                            "~/Scripts/ShowHide.js"));

            bundles.Add(new ScriptBundle("~/Scripts/RedRows").Include(
                            "~/Scripts/RedRows.js"));

            var jqueryBundle = new CustomScriptBundle("~/bundles/jquery");

            jqueryBundle.Include("~/Scripts/jquery-{version}.js");
            jqueryBundle.Transforms.Add(jsTransformer);
            jqueryBundle.Orderer = nullOrderer;
            bundles.Add(jqueryBundle);

            var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval");

            jqueryvalBundle.Include("~/Scripts/jquery.validate*");
            jqueryvalBundle.Transforms.Add(jsTransformer);
            jqueryvalBundle.Orderer = nullOrderer;
            bundles.Add(jqueryvalBundle);



            var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr");

            modernizrBundle.Include("~/Scripts/modernizr-*");
            modernizrBundle.Transforms.Add(jsTransformer);
            modernizrBundle.Orderer = nullOrderer;
            bundles.Add(modernizrBundle);


            var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap");

            bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js");
            bootstrapBundle.Transforms.Add(jsTransformer);
            bootstrapBundle.Orderer = nullOrderer;
            bundles.Add(bootstrapBundle);
        }
예제 #19
0
        public async Task Compile()
        {
            projectName = project.AssemblyName;
            Compilation compilation = await Profiler.Time("Getting initial project compilation", async() => await project.GetCompilationAsync());

            Context.Update(project.Solution, project, compilation, new ReflectionCache(project, compilation));

            // If this is the runtime prjoect, declare the array to hold all the GetAssembly functions (this .js file
            // will be loaded first, and we only want to bother creating the array once.)
            if (projectName == "mscorlib")
            {
                var global = new JsBlockStatement();
                jsCompilationUnit.Global = global;

                var assemblies = Js.Variable(SpecialNames.Assemblies, Js.Array());
                global.Local(assemblies);

                // This ensures that Function.$typeName returns `Function` -- this is important when using
                // a type function as a generic argument, since otherwise when we try to get a
                // unique key for the permuatation of type args including a type function, we would get
                // an empty string for that arg, which would break the cache.
                jsCompilationUnit.Body.Assign(Js.Reference("Function").Member(SpecialNames.TypeName), Js.Primitive("Function"));
            }

            // Declare assembly variable
            var assemblyVariable = Js.Variable("$" + projectName.MaskSpecialCharacters() + "$Assembly", Js.Null());

            jsCompilationUnit.Body.Local(assemblyVariable);

            // Declare array to store all anonymous types
            var anonymousTypes = Js.Variable(compilation.Assembly.GetAssemblyAnonymousTypesArray(), Js.Array());

            jsCompilationUnit.Body.Local(anonymousTypes);

            // Declare array to store all the type functions in the assembly
            var assemblyTypes = Js.Variable(compilation.Assembly.GetAssemblyTypesArray(), Js.Array());

            jsCompilationUnit.Body.Local(assemblyTypes);

            // Build $GetAssemblyMethod, which lazily creates a new Assembly instance
            var globalIdioms = new Idioms(null);
            var getAssembly  = Js.Function();

            getAssembly.Body.If(
                assemblyVariable.GetReference().EqualTo(Js.Null()),
                assemblyVariable.GetReference().Assign(globalIdioms.CreateAssembly(compilation.Assembly, assemblyTypes.GetReference()))
                );
            getAssembly.Body.Return(assemblyVariable.GetReference());
            jsCompilationUnit.Body.Assign(
                Js.Reference(compilation.Assembly.GetAssemblyMethodName()),
                getAssembly);

            // Declare $assembly variable
            jsCompilationUnit.Body.Local(SpecialNames.Assembly, Js.Reference(compilation.Assembly.GetAssemblyMethodName()));
            jsCompilationUnit.Body.Assign(Js.Reference(SpecialNames.Assembly).Member(SpecialNames.AssemblyTypesArray), assemblyTypes.GetReference());

            // Add $GetAssemblyMethod to global assemblies array
            jsCompilationUnit.Body.Express(Js.Reference(SpecialNames.Assemblies).Member("push").Invoke(Js.Reference(SpecialNames.Assembly)));

            // Builds out all the namespace objects.  Types live inside namepsaces, which are represented as
            // nested Javascript objects.  For example, System.Text.StringBuilder is represented (in part) as:
            //
            // System = {};
            // System.Text = {};
            // System.Text.StringBuilder = function() { ... }
            //
            // This allows access to classes using dot notation in the expected way.
            Profiler.Time("Transforming namespaces", () =>
            {
                var namespaceTransformer = new NamespaceTransformer(jsCompilationUnit.Body);
                foreach (var syntaxTree in compilation.SyntaxTrees)
                {
                    var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                    compilationUnit.Accept(namespaceTransformer);
                }
            });

            var actions = new List <Tuple <INamedTypeSymbol, Action> >();

            Profiler.Time("Get diagnostics", () =>
            {
                var diagnostics = compilation.GetDiagnostics();
                foreach (var diagnostic in diagnostics)
                {
                    if (diagnostic.Severity == DiagnosticSeverity.Error)
                    {
                        Console.WriteLine("// " + diagnostic);
                    }
                }
            });

            // Check for partial classes
            Profiler.Time("Reassemble partial classes", () =>
            {
                var partialClassReassembler = new PartialClassReassembler(project, compilation);
                compilation = partialClassReassembler.UnifyPartialTypes();
            });

/*
 *          // Write out all type functions in inheritance order.  This allows for complex references between types and
 *          // nested types.
 *          Profiler.Time("Write out type function declarations", () =>
 *          {
 *              var allTypeDeclarations = new List<INamedTypeSymbol>();
 *              foreach (var syntaxTree in compilation.SyntaxTrees)
 *              {
 *                  var semanticModel = compilation.GetSemanticModel(syntaxTree);
 *                  var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
 *                  var typeDeclarations = GetTypeDeclarations(compilationUnit);
 *                  var types = typeDeclarations.Select(x => semanticModel.GetDeclaredSymbol(x)).ToArray();
 *                  allTypeDeclarations.AddRange(types);
 *              }
 *              SweepSort(allTypeDeclarations, x => x);
 *
 *              jsCompilationUnit.Body.Express(Js.Reference(Context.Instance.SymbolNames[classType.ContainingNamespace, classType.ContainingNamespace.GetFullName()]).Member(classType.GetShortTypeName()),
 *                      Js.Reference(SpecialNames.Define).Invoke(Js.Primitive(displayName), baseType));
 *              jsCompilationUnit.Assign(Js.Reference(Context.Instance.SymbolNames[classType.ContainingNamespace, classType.ContainingNamespace.GetFullName()]).Member(classType.GetShortTypeName()),
 *                      Js.Reference(SpecialNames.Define).Invoke(Js.Primitive(displayName), baseType));
 *          });
 */

            // Scan all syntax trees for anonymous type creation expressions.  We transform them into class
            // declarations with a series of auto implemented properties.
            Profiler.Time("Running AnonymousTypeTransformer", () =>
            {
                var anonymousTypeTransformer = new AnonymousTypeTransformer(jsCompilationUnit.Body, actions);
                foreach (var syntaxTree in compilation.SyntaxTrees)
                {
                    var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                    compilationUnit.Accept(anonymousTypeTransformer);
                }
            });

            // Iterate through all the syntax trees and add entries into `actions` that correspond to type
            // declarations.
            Profiler.Time("Preparing for core transformation process", () =>
            {
                foreach (var syntaxTree in compilation.SyntaxTrees)
                {
                    var semanticModel   = compilation.GetSemanticModel(syntaxTree);
                    var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                    var transformer     = new JsTransformer(syntaxTree, semanticModel, jsCompilationUnit);

                    var typeCollector = new TypeCollector();
                    compilationUnit.Accept(typeCollector);
                    var typeDeclarations     = typeCollector.TypeDeclarations.Where(x => x.GetContainingTypeDeclaration() == null);
                    var delegateDeclarations = typeCollector.DelegateDeclarations.Where(x => x.GetContainingTypeDeclaration() == null);

                    foreach (var type in typeDeclarations)
                    {
                        var _type      = type;
                        var typeSymbol = semanticModel.GetDeclaredSymbol(type);
                        Action action  = () =>
                        {
                            var statements = (JsBlockStatement)_type.Accept(transformer);
                            jsCompilationUnit.Body.Aggregate(statements);
                        };
                        actions.Add(Tuple.Create(typeSymbol, action));
                    }
                    foreach (var type in delegateDeclarations)
                    {
                        var _type     = type;
                        Action action = () =>
                        {
                            var statements = (JsBlockStatement)_type.Accept(transformer);
                            jsCompilationUnit.Body.Aggregate(statements);
                        };
                        actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action));
                    }
                }
            });

            // Sort all the type declarations such that base types always come before subtypes.
            Profiler.Time("Sorting transformers", () => SweepSort(actions, x => x.Item1));

            var transformationActions = actions.Select(x => x.Item2).ToArray();

            Profiler.Time("Applying core transformation", () =>
            {
                foreach (var item in transformationActions)
                {
                    item();
                }
            });

            // Create cultures based on installed .NET cultures.  Presumably this is the same regardless
            // of the platform that compiled this assembly.  Only do this for the standard library.
            if (projectName == "mscorlib" && !Context.Instance.Compilation.Assembly.IsCultureInfoExportDisabled())
            {
                foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
                {
                    JsExpression target = new JsVariableReferenceExpression(Context.Instance.CultureInfo.GetTypeName()).Invoke().Member("RegisterCulture");
                    jsCompilationUnit.Body.Add(target.Invoke(new[]
                    {
                        Js.Literal(culture.Name),
                        Js.Literal(culture.DateTimeFormat.ShortDatePattern),
                        Js.Literal(culture.DateTimeFormat.LongDatePattern),
                        Js.Literal(culture.DateTimeFormat.ShortTimePattern),
                        Js.Literal(culture.DateTimeFormat.LongTimePattern),
                        Js.Literal(culture.DateTimeFormat.FullDateTimePattern),
                        Js.Literal(culture.DateTimeFormat.YearMonthPattern),
                        Js.Array(culture.DateTimeFormat.MonthNames.Select(x => Js.Literal(x)).ToArray()),
                        Js.Array(culture.DateTimeFormat.AbbreviatedMonthNames.Select(x => Js.Literal(x)).ToArray()),
                        Js.Array(culture.DateTimeFormat.DayNames.Select(x => Js.Literal(x)).ToArray())
                    }).Express());
                }
            }

            // If the project type is a console application, then invoke the Main method at the very
            // end of the file.
            var entryPoint = Context.Instance.Compilation.GetEntryPoint(CancellationToken.None);

            if (entryPoint != null)
            {
                jsCompilationUnit.Body.Express(globalIdioms.InvokeStatic(entryPoint));
            }

            // Test minification
//            var minifier = new JsMinifier();
//            jsCompilationUnit.Accept(minifier);
        }
예제 #20
0
        public async Task <Tuple <string, Project> > Compile(string projectFile)
        {
            var projectFileInfo = new FileInfo(projectFile);
            var projectFolder   = projectFileInfo.Directory.FullName;

            // These two lines are just a weird hack because you get no files back from compilation.SyntaxTrees
            // if the user file isn't modified.  Not sure why that's happening.
            var projectUserFile = projectFolder + "\\" + projectFileInfo.Name + ".user";

            if (File.Exists(projectUserFile))
            {
                File.SetLastWriteTime(projectUserFile, DateTime.Now);
            }

            var project = await MSBuildWorkspace.Create().OpenProjectAsync(projectFile);

            var         projectName = project.AssemblyName;
            Compilation compilation = await project.GetCompilationAsync();

            Context.Update(project.Solution, project, compilation);

            // Check for yield
            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                var semanticModel   = compilation.GetSemanticModel(syntaxTree);
                var yieldGenerator  = new YieldGenerator(compilation, syntaxTree, semanticModel);
                compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(yieldGenerator);
                compilation     = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath));
            }
            compilation = compilation.Clone();
            Context.Update(project.Solution, project, compilation);

            // After the basic transformation happens, we need to fix up some references afterward
            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                var semanticModel   = compilation.GetSemanticModel(syntaxTree);
                var yieldFixer      = new YieldGeneratorFixer(compilation, syntaxTree, semanticModel);
                compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(yieldFixer);
                compilation     = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath));
            }
            Context.Update(project.Solution, project, compilation);

            // Check for async
            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                var semanticModel   = compilation.GetSemanticModel(syntaxTree);
                var asyncGenerator  = new AsyncGenerator(compilation, syntaxTree, semanticModel);
                compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(asyncGenerator);
                compilation     = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath));
            }
            Context.Update(project.Solution, project, compilation);

            var jsCompilationUnit = new JsCompilationUnit {
                UseStrict = true
            };

            // If this is the runtime prjoect, declare the array to hold all the GetAssembly functions (this .js file
            // will be loaded first, and we only want to bother creating the array once.
            if (projectName == "mscorlib")
            {
                var assemblies = Js.Variable(SpecialNames.Assemblies, Js.Array());
                jsCompilationUnit.Body.Local(assemblies);

                // This ensures that Function.$typeName returns `Function` -- this is important when using
                // a type function as a generic argument, since otherwise when we try to assembly a
                // unique key for the permuatation of type args including a type function, we would get
                // an empty string for that arg, which would break the cache.
                jsCompilationUnit.Body.Assign(Js.Reference("Function").Member(SpecialNames.TypeName), Js.Primitive("Function"));
            }

            // Declare assembly variable
            var assemblyVariable = Js.Variable("$" + projectName.MaskSpecialCharacters() + "$Assembly", Js.Null());

            jsCompilationUnit.Body.Local(assemblyVariable);

            // Declare array to store all anonymous types
            var anonymousTypes = Js.Variable(compilation.Assembly.GetAssemblyAnonymousTypesArray(), Js.Array());

            jsCompilationUnit.Body.Local(anonymousTypes);

            // Declare array to store all the type functions in the assembly
            var assemblyTypes = Js.Variable(compilation.Assembly.GetAssemblyTypesArray(), Js.Array());

            jsCompilationUnit.Body.Local(assemblyTypes);

            // Build $GetAssemblyMethod, which lazily creates a new Assembly instance
            var globalIdioms = new Idioms(null);
            var getAssembly  = Js.Function();

            getAssembly.Body.If(
                assemblyVariable.GetReference().EqualTo(Js.Null()),
                assemblyVariable.GetReference().Assign(globalIdioms.CreateAssembly(compilation.Assembly, assemblyTypes.GetReference()))
                );
            getAssembly.Body.Return(assemblyVariable.GetReference());
            jsCompilationUnit.Body.Assign(
                Js.Reference(compilation.Assembly.GetAssemblyMethodName()),
                getAssembly);

            // Add $GetAssemblyMethod to global assemblies array
            jsCompilationUnit.Body.Express(Js.Reference("$assemblies").Member("push").Invoke(Js.Reference(compilation.Assembly.GetAssemblyMethodName())));

            // Builds out all the namespace objects.  Types live inside namepsaces, which are represented as
            // nested Javascript objects.  For example, System.Text.StringBuilder is represented (in part) as:
            //
            // System = {};
            // System.Text = {};
            // System.Text.StringBuilder = function() { ... }
            //
            // This allows access to classes using dot notation in the expected way.
            var namespaceTransformer = new NamespaceTransformer(jsCompilationUnit.Body);

            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                compilationUnit.Accept(namespaceTransformer);
            }

            var actions = new List <Tuple <INamedTypeSymbol, Action> >();

            // Scan all syntax trees for anonymous type creation expressions.  We transform them into class
            // declarations with a series of auto implemented properties.
            var anonymousTypeTransformer = new AnonymousTypeTransformer(jsCompilationUnit.Body, actions);

            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                compilationUnit.Accept(anonymousTypeTransformer);
            }

            var diagnostics = compilation.GetDiagnostics();

            foreach (var diagnostic in diagnostics)
            {
                Console.WriteLine("// " + diagnostic);
            }

            // Iterate through all the syntax trees and add entries into `actions` that correspond to type
            // declarations.
            foreach (var syntaxTree in compilation.SyntaxTrees)
            {
                var semanticModel   = compilation.GetSemanticModel(syntaxTree);
                var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot();
                var transformer     = new JsTransformer(syntaxTree, semanticModel);

                var typeDeclarations = GetTypeDeclarations(compilationUnit);
                foreach (var type in typeDeclarations)
                {
                    Action action = () =>
                    {
                        var statements = (JsBlockStatement)type.Accept(transformer);
                        jsCompilationUnit.Body.Aggregate(statements);
                    };
                    actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action));
                }
                var delegateDeclarations = GetDelegates(compilationUnit);
                foreach (var type in delegateDeclarations)
                {
                    Action action = () =>
                    {
                        var statements = (JsBlockStatement)type.Accept(transformer);
                        jsCompilationUnit.Body.Aggregate(statements);
                    };
                    actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action));
                }
            }

            // Sort all the type declarations such that base types always come before subtypes.
            SweepSort(actions);
            foreach (var item in actions)
            {
                item.Item2();
            }

            // If the project type is a console application, then invoke the Main method at the very
            // end of the file.
            var entryPoint = compilation.GetEntryPoint(CancellationToken.None);

            if (entryPoint != null)
            {
                jsCompilationUnit.Body.Express(globalIdioms.InvokeStatic(entryPoint));
            }

            // Test minification
//            var minifier = new JsMinifier();
//            jsCompilationUnit.Accept(minifier);

            // Write out the compiled Javascript file to the target location.
            var renderer = new JsRenderer();

            jsCompilationUnit.Accept(renderer);
            return(Tuple.Create(renderer.Output, project));
        }