/// <summary>
        /// Constructs a instance of script transformer
        /// </summary>
        /// <param name="minifier">Minifier</param>
        /// <param name="translators">List of translators</param>
        /// <param name="postProcessors">List of postprocessors</param>
        /// <param name="ignorePatterns">List of patterns of files and directories that
        /// should be ignored when processing</param>
        /// <param name="coreConfig">Configuration settings of core</param>
        public ScriptTransformer(IMinifier minifier, IList <ITranslator> translators, IList <IPostProcessor> postProcessors,
                                 string[] ignorePatterns, CoreSettings coreConfig)
            : base(ignorePatterns, coreConfig)
        {
            ScriptSettings scriptConfig = coreConfig.Scripts;

            UsePreMinifiedFiles            = scriptConfig.UsePreMinifiedFiles;
            CombineFilesBeforeMinification = scriptConfig.CombineFilesBeforeMinification;

            _jsFilesWithMsStyleExtensions = Utils.ConvertToStringCollection(
                coreConfig.JsFilesWithMicrosoftStyleExtensions.Replace(';', ','),
                ',', true, true);

            IAssetContext scriptContext = BundleTransformerContext.Current.Scripts;

            _minifier    = minifier ?? scriptContext.GetDefaultMinifierInstance();
            _translators = (translators ?? scriptContext.GetDefaultTranslatorInstances())
                           .ToList()
                           .AsReadOnly()
            ;
            _postProcessors = (postProcessors ?? scriptContext.GetDefaultPostProcessorInstances())
                              .ToList()
                              .AsReadOnly()
            ;
        }
 public AzureStreamingService(ILogger <AzureStreamingService> logger, IAzureMediaMethods azureMediaMethods,
                              IAssetContext assetContext)
 {
     _logger            = logger;
     _azureMediaMethods = azureMediaMethods;
     _assetContext      = assetContext;
 }
Beispiel #3
0
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IWebHostEnvironment)context.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
            IFileProvider fileProvider = context.Asset.GetFileProvider(env);

            foreach (string route in context.Content.Keys)
            {
                IFileInfo file     = fileProvider.GetFileInfo(route);
                var       settings = new ScssOptions {
                    InputFile = file.PhysicalPath
                };
                if (options != null)
                {
                    settings.IncludePaths.AddRange(options.IncludePaths);
                    settings.GenerateSourceMap      = options.GenerateSourceMap;
                    settings.Indent                 = options.Indent;
                    settings.IsIndentedSyntaxSource = options.IsIndentedSyntaxSource;
                    settings.Linefeed               = options.Linefeed;
                    settings.OmitSourceMapUrl       = options.OmitSourceMapUrl;
                    settings.SourceComments         = options.SourceComments;
                    settings.SourceMapContents      = options.SourceMapContents;
                    settings.SourceMapEmbed         = options.SourceMapEmbed;
                    settings.SourceMapRoot          = options.SourceMapRoot;
                }

                ScssResult result = Scss.ConvertToCss(context.Content[route].AsString(), settings);

                content[route] = result.Css.AsByteArray();
            }

            context.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #4
