dependabot-npm_and_yarn 0.327.0 → 0.328.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9caa8e27e4f8a3e9572f91367b5b781657cd85c3c4e71a723ac95098f799b64a
4
- data.tar.gz: 60e07515a118c5ff572be0b10a20a4e7884c23d53ca4461e9fa9675232b15dfd
3
+ metadata.gz: e519785e577c328749802bf44c2ef0066c8e4f7823d3c21c36855149986f6ddb
4
+ data.tar.gz: b33e8268583d2aef788f944a93cc5a824b6bf0b2fa3b06d1250ed852d9d063e6
5
5
  SHA512:
6
- metadata.gz: aeb056544931600953d773a5b3564a4d8ba42aeb970363894499fe0a768dddbede3cd4ee872a25bdedf10c765b44230648dfa349909bb5cac88158e6c22edb49
7
- data.tar.gz: f38ca1a0d104851e80320a8a9927138d66a31c9fa096c3bb37711fe4aa99cfae9e944233e5cdd7ba32f58cab4e5ca99bc7b53e9d39b55c25a8fbce4b3636eebc
6
+ metadata.gz: 7fd574e8ac36593a84220d970a243f7d03c91ea6c24ffd14211bcbd1781692dc90ae0e5be4e6677ab1460a875927afa883e7143bf41c528dfcf1df6f8717623a
7
+ data.tar.gz: f160c66603ce809739ad481214c290b58d704861d5bd037177f00bb331f660b6e4c1119d25f1792951ff9da828d39e4eafb3f05e1cc7ea85e30e78fe8fff3d9a
@@ -15,6 +15,9 @@ module Dependabot
15
15
  sig { params(dependency_file: DependencyFile).void }
16
16
  def initialize(dependency_file)
17
17
  @dependency_file = dependency_file
18
+ # Set this file to priority 1 to indicate it should override manifests for purposes of a graph
19
+ dependency_file.priority = 1
20
+ @direct_dependencies = T.let(fetch_direct_dependencies, T::Array[String])
18
21
  end
19
22
 
20
23
  sig { returns(T::Hash[String, T.untyped]) }
@@ -48,6 +51,31 @@ module Dependabot
48
51
 
49
52
  private
50
53
 
54
+ # Only V3 lockfiles contain information on the package itself, so we use `npm ls` to generate
55
+ # a graph we can pluck the direct dependency list from at parse-time for this lockfile.
56
+ sig { returns(T::Array[String]) }
57
+ def fetch_direct_dependencies
58
+ # TODO(brrygrdn): Implement a 'verbose' flag that runs this extra step?
59
+ #
60
+ # For now, don't run this extra native command if we aren't using the submission experiment
61
+ return [] unless Dependabot::Experiments.enabled?(:enable_dependency_submission_poc)
62
+
63
+ SharedHelpers.in_a_temporary_repo_directory do |_|
64
+ write_temporary_dependency_files
65
+
66
+ npm_ls_json = Helpers.run_npm_command("ls --all --package-lock-only --json")
67
+
68
+ JSON.parse(npm_ls_json).fetch("dependencies", {}).keys
69
+ end
70
+ end
71
+
72
+ sig { void }
73
+ def write_temporary_dependency_files
74
+ path = @dependency_file.name
75
+ FileUtils.mkdir_p(Pathname.new(path).dirname)
76
+ File.write(path, @dependency_file.content)
77
+ end
78
+
51
79
  sig do
52
80
  params(object_with_dependencies: T::Hash[String, T.untyped])
53
81
  .returns(Dependabot::FileParsers::Base::DependencySet)
@@ -64,13 +92,18 @@ module Dependabot
64
92
  version = Version.semver_for(details["version"])
65
93
  next unless version
66
94
 
95
+ package_name = name.split("node_modules/").last
67
96
  version = version.to_s
68
97
 
69
98
  dependency_args = {
70
- name: name.split("node_modules/").last,
99
+ name: package_name,
71
100
  version: version,
72
101
  package_manager: "npm_and_yarn",
73
- requirements: []
102
+ requirements: [],
103
+ direct_relationship: @direct_dependencies.include?(package_name),
104
+ metadata: {
105
+ depends_on: details&.fetch("dependencies", {})&.keys || []
106
+ }
74
107
  }
75
108
 
76
109
  if details["bundled"]
@@ -87,6 +120,7 @@ module Dependabot
87
120
  dependency_set += recursively_fetch_dependencies(details)
88
121
  end
89
122
 
123
+ @dependency_file.dependencies = dependency_set.dependencies.to_set
90
124
  dependency_set
91
125
  end
92
126
 
@@ -226,7 +226,10 @@ module Dependabot
226
226
  dep = build_dependency(
227
227
  file: file, type: type, name: name, requirement: requirement
228
228
  )
229
- dependency_set << dep if dep
229
+ if dep
230
+ file.dependencies << dep
231
+ dependency_set << dep
232
+ end
230
233
  end
231
234
  end
232
235
 
@@ -55,7 +55,7 @@ module Dependabot
55
55
  def registry
56
56
  return @registry if @registry
57
57
 
58
- @registry = locked_registry || configured_registry || first_registry_with_dependency_details
58
+ @registry = configured_registry || locked_registry || first_registry_with_dependency_details
59
59
  T.must(@registry)
60
60
  end
61
61
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-npm_and_yarn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.327.0
4
+ version: 0.328.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.327.0
18
+ version: 0.328.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.327.0
25
+ version: 0.328.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -362,7 +362,7 @@ licenses:
362
362
  - MIT
363
363
  metadata:
364
364
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
365
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.327.0
365
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.328.0
366
366
  rdoc_options: []
367
367
  require_paths:
368
368
  - lib