Sha256: 816388c5a3d34286202f36f10d43c7df0cc7fa3bc17f39a7838c4f5624dfa298

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true
require 'sewing_kit/webpack/manifest/base'
require 'browserslist_useragent'

module SewingKit
  module Webpack
    class Manifest
      class Production < Base
        @metadata = nil
        @metadata_path = nil

        # :nodoc:
        def asset_dependencies(entrypoint_name, user_agent)
          metadata_for(user_agent)['entrypoints'][entrypoint_name]
        end

        def metadata
          SewingKit::CachedProductionManifest
        end

        private

        def metadata_for(user_agent)
          if metadata.is_a?(Array)
            find_matching_metadata(metadata, user_agent)
          else
            metadata
          end
        end

        def find_matching_metadata(consolidated_metadata, user_agent)
          found = consolidated_metadata.find do |metadata|
            return nil if metadata["resolvedBrowsers"].nil?
            matcher = BrowserslistUseragent::Match.new(metadata["resolvedBrowsers"], user_agent)

            matcher.browser? && matcher.version?(allow_higher: true)
          end

          found || consolidated_metadata.last
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sewing_kit-0.91.0 lib/sewing_kit/webpack/manifest/production.rb