0
        public override Task ExecuteAsync(IAssetContext config)
        {
            var content = new Dictionary <string, byte[]>();

            foreach (string key in config.Content.Keys)
            {
                if (key.EndsWith(".min.js"))
                {
                    continue;
                }

                string       input    = config.Content[key].AsString();
                UglifyResult result   = Uglify.Js(input, Settings);
                string       minified = result.Code;

                if (result.HasErrors)
                {
                    minified = $"/* {string.Join("\r\n", result.Errors)} */\r\n" + input;
                }

                content[key] = minified.AsByteArray();
            }

            config.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #5
0
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IWebHostEnvironment)context.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
            IFileProvider fileProvider = context.Asset.GetFileProvider(env);

            foreach (string route in context.Content.Keys)
            {
                IFileInfo file = fileProvider.GetFileInfo(route);

                var settings = new ScssOptions {
                    InputFile = file.PhysicalPath
                };
                settings.TryImport =
                    (string file, string parentPath, out string scss, out string map) =>
                {
                    // System.Console.WriteLine("File to import is " + file);
                    // System.Console.WriteLine("Parent Path is " + parentPath);
                    var basePath = "/styles/";
                    var path     = GetFilePath(file, parentPath);
                    var f        = fileProvider.GetFileInfo(basePath + path + ".scss");
                    using (var reader = new System.IO.StreamReader(f.CreateReadStream(), System.Text.Encoding.UTF8))
                    {
                        string value = reader.ReadToEnd();
                        // System.Console.WriteLine("SCSS is " + value);
                        scss = value;
                        map  = null;
                    }
                    return(true);
                };

                System.Console.WriteLine("FP " + fileProvider.GetType().Name);
                System.Console.WriteLine("Route is " + route);
                System.Console.WriteLine("File is " + file.PhysicalPath);
                System.Console.WriteLine("Settings: " + settings.IncludePaths);

                ScssResult result = Scss.ConvertToCss(context.Content[route].AsString(), settings);

                content[route] = result.Css.AsByteArray();
            }

            context.Content = content;

            foreach (string key in context.Content.Keys)
            {
                IFileInfo input  = fileProvider.GetFileInfo(key);
                IFileInfo output = fileProvider.GetFileInfo(context.Asset.Route);

                System.Console.WriteLine("Input is " + input.Name + " + " + input.PhysicalPath);
                System.Console.WriteLine("Output is " + output.Name + " + " + output.PhysicalPath);
                string absoluteOutputPath = new System.IO.FileInfo(output.PhysicalPath).FullName;
                System.Console.WriteLine("Output actual path is " + absoluteOutputPath);
            }


            return(Task.CompletedTask);
        }
Beispiel #6
0
        public AssetContextShould()
        {
            InjectComponentsArray(new IComponent[] { new TestComponent1(), new TestComponent2() });

            var assets = Fixture.CreateMany <TestAsset>().ToArray();

            _asset        = assets[0];
            _assetContext = new AssetContext(assets);
            _assetsCount  = assets.Length;
        }
        public override Task ExecuteAsync(IAssetContext context)
        {
            foreach (string file in context.Content.Keys)
            {
                string ext = Path.GetExtension(file);

                if (!_extensions.Any(e => e.Equals(ext, StringComparison.OrdinalIgnoreCase)))
                {
                    throw new NotSupportedException($"The file extension \"{ext}\" is not valid for this asset");
                }
            }

            return Task.CompletedTask;
        }
Beispiel #8
0
        public EntityState(
            IActorContext actors,
            IActorFactory actorFactory,
            IAssetContext assets,
            IConvertersCollection converters,
            SourceDescriptions descriptions)
        {
            Actors = actors;
            Assets = assets;

            _actorFactory = actorFactory;
            _converters   = converters;
            _descriptions = descriptions;
        }
        public override Task ExecuteAsync(IAssetContext context)
        {
            var    content = new Dictionary <string, byte[]>();
            string header  = $"/*\r\n   {_header}\r\n*/";

            foreach (string route in context.Content.Keys)
            {
                string update = header + Environment.NewLine + context.Content[route].AsString();
                content[route] = update.AsByteArray();
            }

            context.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #10
0
        public override Task ExecuteAsync(IAssetContext context)
        {
            var sb = new StringBuilder();

            foreach (byte[] bytes in context.Content.Values)
            {
                sb.AppendLine(bytes.AsString());
            }

            context.Content = new Dictionary <string, byte[]>
            {
                { Guid.NewGuid().ToString(), sb.ToString().AsByteArray() }
            };

            return(Task.CompletedTask);
        }
        public override async Task ExecuteAsync(IAssetContext config)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IWebHostEnvironment)config.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
            var           pipeline     = (IAssetPipeline)config.HttpContext.RequestServices.GetService(typeof(IAssetPipeline));
            IFileProvider fileProvider = config.Asset.GetFileProvider(env);

            foreach (string key in config.Content.Keys)
            {
                IFileInfo input = fileProvider.GetFileInfo(key);

                content[key] = await InlineAsync(config.Content[key].AsString(), input, env);
            }

            config.Content = content;
        }
Beispiel #12
0
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var content = new Dictionary <string, byte[]>();

            foreach (string route in context.Content.Keys)
            {
                string input = context.Content[route].AsString()
                               .Trim(new char[] { '\uFEFF', '\u200B' }); // Removes the BOM

                var result = Markdig.Markdown.ToHtml(input, _options);

                content[route] = result.AsByteArray();
            }

            context.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #13
