js_dependency 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +5 -5
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +6 -6
- data/README.md +2 -0
- data/lib/js_dependency/extractor/extract_import_path.rb +80 -0
- data/lib/js_dependency/extractor/extract_script_tag.rb +28 -0
- data/lib/js_dependency/extractor/extract_src_path.rb +38 -0
- data/lib/js_dependency/index_creator.rb +17 -4
- data/lib/js_dependency/version.rb +1 -1
- metadata +5 -4
- data/lib/js_dependency/extract_import_path.rb +0 -77
- data/lib/js_dependency/extract_script_tag.rb +0 -26
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 201aa2538971ea1e938c32236410e2b31ada21abbcd9f90141b84b08b132e7bb
         | 
| 4 | 
            +
              data.tar.gz: fd6c9eb934ea1f884f885e0bce39c989ab2536a10faa33f900bcc95418f41fa6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0641c8506997b0bf21e4ec9cede06096fbc9b523e8e4e39954bb4a63eb73d551772945efa73c7e1098b0481cf70b0fc87eb291140f57db6b7599901b958a1b78
         | 
| 7 | 
            +
              data.tar.gz: c0c38b6e23cb29d54a40009aba2290543d9706366eb45a092cbbd4e47817972e161e0830bbc51081e76bbd85899247d02bf851345030126c715e2e4e6e2d6e8e
         | 
    
        data/.rubocop_todo.yml
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            # This configuration was generated by
         | 
| 2 2 | 
             
            # `rubocop --auto-gen-config`
         | 
| 3 | 
            -
            # on 2022- | 
| 3 | 
            +
            # on 2022-08-11 04:37:50 UTC using RuboCop version 1.34.1.
         | 
| 4 4 | 
             
            # The point is for the user to remove these configuration records
         | 
| 5 5 | 
             
            # one by one as the offenses are removed from the code base.
         | 
| 6 6 | 
             
            # Note that changes in the inspected code, or installation of new
         | 
| 7 7 | 
             
            # versions of RuboCop, may require this file to be generated again.
         | 
| 8 8 |  | 
| 9 9 | 
             
            # Offense count: 5
         | 
| 10 | 
            -
            # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
         | 
| 10 | 
            +
            # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes.
         | 
| 11 11 | 
             
            Metrics/AbcSize:
         | 
| 12 12 | 
             
              Max: 42
         | 
| 13 13 |  | 
| @@ -17,12 +17,12 @@ Metrics/ClassLength: | |
| 17 17 | 
             
              Max: 129
         | 
| 18 18 |  | 
| 19 19 | 
             
            # Offense count: 5
         | 
| 20 | 
            -
            # Configuration parameters: IgnoredMethods.
         | 
| 20 | 
            +
            # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
         | 
| 21 21 | 
             
            Metrics/CyclomaticComplexity:
         | 
| 22 22 | 
             
              Max: 18
         | 
| 23 23 |  | 
| 24 24 | 
             
            # Offense count: 9
         | 
| 25 | 
            -
            # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
         | 
| 25 | 
            +
            # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
         | 
| 26 26 | 
             
            Metrics/MethodLength:
         | 
| 27 27 | 
             
              Max: 26
         | 
| 28 28 |  | 
| @@ -32,7 +32,7 @@ Metrics/ParameterLists: | |
| 32 32 | 
             
              Max: 9
         | 
| 33 33 |  | 
| 34 34 | 
             
            # Offense count: 5
         | 
| 35 | 
            -
            # Configuration parameters: IgnoredMethods.
         | 
| 35 | 
            +
            # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
         | 
| 36 36 | 
             
            Metrics/PerceivedComplexity:
         | 
| 37 37 | 
             
              Max: 19
         | 
