Esempio n. 1
0
        protected virtual List <IBundleContributor> GetContributors(BundleConfigurationCollection bundles, string bundleName)
        {
            var contributors = new List <IBundleContributor>();

            AddContributorsWithBaseBundles(contributors, bundles, bundleName);

            for (var i = 0; i < contributors.Count; ++i)
            {
                var extensions = ContributorOptions.Extensions(contributors[i].GetType()).GetAll();
                if (extensions.Count > 0)
                {
                    contributors.InsertRange(i + 1, extensions);
                    i += extensions.Count;
                }
            }

            return(contributors);
        }
Esempio n. 2
0
        protected virtual async Task <IReadOnlyList <string> > GetBundleFilesAsync(BundleConfigurationCollection bundles, string bundleName, IBundler bundler)
        {
            var contributors     = GetContributors(bundles, bundleName);
            var bundleFiles      = RequestResources.TryAdd(await GetBundleFilesAsync(contributors));
            var dynamicResources = RequestResources.TryAdd(await GetDynamicResourcesAsync(contributors));

            if (!IsBundlingEnabled())
            {
                return(bundleFiles.Union(dynamicResources).ToImmutableList());
            }

            var bundleRelativePath =
                Options.BundleFolderName.EnsureEndsWith('/') +
                bundleName + "." + bundleFiles.JoinAsString("|").ToMd5() + "." + bundler.FileExtension;

            var cacheItem = BundleCache.GetOrAdd(bundleRelativePath, () =>
            {
                var cacheValue = new BundleCacheItem(
                    new List <string>
                {
                    "/" + bundleRelativePath
                }
                    );

                WatchChanges(cacheValue, bundleFiles, bundleRelativePath);

                var bundleResult = bundler.Bundle(
                    new BundlerContext(
                        bundleRelativePath,
                        bundleFiles,
                        IsMinficationEnabled()
                        )
                    );

                SaveBundleResult(bundleRelativePath, bundleResult);

                return(cacheValue);
            });

            return(cacheItem.Files.Union(dynamicResources).ToImmutableList());
        }
Esempio n. 3
0
        protected virtual void AddContributorsWithBaseBundles(List <IBundleContributor> contributors, BundleConfigurationCollection bundles, string bundleName)
        {
            var bundleConfiguration = bundles.Get(bundleName);

            foreach (var baseBundleName in bundleConfiguration.BaseBundles)
            {
                AddContributorsWithBaseBundles(contributors, bundles, baseBundleName); //Recursive call
            }

            var selfContributors = bundleConfiguration.Contributors.GetAll();

            if (selfContributors.Any())
            {
                contributors.AddRange(selfContributors);
            }
        }