0
        public override Task ExecuteAsync(IAssetContext context)
        {
            var sb = new StringBuilder();

            foreach (byte[] bytes in context.Content.Values)
            {
                sb.AppendLine(bytes.AsString());
            }

            // Use existing first key as new key to have a valid input for subsequent calls to GetFileInfo or a Guid, if there is no content
            var newKey = context.Content.Keys.FirstOrDefault() ?? Guid.NewGuid().ToString();

            context.Content = new Dictionary <string, byte[]>
            {
                { newKey, sb.ToString().AsByteArray() }
            };
            return(Task.CompletedTask);
        }
        public override Task ExecuteAsync(IAssetContext config)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IWebHostEnvironment)config.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
            var           pipeline     = (IAssetPipeline)config.HttpContext.RequestServices.GetService(typeof(IAssetPipeline));
            IFileProvider fileProvider = config.Asset.GetFileProvider(env);

            foreach (string key in config.Content.Keys)
            {
                string inputPath  = Path.Combine(env.WebRootPath, key.TrimStart('/'));
                string outputPath = Path.Combine(env.WebRootPath, config.Asset.Route.TrimStart('/'));
                content[key] = Adjust(config.Content[key].AsString(), inputPath, outputPath);
            }

            config.Content = content;

            return(Task.CompletedTask);
        }
        /// <summary>Constructs a instance of style transformer</summary>
        /// <param name="minifier">Minifier</param>
        /// <param name="translators">List of translators</param>
        /// <param name="postProcessors">List of postprocessors</param>
        /// <param name="ignorePatterns">List of patterns of files and directories that
        /// should be ignored when processing</param>
        /// <param name="coreConfig">Configuration settings of core</param>
        public StyleTransformer(
            IMinifier minifier,
            IList <ITranslator> translators,
            IList <IPostProcessor> postProcessors,
            string[] ignorePatterns,
            CoreSettings coreConfig)
            : base(ignorePatterns, coreConfig)
        {
            StyleSettings styles1 = coreConfig.Styles;

            this.UsePreMinifiedFiles            = styles1.UsePreMinifiedFiles;
            this.CombineFilesBeforeMinification = styles1.CombineFilesBeforeMinification;
            IAssetContext styles2 = BundleTransformerContext.Current.Styles;

            this._minifier       = minifier ?? styles2.GetDefaultMinifierInstance();
            this._translators    = (translators ?? styles2.GetDefaultTranslatorInstances()).ToList <ITranslator>().AsReadOnly();
            this._postProcessors = (postProcessors ?? styles2.GetDefaultPostProcessorInstances()).ToList <IPostProcessor>().AsReadOnly();
        }
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext config)
        {
            _stringProvider = config.HttpContext.RequestServices.GetService <IStringLocalizer <T> >();
            var content = new Dictionary <string, byte[]>();

            foreach (string route in config.Content.Keys)
            {
                content[route] = Localize(config.Content[route].AsString()).AsByteArray();
            }

            if (config.Content.Keys.Any())
            {
                config.HttpContext.Response.Headers[HeaderNames.Vary] = "Accept-Language";
            }

            config.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #17
0
        public override Task ExecuteAsync(IAssetContext config)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IHostingEnvironment)config.HttpContext.RequestServices.GetService(typeof(IHostingEnvironment));
            var           pipeline     = (IAssetPipeline)config.HttpContext.RequestServices.GetService(typeof(IAssetPipeline));
            IFileProvider fileProvider = config.Asset.GetFileProvider(env);

            foreach (string key in config.Content.Keys)
            {
                IFileInfo input  = fileProvider.GetFileInfo(key);
                IFileInfo output = fileProvider.GetFileInfo(config.Asset.Route);

                content[key] = Adjust(config.Content[key].AsString(), input, output, env);
            }

            config.Content = content;

            return(Task.CompletedTask);
        }
Beispiel #18
0
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var content = new Dictionary<string, byte[]>();
            var env = (IWebHostEnvironment)context.HttpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
            IFileProvider fileProvider = context.Asset.GetFileProvider(env);

            foreach (string route in context.Content.Keys)
            {
                IFileInfo file = fileProvider.GetFileInfo(route);
                var settings = new ScssOptions { InputFile = file.PhysicalPath };

                ScssResult result = Scss.ConvertToCss(context.Content[route].AsString(), settings);

                content[route] = result.Css.AsByteArray();
            }

            context.Content = content;

            return Task.CompletedTask;
        }