| 38 38 |  | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                js_dependency (0.3. | 
| 4 | 
            +
                js_dependency (0.3.6)
         | 
| 5 5 | 
             
                  pathname
         | 
| 6 6 | 
             
                  thor
         | 
| 7 7 | 
             
                  yaml
         | 
| @@ -18,7 +18,7 @@ GEM | |
| 18 18 | 
             
                docile (1.4.0)
         | 
| 19 19 | 
             
                json (2.6.2)
         | 
| 20 20 | 
             
                parallel (1.22.1)
         | 
| 21 | 
            -
                parser (3.1.2. | 
| 21 | 
            +
                parser (3.1.2.1)
         | 
| 22 22 | 
             
                  ast (~> 2.4.1)
         | 
| 23 23 | 
             
                parslet (2.0.0)
         | 
| 24 24 | 
             
                pathname (0.2.0)
         | 
| @@ -50,17 +50,17 @@ GEM | |
| 50 50 | 
             
                  rspec (>= 2.13, < 4)
         | 
| 51 51 | 
             
                  unparser
         | 
| 52 52 | 
             
                rspec-support (3.11.0)
         | 
| 53 | 
            -
                rubocop (1. | 
| 53 | 
            +
                rubocop (1.34.1)
         | 
| 54 54 | 
             
                  json (~> 2.3)
         | 
| 55 55 | 
             
                  parallel (~> 1.10)
         | 
| 56 | 
            -
                  parser (>= 3.1. | 
| 56 | 
            +
                  parser (>= 3.1.2.1)
         | 
| 57 57 | 
             
                  rainbow (>= 2.2.2, < 4.0)
         | 
| 58 58 | 
             
                  regexp_parser (>= 1.8, < 3.0)
         | 
| 59 59 | 
             
                  rexml (>= 3.2.5, < 4.0)
         | 
| 60 | 
            -
                  rubocop-ast (>= 1. | 
| 60 | 
            +
                  rubocop-ast (>= 1.20.0, < 2.0)
         | 
| 61 61 | 
             
                  ruby-progressbar (~> 1.7)
         | 
| 62 62 | 
             
                  unicode-display_width (>= 1.4.0, < 3.0)
         | 
| 63 | 
            -
                rubocop-ast (1. | 
| 63 | 
            +
                rubocop-ast (1.21.0)
         | 
| 64 64 | 
             
                  parser (>= 3.1.1.0)
         | 
| 65 65 | 
             
                rubocop-performance (1.14.3)
         | 
| 66 66 | 
             
                  rubocop (>= 1.7.0, < 2.0)
         | 
    
        data/README.md
    CHANGED
    
    | @@ -6,6 +6,8 @@ Welcome to your new gem! In this directory, you'll find the files you need to be | |
| 6 6 |  | 
| 7 7 | 
             
            Analyze import dependency of JavaScript code and export mermaid format.
         | 
| 8 8 |  | 
| 9 | 
            +
            "import dependency" is analyzed from import statement of JavaScript code and src path that is added to script tag.
         | 
| 10 | 
            +
             | 
| 9 11 | 
             
            ## Installation
         | 
| 10 12 |  | 
| 11 13 | 
             
            Install the gem and add to the application's Gemfile by executing:
         | 
| @@ -0,0 +1,80 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module JsDependency
         | 
| 4 | 
            +
              module Extractor
         | 
| 5 | 
            +
                class ExtractImportPath
         | 
| 6 | 
            +
                  # @param [String] str
         | 
| 7 | 
            +
                  def initialize(str)
         | 
| 8 | 
            +
                    @str = str
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 12 | 
            +
                  # @return [Array<String>]
         | 
| 13 | 
            +
                  def call
         | 
| 14 | 
            +
                    str = @str
         | 
| 15 | 
            +
                    # import defaultExport from 'module-name';
         | 
| 16 | 
            +
                    paths = str.gsub(/import\s+\S+\s+from\s+"([^"]+)"/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 17 | 
            +
                    paths += str.gsub(/import\s+\S+\s+from\s+'([^']+)'/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    # import * as name from \"module-name\";
         | 
| 20 | 
            +
                    paths += str.gsub(/import\s+\S+\s+as\s+\S+\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 21 | 
            +
                      list << Regexp.last_match(1)
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                    paths += str.gsub(/import\s+\S+\s+as\s+\S+\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 24 | 
            +
                      list << Regexp.last_match(1)
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    # import { export1 } from \"module-name\";
         | 
| 28 | 
            +
                    # import { export1 as alias1 } from "module-name";
         | 
| 29 | 
            +
                    # import { export1 , export2 } from "module-name";
         | 
| 30 | 
            +
                    # import { foo , bar } from "module-name/path/to/specific/un-exported/file";
         | 
| 31 | 
            +
                    # import { export1 , export2 as alias2 , [...] } from "module-name";
         | 
| 32 | 
            +
                    paths += str.gsub(/import\s+\{\s+.+\s+\}\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 33 | 
            +
                      list << Regexp.last_match(1)
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                    paths += str.gsub(/import\s+\{\s+.+\s+\}\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 36 | 
            +
                      list << Regexp.last_match(1)
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    # import defaultExport, { export1 [ , [...] ] } from "module-name";
         | 
| 40 | 
            +
                    paths += str.gsub(/import\s+\S+,\s+\{\s+.+\s+\}\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 41 | 
            +
                      list << Regexp.last_match(1)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                    paths += str.gsub(/import\s+\S+,\s+\{\s+.+\s+\}\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 44 | 
            +
                      list << Regexp.last_match(1)
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                    # import defaultExport, * as name from "module-name";
         | 
| 48 | 
            +
                    paths += str.gsub(/import\s+\S+,\s+.+\s+as\s+\S+\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 49 | 
            +
                      list << Regexp.last_match(1)
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                    paths += str.gsub(/import\s+\S+,\s+.+\s+as\s+\S+\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 52 | 
            +
                      list << Regexp.last_match(1)
         | 
| 53 | 
            +
                    end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    # import "module-name";
         | 
| 56 | 
            +
                    paths += str.gsub(/import\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 57 | 
            +
                      list << Regexp.last_match(1)
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                    paths += str.gsub(/import\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 60 | 
            +
                      list << Regexp.last_match(1)
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    # var promise = import("module-name");
         | 
| 64 | 
            +
                    paths += str.gsub(/import\("([^"]+)"\)/).with_object([]) do |_, list|
         | 
| 65 | 
            +
                      list << Regexp.last_match(1)
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
                    paths += str.gsub(/import\('([^']+)'\)/).with_object([]) do |_, list|
         | 
| 68 | 
            +
                      list << Regexp.last_match(1)
         | 
| 69 | 
            +
                    end
         | 
| 70 | 
            +
                    paths.uniq.sort
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  def self.call(str)
         | 
| 76 | 
            +
                    new(str).call
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module JsDependency
         | 
| 4 | 
            +
              module Extractor
         | 
| 5 | 
            +
                class ExtractScriptTag
         | 
| 6 | 
            +
                  # @param [String] str
         | 
| 7 | 
            +
                  def initialize(str)
         | 
| 8 | 
            +
                    @str = str
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # @return [Array<String>]
         | 
| 12 | 
            +
                  def call
         | 
| 13 | 
            +
                    str = @str
         | 
| 14 | 
            +
                    scripts = str.gsub(%r{<script>(.+)</script>}m).with_object([]) do |_, list|
         | 
| 15 | 
            +
                      list << Regexp.last_match(1)
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    scripts.uniq.sort.join("\n")
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  # @param [String] str
         | 
| 22 | 
            +
                  # @return [String]
         | 
| 23 | 
            +
                  def self.call(str)
         | 
| 24 | 
            +
                    new(str).call
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module JsDependency
         | 
| 4 | 
            +
              module Extractor
         | 
| 5 | 
            +
                class ExtractSrcPath
         | 
| 6 | 
            +
                  # @param [String] str
         | 
| 7 | 
            +
                  def initialize(str)
         | 
| 8 | 
            +
                    @str = str
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # Extract JavaScript file (.js) in src path
         | 
| 12 | 
            +
                  # @return [Array<String>]
         | 
| 13 | 
            +
                  def call
         | 
| 14 | 
            +
                    str = @str
         | 
| 15 | 
            +
                    # <script src="module-name.js">
         | 
| 16 | 
            +
                    paths = str.gsub(/<script\s+src="([^']+)">/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 17 | 
            +
                    paths += str.gsub(/<script\s+src='([^']+)'>/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    filter_javascript_paths(paths).uniq.sort
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def self.call(str)
         | 
| 23 | 
            +
                    new(str).call
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  private
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  # Filter JavaScript file (.js) from Array of String
         | 
| 29 | 
            +
                  # @param [Array<String>] paths
         | 
| 30 | 
            +
                  # @return [Array<String>]
         | 
| 31 | 
            +
                  def filter_javascript_paths(paths)
         | 
| 32 | 
            +
                    paths.filter do |path|
         | 
| 33 | 
            +
                      path.end_with?(".js")
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative "extract_script_tag"
         | 
| 4 | 
            -
            require_relative "extract_import_path"
         | 
| 3 | 
            +
            require_relative "extractor/extract_script_tag"
         | 
| 4 | 
            +
            require_relative "extractor/extract_import_path"
         | 
| 5 | 
            +
            require_relative "extractor/extract_src_path"
         | 
| 5 6 | 
             
            require_relative "replace_path_alias"
         | 
| 6 7 | 
             
            require_relative "pathname_utility"
         | 
| 7 8 |  | 
| @@ -45,6 +46,7 @@ module JsDependency | |
| 45 46 |  | 
| 46 47 | 
             
                  src_pathname.glob(pattern).each_with_object({}) do |component_pathname, obj|
         | 
| 47 48 | 
             
                    import_pathnames = import_pathnames_from(component_pathname, alias_paths)
         | 
| 49 | 
            +
                    import_pathnames += src_javascript_pathnames_from(component_pathname, alias_paths)
         | 
| 48 50 |  | 
| 49 51 | 
             
                    obj[component_pathname.to_s] = import_pathnames.map(&:to_s)
         | 
| 50 52 | 
             
                    if component_pathname.basename.to_s == "index.js"
         | 
| @@ -60,11 +62,22 @@ module JsDependency | |
| 60 62 | 
             
                def import_pathnames_from(component_pathname, alias_paths)
         | 
| 61 63 | 
             
                  component_dirname = component_pathname.dirname
         | 
| 62 64 | 
             
                  script_str = extract_script_string(component_pathname)
         | 
| 63 | 
            -
                  JsDependency::ExtractImportPath.call(script_str).map do |import_path|
         | 
| 65 | 
            +
                  JsDependency::Extractor::ExtractImportPath.call(script_str).map do |import_path|
         | 
| 64 66 | 
             
                    standardize_path(import_path, alias_paths, component_dirname)
         | 
| 65 67 | 
             
                  end
         | 
| 66 68 | 
             
                end
         | 
| 67 69 |  | 
| 70 | 
            +
                # @param [Pathname] component_pathname
         | 
| 71 | 
            +
                # @param [Array<String>] alias_paths
         | 
| 72 | 
            +
                # @return [Array<Pathname>]
         | 
| 73 | 
            +
                def src_javascript_pathnames_from(component_pathname, alias_paths)
         | 
| 74 | 
            +
                  component_dirname = component_pathname.dirname
         | 
| 75 | 
            +
                  str = component_pathname.read
         | 
| 76 | 
            +
                  JsDependency::Extractor::ExtractSrcPath.call(str).map do |src_path|
         | 
| 77 | 
            +
                    standardize_path(src_path, alias_paths, component_dirname)
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 68 81 | 
             
                # @param [String] import_path
         | 
| 69 82 | 
             
                # @param [Array<String>] alias_paths
         | 
| 70 83 | 
             
                # @param [Pathname] component_dirname
         | 
| @@ -91,7 +104,7 @@ module JsDependency | |
| 91 104 | 
             
                  extname = pathname.extname
         | 
| 92 105 | 
             
                  return str unless extname == ".vue"
         | 
| 93 106 |  | 
| 94 | 
            -
                  JsDependency::ExtractScriptTag.call(str)
         | 
| 107 | 
            +
                  JsDependency::Extractor::ExtractScriptTag.call(str)
         | 
| 95 108 | 
             
                end
         | 
| 96 109 |  | 
| 97 110 | 
             
                # @param [String] path
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: js_dependency
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - junara
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-08-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: pathname
         | 
| @@ -159,8 +159,9 @@ files: | |
| 159 159 | 
             
            - js_dependency.gemspec
         | 
| 160 160 | 
             
            - lib/js_dependency.rb
         | 
| 161 161 | 
             
            - lib/js_dependency/cli.rb
         | 
| 162 | 
            -
            - lib/js_dependency/extract_import_path.rb
         | 
| 163 | 
            -
            - lib/js_dependency/extract_script_tag.rb
         | 
| 162 | 
            +
            - lib/js_dependency/extractor/extract_import_path.rb
         | 
| 163 | 
            +
            - lib/js_dependency/extractor/extract_script_tag.rb
         | 
| 164 | 
            +
            - lib/js_dependency/extractor/extract_src_path.rb
         | 
| 164 165 | 
             
            - lib/js_dependency/index_creator.rb
         | 
| 165 166 | 
             
            - lib/js_dependency/mermaid/nodes_link.rb
         | 
| 166 167 | 
             
            - lib/js_dependency/mermaid/root.rb
         | 
| @@ -1,77 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module JsDependency
         | 
| 4 | 
            -
              class ExtractImportPath
         | 
| 5 | 
            -
                # @param [String] str
         | 
| 6 | 
            -
                def initialize(str)
         | 
| 7 | 
            -
                  @str = str
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
         | 
| 11 | 
            -
                # @return [Array<String>]
         | 
| 12 | 
            -
                def call
         | 
| 13 | 
            -
                  str = @str
         | 
| 14 | 
            -
                  # import defaultExport from 'module-name';
         | 
| 15 | 
            -
                  paths = str.gsub(/import\s+\S+\s+from\s+"([^"]+)"/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 16 | 
            -
                  paths += str.gsub(/import\s+\S+\s+from\s+'([^']+)'/).with_object([]) { |_, list| list << Regexp.last_match(1) }
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  # import * as name from \"module-name\";
         | 
| 19 | 
            -
                  paths += str.gsub(/import\s+\S+\s+as\s+\S+\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 20 | 
            -
                    list << Regexp.last_match(1)
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
                  paths += str.gsub(/import\s+\S+\s+as\s+\S+\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 23 | 
            -
                    list << Regexp.last_match(1)
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  # import { export1 } from \"module-name\";
         | 
| 27 | 
            -
                  # import { export1 as alias1 } from "module-name";
         | 
| 28 | 
            -
                  # import { export1 , export2 } from "module-name";
         | 
| 29 | 
            -
                  # import { foo , bar } from "module-name/path/to/specific/un-exported/file";
         | 
| 30 | 
            -
                  # import { export1 , export2 as alias2 , [...] } from "module-name";
         | 
| 31 | 
            -
                  paths += str.gsub(/import\s+\{\s+.+\s+\}\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 32 | 
            -
                    list << Regexp.last_match(1)
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
                  paths += str.gsub(/import\s+\{\s+.+\s+\}\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 35 | 
            -
                    list << Regexp.last_match(1)
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  # import defaultExport, { export1 [ , [...] ] } from "module-name";
         | 
| 39 | 
            -
                  paths += str.gsub(/import\s+\S+,\s+\{\s+.+\s+\}\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 40 | 
            -
                    list << Regexp.last_match(1)
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                  paths += str.gsub(/import\s+\S+,\s+\{\s+.+\s+\}\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 43 | 
            -
                    list << Regexp.last_match(1)
         | 
| 44 | 
            -
                  end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                  # import defaultExport, * as name from "module-name";
         | 
| 47 | 
            -
                  paths += str.gsub(/import\s+\S+,\s+.+\s+as\s+\S+\s+from\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 48 | 
            -
                    list << Regexp.last_match(1)
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
                  paths += str.gsub(/import\s+\S+,\s+.+\s+as\s+\S+\s+from\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 51 | 
            -
                    list << Regexp.last_match(1)
         | 
| 52 | 
            -
                  end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                  # import "module-name";
         | 
| 55 | 
            -
                  paths += str.gsub(/import\s+"([^"]+)"/).with_object([]) do |_, list|
         | 
| 56 | 
            -
                    list << Regexp.last_match(1)
         | 
| 57 | 
            -
                  end
         | 
| 58 | 
            -
                  paths += str.gsub(/import\s+'([^']+)'/).with_object([]) do |_, list|
         | 
| 59 | 
            -
                    list << Regexp.last_match(1)
         | 
| 60 | 
            -
                  end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                  # var promise = import("module-name");
         | 
| 63 | 
            -
                  paths += str.gsub(/import\("([^"]+)"\)/).with_object([]) do |_, list|
         | 
| 64 | 
            -
                    list << Regexp.last_match(1)
         | 
| 65 | 
            -
                  end
         | 
| 66 | 
            -
                  paths += str.gsub(/import\('([^']+)'\)/).with_object([]) do |_, list|
         | 
| 67 | 
            -
                    list << Regexp.last_match(1)
         | 
| 68 | 
            -
                  end
         | 
| 69 | 
            -
                  paths.uniq.sort
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
                # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                def self.call(str)
         | 
| 74 | 
            -
                  new(str).call
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
              end
         | 
| 77 | 
            -
            end
         | 
| @@ -1,26 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module JsDependency
         | 
| 4 | 
            -
              class ExtractScriptTag
         | 
| 5 | 
            -
                # @param [String] str
         | 
| 6 | 
            -
                def initialize(str)
         | 
| 7 | 
            -
                  @str = str
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                # @return [Array<String>]
         | 
| 11 | 
            -
                def call
         | 
| 12 | 
            -
                  str = @str
         | 
| 13 | 
            -
                  scripts = str.gsub(%r{<script>(.+)</script>}m).with_object([]) do |_, list|
         | 
| 14 | 
            -
                    list << Regexp.last_match(1)
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  scripts.uniq.sort.join("\n")
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                # @param [String] str
         | 
| 21 | 
            -
                # @return [String]
         | 
| 22 | 
            -
                def self.call(str)
         | 
| 23 | 
            -
                  new(str).call
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
            end
         |