public IJsMinifier CreateMinifier(string minifierName)
        {
            #if DNXCORE50
            IJsMinifier minifier = new CrockfordJsMinifier();
            #else
            IJsMinifier minifier;

            switch (minifierName)
            {
                case "CrockfordJsMinifier":
                    minifier = new CrockfordJsMinifier();
                    break;
                case "MsAjaxJsMinifier":
                    minifier = new MsAjaxJsMinifier();
                    break;
                case "YuiJsMinifier":
                    minifier = new YuiJsMinifier();
                    break;
                default:
                    throw new NotSupportedException();
            }
            #endif

            return minifier;
        }
Пример #2
0
		public IJsMinifier CreateMinifier(string minifierName)
		{
			IJsMinifier minifier;

			switch (minifierName)
			{
				case "CrockfordJsMinifier":
					minifier = new CrockfordJsMinifier();
					break;
#if !NETSTANDARD1_6
				case "MsAjaxJsMinifier":
					minifier = new MsAjaxJsMinifier();
					break;
				case "YuiJsMinifier":
					minifier = new YuiJsMinifier();
					break;
#endif
				case "NUglifyJsMinifier":
					minifier = new NUglifyJsMinifier();
					break;
				default:
					throw new NotSupportedException();
			}

			return minifier;
		}
Пример #3
0
        public async Task<Stream> ModifyJs(Stream sourceStream, bool enableMinification)
        {
            using (sourceStream)
            {
                string content;

                using (var memoryStream = new MemoryStream())
                {
                    await sourceStream.CopyToAsync(memoryStream).ConfigureAwait(false);

                    content = Encoding.UTF8.GetString(memoryStream.ToArray());

                    if (enableMinification)
                    {
                        try
                        {
                            var result = new CrockfordJsMinifier().Minify(content, false, Encoding.UTF8);

                            if (result.Errors.Count > 0)
                            {
                                _logger.Error("Error minifying javascript: " + result.Errors[0].Message);
                            }
                            else
                            {
                                content = result.MinifiedContent;
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.ErrorException("Error minifying javascript", ex);
                        }
                    }
                }

                var bytes = Encoding.UTF8.GetBytes(content);

                return new MemoryStream(bytes);
            }
        }
Пример #4
0
        /// <summary>
        /// Gets a stream containing all concatenated javascript
        /// </summary>
        /// <returns>Task{Stream}.</returns>
        private async Task<Stream> GetAllJavascript(string mode, string culture, string version, bool enableMinification)
        {
            var memoryStream = new MemoryStream();
            var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine);

            await AppendResource(memoryStream, "bower_components/jquery/dist/jquery.min.js", newLineBytes).ConfigureAwait(false);

            //await AppendLocalization(memoryStream, culture, excludePhrases).ConfigureAwait(false);
            await memoryStream.WriteAsync(newLineBytes, 0, newLineBytes.Length).ConfigureAwait(false);

            if (!string.IsNullOrWhiteSpace(mode))
            {
                var appModeBytes = Encoding.UTF8.GetBytes(string.Format("window.appMode='{0}';", mode));
                await memoryStream.WriteAsync(appModeBytes, 0, appModeBytes.Length).ConfigureAwait(false);
            }

            // Write the version string for the dashboard comparison function
            var versionString = string.Format("window.dashboardVersion='{0}';", version);
            var versionBytes = Encoding.UTF8.GetBytes(versionString);

            await memoryStream.WriteAsync(versionBytes, 0, versionBytes.Length).ConfigureAwait(false);
            await memoryStream.WriteAsync(newLineBytes, 0, newLineBytes.Length).ConfigureAwait(false);

            var builder = new StringBuilder();

            var commonFiles = new[]
            {
                "bower_components/requirejs/require.js",
                "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js",
                "thirdparty/browser.js",
                "thirdparty/jquery.unveil-custom.js",
                "apiclient/logger.js",
                "apiclient/md5.js",
                "apiclient/sha1.js",
                "apiclient/store.js",
                "apiclient/device.js",
                "apiclient/credentials.js",
                "apiclient/ajax.js",
                "apiclient/events.js",
                "apiclient/deferred.js",
                "apiclient/apiclient.js"
            }.ToList();

            commonFiles.Add("apiclient/connectionmanager.js");

            foreach (var file in commonFiles)
            {
                using (var fs = _fileSystem.GetFileStream(GetDashboardResourcePath(file), FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
                {
                    using (var streamReader = new StreamReader(fs))
                    {
                        var text = await streamReader.ReadToEndAsync().ConfigureAwait(false);
                        builder.Append(text);
                        builder.Append(Environment.NewLine);
                    }
                }
            }

            foreach (var file in GetScriptFiles())
            {
                var path = GetDashboardResourcePath("scripts/" + file);

                using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
                {
                    using (var streamReader = new StreamReader(fs))
                    {
                        var text = await streamReader.ReadToEndAsync().ConfigureAwait(false);
                        builder.Append(text);
                        builder.Append(Environment.NewLine);
                    }
                }
            }

            var js = builder.ToString();

            if (enableMinification)
            {
                try
                {
                    var result = new CrockfordJsMinifier().Minify(js, false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        _logger.Error("Error minifying javascript: " + result.Errors[0].Message);
                    }
                    else
                    {
                        js = result.MinifiedContent;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error minifying javascript", ex);
                }
            }

            var bytes = Encoding.UTF8.GetBytes(js);
            await memoryStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);

            memoryStream.Position = 0;
            return memoryStream;
        }
Пример #5
0
        public IEnumerable<IDocument> Execute(IReadOnlyList<IDocument> inputs, IExecutionContext context)
        {
            CrockfordJsMinifier minifier = new CrockfordJsMinifier();

            return Minify(inputs, context, (x) => minifier.Minify(x, _isInlineCode), "JS");
        }