Beispiel #19
0
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = context.HttpContext.RequestServices.GetRequiredService <IWebHostEnvironment>();
            IFileProvider fileProvider = context.Asset.GetFileProvider(env);

            var engine = new EngineFactory().GetEngine();

            foreach (string route in context.Content.Keys)
            {
                IFileInfo file = fileProvider.GetFileInfo(route);

                engine.CurrentDirectory = Path.GetDirectoryName(file.PhysicalPath);
                var css = engine.TransformToCss(context.Content[route].AsString(), null);

                content[route] = System.Text.Encoding.UTF8.GetBytes(css);
            }

            context.Content = content;

            return(Task.CompletedTask);
        }
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public Task ExecuteAsync(IAssetContext context)
        {
            var           content      = new Dictionary <string, byte[]>();
            var           env          = (IHostingEnvironment)context.HttpContext.RequestServices.GetService(typeof(IHostingEnvironment));
            IFileProvider fileProvider = context.Asset.GetFileProvider(env);

            var builder = new StringBuilder();

            // Javascript module for Angular that uses templateCache
            builder.AppendFormat(@"angular.module('{0}',[]).run(['$templateCache',function($templateCache){{",
                                 _moduleName);
            foreach (string route in context.Content.Keys)
            {
                IFileInfo file      = fileProvider.GetFileInfo(route);
                string    inputFile = file.PhysicalPath;

                string       input    = context.Content[route].AsString().Replace("\r\n", "").Replace("'", "\\'");
                UglifyResult result   = Uglify.Html(input, Settings);
                string       minified = result.Code;

                if (result.HasErrors)
                {
                    minified = $"// {string.Join("\r\n", result.Errors)} ${input}";
                }

                builder.AppendFormat(@"$templateCache.put('{0}{1}','{2}');", _path, file.Name, minified);

                //content[route] = cx.AsByteArray();
            }
            builder.Append(@"}]);");
            string cx = builder.ToString();

            content.Add(Guid.NewGuid().ToString(), cx.AsByteArray());
            context.Content = content;

            return(Task.CompletedTask);
        }
        /// <summary>
        /// Executes the processor on the specified configuration.
        /// </summary>
        public override async Task ExecuteAsync(IAssetContext context)
        {
            var env          = (IHostingEnvironment)context.HttpContext.RequestServices.GetService(typeof(IHostingEnvironment));
            var fileProvider = context.Asset.GetFileProvider(env);
            var content      = new Dictionary <string, byte[]>();

            if (!EnsureNodeFiles("WebOptimizer.TypeScript.node_files.zip"))
            {
                return;
            }

            string module = Path.Combine(InstallDirectory, "typescript.js");

            foreach (string route in context.Content.Keys)
            {
                var file   = fileProvider.GetFileInfo(route);
                var input  = context.Content[route].AsString();
                var result = await NodeServices.InvokeAsync <string>(module, input, file.PhysicalPath);

                content[route] = result.AsByteArray();
            }

            context.Content = content;
        }
Beispiel #22
0
        public override Task ExecuteAsync(IAssetContext context)
        {
            var sb = new StringBuilder();

            foreach (byte[] bytes in context.Content.Values)
            {
                sb.AppendLine(bytes.AsString());
            }

            // Use Guid as key and append .min if all the included files seem to be minified
            var newKey = Guid.NewGuid().ToString();

            Regex regex = new Regex(@"(?i:.min.(css|js|html)$)");

            if (context.Content.Keys.All(k => regex.IsMatch(k)))
            {
                newKey += ".min";
            }
            context.Content = new Dictionary <string, byte[]>
            {
                { newKey, sb.ToString().AsByteArray() }
            };
            return(Task.CompletedTask);
        }
Beispiel #23
0
 /// <summary>
 /// Executes the processor on the specified configuration.
 /// </summary>
 public abstract Task ExecuteAsync(IAssetContext context);
Beispiel #24
0
 /// <summary>
 /// Gets the custom key that should be used when calculating the memory cache key.
 /// </summary>
 public string CacheKey(HttpContext context, IAssetContext config) => String.Empty;
Beispiel #25
0
        public override Task ExecuteAsync(IAssetContext config)
        {
            config.HttpContext.Response.Headers[_name] = _value;

            return(Task.CompletedTask);
        }