dependabot-elm 0.316.0 → 0.317.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7968cf82c69ae8943a5e57f0f413fab605cdc72c47c5315040e5949a51ba86f2
|
4
|
+
data.tar.gz: 29821d940e253f2c8f8e10701521d58f942bbd2adfdaa35423b50d574606027c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ddb5556b029edd62b19f2d5856c9a8329bc5e8e3fe667877999a1c211f47f4888baebbdb4a406c0375c1841dbe88d42d89e27a8eb14db29fba6061397ae522b
|
7
|
+
data.tar.gz: 62221f67576047ed886feff7cc433a34bf2904e63bbf8c57846acfc79b0e76ea4afc06c5aa1f9f55f3df36e1fd30c7c5d8a6521546813275e859d85018bb6a5f
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "json"
|
5
|
+
require "time"
|
6
|
+
require "cgi"
|
7
|
+
require "excon"
|
8
|
+
require "nokogiri"
|
9
|
+
require "sorbet-runtime"
|
10
|
+
require "dependabot/registry_client"
|
11
|
+
require "dependabot/elm"
|
12
|
+
require "dependabot/elm/version"
|
13
|
+
require "dependabot/package/package_release"
|
14
|
+
require "dependabot/package/package_details"
|
15
|
+
|
16
|
+
module Dependabot
|
17
|
+
module Elm
|
18
|
+
module Package
|
19
|
+
class PackageDetailsFetcher
|
20
|
+
extend T::Sig
|
21
|
+
|
22
|
+
sig do
|
23
|
+
params(
|
24
|
+
dependency: Dependabot::Dependency
|
25
|
+
).void
|
26
|
+
end
|
27
|
+
def initialize(dependency:)
|
28
|
+
@dependency = dependency
|
29
|
+
|
30
|
+
@provider_url = T.let("https://package.elm-lang.org/packages/#{dependency.name}/releases.json",
|
31
|
+
T.nilable(String))
|
32
|
+
end
|
33
|
+
|
34
|
+
sig { returns(Dependabot::Dependency) }
|
35
|
+
attr_reader :dependency
|
36
|
+
|
37
|
+
sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
|
38
|
+
def fetch_package_releases
|
39
|
+
releases = T.let([], T::Array[Dependabot::Package::PackageRelease])
|
40
|
+
begin
|
41
|
+
response = Dependabot::RegistryClient.get(
|
42
|
+
url: T.must(@provider_url)
|
43
|
+
)
|
44
|
+
|
45
|
+
return [] unless response.status == 200
|
46
|
+
|
47
|
+
package_metadata = JSON.parse(response.body)
|
48
|
+
|
49
|
+
package_metadata.each do |version, release_date|
|
50
|
+
releases << Dependabot::Package::PackageRelease.new(
|
51
|
+
version: Elm::Version.new(version),
|
52
|
+
released_at: release_date ? Time.at(release_date).to_time : nil
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
releases
|
57
|
+
rescue StandardError => e
|
58
|
+
Dependabot.logger.error("Error while fetching package info for elm packages: #{e.message}")
|
59
|
+
releases
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/dependabot/elm/update_checker/{elm_19_version_resolver.rb → latest_version_finder.rb}
RENAMED
@@ -1,20 +1,106 @@
|
|
1
1
|
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require "excon"
|
5
|
+
require "json"
|
6
|
+
require "sorbet-runtime"
|
7
|
+
|
4
8
|
require "open3"
|
5
9
|
require "shellwords"
|
6
|
-
require "dependabot/shared_helpers"
|
7
10
|
require "dependabot/errors"
|
11
|
+
require "dependabot/package/package_latest_version_finder"
|
12
|
+
require "dependabot/shared_helpers"
|
13
|
+
require "dependabot/update_checkers/version_filters"
|
8
14
|
require "dependabot/elm/file_parser"
|
15
|
+
require "dependabot/elm/package/package_details_fetcher"
|
16
|
+
require "dependabot/elm/requirement"
|
9
17
|
require "dependabot/elm/update_checker"
|
10
18
|
require "dependabot/elm/update_checker/cli_parser"
|
11
19
|
require "dependabot/elm/update_checker/requirements_updater"
|
12
|
-
require "dependabot/elm/requirement"
|
13
20
|
|
14
21
|
module Dependabot
|
15
22
|
module Elm
|
16
23
|
class UpdateChecker
|
17
|
-
class
|
24
|
+
class LatestVersionFinder < Dependabot::Package::PackageLatestVersionFinder
|
25
|
+
extend T::Sig
|
26
|
+
|
27
|
+
sig do
|
28
|
+
params(
|
29
|
+
dependency: Dependabot::Dependency,
|
30
|
+
dependency_files: T::Array[Dependabot::DependencyFile],
|
31
|
+
credentials: T::Array[Dependabot::Credential],
|
32
|
+
ignored_versions: T::Array[String],
|
33
|
+
security_advisories: T::Array[Dependabot::SecurityAdvisory],
|
34
|
+
raise_on_ignored: T::Boolean,
|
35
|
+
options: T::Hash[Symbol, T.untyped],
|
36
|
+
cooldown_options: T.nilable(Dependabot::Package::ReleaseCooldownOptions)
|
37
|
+
).void
|
38
|
+
end
|
39
|
+
def initialize(
|
40
|
+
dependency:,
|
41
|
+
dependency_files:,
|
42
|
+
credentials:,
|
43
|
+
ignored_versions:,
|
44
|
+
security_advisories:,
|
45
|
+
raise_on_ignored:,
|
46
|
+
options: {},
|
47
|
+
cooldown_options: nil
|
48
|
+
)
|
49
|
+
@dependency = dependency
|
50
|
+
@dependency_files = dependency_files
|
51
|
+
@credentials = credentials
|
52
|
+
@ignored_versions = ignored_versions
|
53
|
+
@security_advisories = security_advisories
|
54
|
+
@raise_on_ignored = raise_on_ignored
|
55
|
+
@options = options
|
56
|
+
@cooldown_options = cooldown_options
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
60
|
+
sig { returns(Dependabot::Dependency) }
|
61
|
+
attr_reader :dependency
|
62
|
+
sig { returns(T::Array[Dependabot::Credential]) }
|
63
|
+
attr_reader :credentials
|
64
|
+
sig { returns(T.nilable(Dependabot::Package::ReleaseCooldownOptions)) }
|
65
|
+
attr_reader :cooldown_options
|
66
|
+
sig { returns(T::Array[String]) }
|
67
|
+
attr_reader :ignored_versions
|
68
|
+
sig { returns(T::Array[Dependabot::SecurityAdvisory]) }
|
69
|
+
attr_reader :security_advisories
|
70
|
+
sig { override.returns(T.nilable(Dependabot::Package::PackageDetails)) }
|
71
|
+
def package_details; end
|
72
|
+
|
73
|
+
sig { returns(T.nilable(Dependabot::Version)) }
|
74
|
+
def release_version
|
75
|
+
releases = package_releases
|
76
|
+
releases = filter_ignored_versions(T.must(releases))
|
77
|
+
releases = filter_by_cooldown(releases)
|
78
|
+
|
79
|
+
releases.max_by(&:version)&.version
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
|
85
|
+
def package_releases
|
86
|
+
@package_releases = T.let(Dependabot::Elm::Package::PackageDetailsFetcher
|
87
|
+
.new(dependency: dependency)
|
88
|
+
.fetch_package_releases, T.nilable(T::Array[Dependabot::Package::PackageRelease]))
|
89
|
+
end
|
90
|
+
|
91
|
+
sig { override.returns(T::Boolean) }
|
92
|
+
def cooldown_enabled?
|
93
|
+
Dependabot::Experiments.enabled?(:enable_cooldown_for_elm)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
################################
|
98
|
+
################################
|
99
|
+
#### ELM19 version finder ######
|
100
|
+
################################
|
101
|
+
################################
|
102
|
+
|
103
|
+
class Elm19LatestVersionFinder < Dependabot::Package::PackageLatestVersionFinder
|
18
104
|
extend T::Sig
|
19
105
|
|
20
106
|
class UnrecoverableState < StandardError; end
|
@@ -22,12 +108,14 @@ module Dependabot
|
|
22
108
|
sig do
|
23
109
|
params(
|
24
110
|
dependency: Dependabot::Dependency,
|
25
|
-
dependency_files: T::Array[Dependabot::DependencyFile]
|
111
|
+
dependency_files: T::Array[Dependabot::DependencyFile],
|
112
|
+
cooldown_options: T.nilable(Dependabot::Package::ReleaseCooldownOptions)
|
26
113
|
).void
|
27
114
|
end
|
28
|
-
def initialize(dependency:, dependency_files:)
|
115
|
+
def initialize(dependency:, dependency_files:, cooldown_options: nil)
|
29
116
|
@dependency = dependency
|
30
117
|
@dependency_files = dependency_files
|
118
|
+
@cooldown_options = cooldown_options
|
31
119
|
|
32
120
|
@install_metadata = T.let(nil, T.nilable(T::Hash[String, Dependabot::Elm::Version]))
|
33
121
|
@original_dependency_details ||= T.let(nil, T.nilable(T::Array[Dependabot::Dependency]))
|
@@ -85,13 +173,28 @@ module Dependabot
|
|
85
173
|
sig { returns(T::Array[Dependabot::DependencyFile]) }
|
86
174
|
attr_reader :dependency_files
|
87
175
|
|
176
|
+
sig { returns(T.nilable(T::Array[Dependabot::Package::PackageRelease])) }
|
177
|
+
def package_releases
|
178
|
+
T.let(Dependabot::Elm::Package::PackageDetailsFetcher
|
179
|
+
.new(dependency: dependency)
|
180
|
+
.fetch_package_releases, T.nilable(T::Array[Dependabot::Package::PackageRelease]))
|
181
|
+
end
|
182
|
+
|
88
183
|
sig { params(unlock_requirement: Symbol).returns(T.nilable(Dependabot::Elm::Version)) }
|
89
184
|
def fetch_latest_resolvable_version(unlock_requirement)
|
90
185
|
changed_deps = install_metadata
|
91
|
-
|
92
186
|
result = check_install_result(changed_deps)
|
93
187
|
version_after_install = changed_deps.fetch(dependency.name)
|
94
188
|
|
189
|
+
# returns current version if new proposed version is in cooldown period
|
190
|
+
new_release = package_releases&.find { |release| release.version == version_after_install }
|
191
|
+
|
192
|
+
if cooldown_options && in_cooldown_period?(T.must(new_release))
|
193
|
+
Dependabot.logger.info("#{dependency.name} #{new_release} is in cooldown period," \
|
194
|
+
" returning current version #{current_version}")
|
195
|
+
return current_version
|
196
|
+
end
|
197
|
+
|
95
198
|
# If the install was clean then we can definitely update
|
96
199
|
return version_after_install if result == :clean_bump
|
97
200
|
|
@@ -114,6 +217,11 @@ module Dependabot
|
|
114
217
|
:clean_bump
|
115
218
|
end
|
116
219
|
|
220
|
+
sig { override.returns(T::Boolean) }
|
221
|
+
def cooldown_enabled?
|
222
|
+
Dependabot::Experiments.enabled?(:enable_cooldown_for_elm)
|
223
|
+
end
|
224
|
+
|
117
225
|
sig { returns(T::Hash[String, Dependabot::Elm::Version]) }
|
118
226
|
def install_metadata
|
119
227
|
@install_metadata ||= parse_install_metadata
|
@@ -221,6 +329,8 @@ module Dependabot
|
|
221
329
|
def requirement_class
|
222
330
|
dependency.requirement_class
|
223
331
|
end
|
332
|
+
sig { override.returns(T.nilable(Dependabot::Package::PackageDetails)) }
|
333
|
+
def package_details; end
|
224
334
|
end
|
225
335
|
end
|
226
336
|
end
|
@@ -13,34 +13,17 @@ module Dependabot
|
|
13
13
|
extend T::Sig
|
14
14
|
|
15
15
|
require_relative "update_checker/requirements_updater"
|
16
|
-
require_relative "update_checker/
|
16
|
+
require_relative "update_checker/latest_version_finder"
|
17
17
|
|
18
18
|
sig { override.returns(T.nilable(Dependabot::Version)) }
|
19
19
|
def latest_version
|
20
|
-
@latest_version ||= T.let(
|
21
|
-
end
|
22
|
-
|
23
|
-
# Overwrite the base class to allow multi-dependency update PRs for
|
24
|
-
# dependencies for which we don't have a version.
|
25
|
-
sig { override.params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
|
26
|
-
def can_update?(requirements_to_unlock:)
|
27
|
-
if dependency.appears_in_lockfile?
|
28
|
-
version_can_update?(requirements_to_unlock: requirements_to_unlock)
|
29
|
-
elsif requirements_to_unlock == :none
|
30
|
-
false
|
31
|
-
elsif requirements_to_unlock == :own
|
32
|
-
requirements_can_update?
|
33
|
-
elsif requirements_to_unlock == :all
|
34
|
-
updated_dependencies_after_full_unlock.any?
|
35
|
-
else
|
36
|
-
false
|
37
|
-
end
|
20
|
+
@latest_version ||= T.let(T.must(latest_version_finder).release_version, T.nilable(Dependabot::Version))
|
38
21
|
end
|
39
22
|
|
40
23
|
sig { override.returns(T.nilable(Dependabot::Version)) }
|
41
24
|
def latest_resolvable_version
|
42
25
|
@latest_resolvable_version ||= T.let(
|
43
|
-
|
26
|
+
latest_version_finder_elm19
|
44
27
|
.latest_resolvable_version(unlock_requirement: :own), T.nilable(Dependabot::Version)
|
45
28
|
)
|
46
29
|
end
|
@@ -61,72 +44,66 @@ module Dependabot
|
|
61
44
|
).updated_requirements
|
62
45
|
end
|
63
46
|
|
47
|
+
# Overwrite the base class to allow multi-dependency update PRs for
|
48
|
+
# dependencies for which we don't have a version.
|
49
|
+
sig { override.params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
|
50
|
+
def can_update?(requirements_to_unlock:)
|
51
|
+
if dependency.appears_in_lockfile?
|
52
|
+
version_can_update?(requirements_to_unlock: requirements_to_unlock)
|
53
|
+
elsif requirements_to_unlock == :none
|
54
|
+
false
|
55
|
+
elsif requirements_to_unlock == :own
|
56
|
+
requirements_can_update?
|
57
|
+
elsif requirements_to_unlock == :all
|
58
|
+
updated_dependencies_after_full_unlock.any?
|
59
|
+
else
|
60
|
+
false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
64
|
private
|
65
65
|
|
66
|
-
sig { returns(
|
67
|
-
def
|
68
|
-
@
|
66
|
+
sig { returns(Elm19LatestVersionFinder) }
|
67
|
+
def latest_version_finder_elm19
|
68
|
+
@latest_version_finder_elm19 ||= T.let(
|
69
69
|
begin
|
70
70
|
unless dependency.requirements.any? { |r| r.fetch(:file) == MANIFEST_FILE }
|
71
71
|
raise Dependabot::DependencyFileNotResolvable, "No #{MANIFEST_FILE} found"
|
72
72
|
end
|
73
73
|
|
74
|
-
|
74
|
+
Elm19LatestVersionFinder.new(
|
75
75
|
dependency: dependency,
|
76
|
-
dependency_files: dependency_files
|
76
|
+
dependency_files: dependency_files,
|
77
|
+
cooldown_options: update_cooldown
|
77
78
|
)
|
78
|
-
end, T.nilable(
|
79
|
+
end, T.nilable(Elm19LatestVersionFinder)
|
79
80
|
)
|
80
81
|
end
|
81
82
|
|
82
83
|
sig { override.returns(T::Array[Dependabot::Dependency]) }
|
83
84
|
def updated_dependencies_after_full_unlock
|
84
|
-
|
85
|
+
latest_version_finder_elm19.updated_dependencies_after_full_unlock
|
85
86
|
end
|
86
87
|
|
87
88
|
sig { override.returns(T::Boolean) }
|
88
89
|
def latest_version_resolvable_with_full_unlock?
|
89
|
-
latest_version ==
|
90
|
+
latest_version == latest_version_finder_elm19
|
90
91
|
.latest_resolvable_version(unlock_requirement: :all)
|
91
92
|
end
|
92
93
|
|
93
|
-
sig { returns(T
|
94
|
-
def
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
def filter_lower_versions(versions_array)
|
107
|
-
return versions_array unless current_version
|
108
|
-
|
109
|
-
versions_array
|
110
|
-
.select { |version| version > current_version }
|
111
|
-
end
|
112
|
-
|
113
|
-
sig { returns(T::Array[Dependabot::Version]) }
|
114
|
-
def all_versions
|
115
|
-
@all_versions ||= T.let(fetch_all_versions, T.nilable(T::Array[Dependabot::Version]))
|
116
|
-
end
|
117
|
-
|
118
|
-
sig { returns(T::Array[Dependabot::Version]) }
|
119
|
-
def fetch_all_versions
|
120
|
-
response = Dependabot::RegistryClient.get(
|
121
|
-
url: "https://package.elm-lang.org/packages/#{dependency.name}/releases.json"
|
122
|
-
)
|
123
|
-
|
124
|
-
return [] unless response.status == 200
|
125
|
-
|
126
|
-
JSON.parse(response.body)
|
127
|
-
.keys
|
128
|
-
.map { |v| version_class.new(v) }
|
129
|
-
.sort
|
94
|
+
sig { returns(T.nilable(Dependabot::Elm::UpdateChecker::LatestVersionFinder)) }
|
95
|
+
def latest_version_finder
|
96
|
+
@latest_version_finder ||=
|
97
|
+
T.let(LatestVersionFinder.new(
|
98
|
+
dependency: dependency,
|
99
|
+
credentials: credentials,
|
100
|
+
dependency_files: dependency_files,
|
101
|
+
security_advisories: security_advisories,
|
102
|
+
ignored_versions: ignored_versions,
|
103
|
+
raise_on_ignored: raise_on_ignored,
|
104
|
+
cooldown_options: update_cooldown
|
105
|
+
),
|
106
|
+
T.nilable(Dependabot::Elm::UpdateChecker::LatestVersionFinder))
|
130
107
|
end
|
131
108
|
|
132
109
|
# Overwrite the base class's requirements_up_to_date? method to instead
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependabot-elm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.317.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.
|
18
|
+
version: 0.317.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.
|
25
|
+
version: 0.317.0
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: debug
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,11 +248,12 @@ files:
|
|
248
248
|
- lib/dependabot/elm/file_updater/elm_json_updater.rb
|
249
249
|
- lib/dependabot/elm/language.rb
|
250
250
|
- lib/dependabot/elm/metadata_finder.rb
|
251
|
+
- lib/dependabot/elm/package/package_details_fetcher.rb
|
251
252
|
- lib/dependabot/elm/package_manager.rb
|
252
253
|
- lib/dependabot/elm/requirement.rb
|
253
254
|
- lib/dependabot/elm/update_checker.rb
|
254
255
|
- lib/dependabot/elm/update_checker/cli_parser.rb
|
255
|
-
- lib/dependabot/elm/update_checker/
|
256
|
+
- lib/dependabot/elm/update_checker/latest_version_finder.rb
|
256
257
|
- lib/dependabot/elm/update_checker/requirements_updater.rb
|
257
258
|
- lib/dependabot/elm/version.rb
|
258
259
|
homepage: https://github.com/dependabot/dependabot-core
|
@@ -260,7 +261,7 @@ licenses:
|
|
260
261
|
- MIT
|
261
262
|
metadata:
|
262
263
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
263
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
264
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.317.0
|
264
265
|
rdoc_options: []
|
265
266
|
require_paths:
|
266
267
|
- lib
|