Sha256: 7877d6fd111db857c10ee276fe4f4f8a1ced7f098a1398e98d624a5a8512e801

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require "sewing_kit/webpack/webpack"

module SewingKit
  module Webpack
    class Manifest
      class Base
        def initialize
          @metadata = nil
        end

        def clear_cache!
          @metadata = nil
        end

        def manifest
          current_metadata = metadata

          if current_metadata.is_a?(Array)
            all_assets = current_metadata.flat_map do |data|
              data["assets"]["all"].values
            end

            # sewing-kit asset manifests return a numerically indexed hash, not a true array,
            # so we need to change it back to a hash for compatibility
            asset_hash = all_assets.each_with_index
              .collect { |asset, index| [index, asset] }
              .to_h

            {
              "all" => asset_hash,
            }
          else
            current_metadata["assets"]
          end
        end

        protected

        def load_metadata_from_fs(path)
          begin
            content = File.read(path)
          rescue => e
            raise ManifestLoadError.new(path, e)
          end

          parse_metadata(content)
        end

        private

        def parse_metadata(json)
          JSON.parse(json)
        rescue => e
          raise ManifestParseError, e
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sewing_kit-0.130.1 lib/sewing_kit/webpack/manifest/base.rb