licensed 3.3.0 → 3.3.1
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/CHANGELOG.md +13 -1
- data/lib/licensed/sources/manifest.rb +17 -22
- data/lib/licensed/sources/npm.rb +17 -3
- data/lib/licensed/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 204627468559ebbf7283c41b74374a244f5aed5c885c4b9dcfc6fe59a8443c4a
|
4
|
+
data.tar.gz: f6db3198bf7bd592e8e1512803e408091dfe6230984c9aa166bbdf7d16edb1df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5669804505cd5277a292eb51b6d46beda9f9a16e9ede968855ab9df95cdd45bd43564c15fdc45e80a9fe109c190584b93078f45588de78c689f0a93c86278bec
|
7
|
+
data.tar.gz: 7c57aa1d0a8bbe39860464a5efcec2d72bf06bd61b6b018c3b856547e7e0a6900e3dba4a440a41fed211b71b368a300d453a811f6fd11b65d82aa612bb7b203a
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## 3.3.1
|
10
|
+
|
11
|
+
2021-10-07
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
- Fix evaluation of peer dependencies with npm 7 (:tada: @manuelpuyol https://github.com/github/licensed/pull/411)
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
|
19
|
+
- Manifest source evaluation performance improvements (https://github.com/github/licensed/pull/407)
|
20
|
+
|
9
21
|
## 3.3.0
|
10
22
|
|
11
23
|
2021-09-18
|
@@ -509,4 +521,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
509
521
|
|
510
522
|
Initial release :tada:
|
511
523
|
|
512
|
-
[Unreleased]: https://github.com/github/licensed/compare/3.3.
|
524
|
+
[Unreleased]: https://github.com/github/licensed/compare/3.3.1...HEAD
|
@@ -61,7 +61,7 @@ module Licensed
|
|
61
61
|
manifest.each_with_object({}) do |(src, package_name), hsh|
|
62
62
|
next if src.nil? || src.empty?
|
63
63
|
hsh[package_name] ||= []
|
64
|
-
hsh[package_name] << File.
|
64
|
+
hsh[package_name] << File.absolute_path(src, config.root)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -130,19 +130,17 @@ module Licensed
|
|
130
130
|
@configured_dependencies ||= begin
|
131
131
|
dependencies = config.dig("manifest", "dependencies")&.dup || {}
|
132
132
|
|
133
|
-
dependencies.
|
133
|
+
dependencies.each_with_object({}) do |(name, patterns), hsh|
|
134
134
|
# map glob pattern(s) listed for the dependency to a listing
|
135
135
|
# of files that match the patterns and are not excluded
|
136
|
-
|
136
|
+
hsh[name] = files_from_pattern_list(patterns) & included_files
|
137
137
|
end
|
138
|
-
|
139
|
-
dependencies
|
140
138
|
end
|
141
139
|
end
|
142
140
|
|
143
141
|
# Returns the set of project files that are included in dependency evaluation
|
144
142
|
def included_files
|
145
|
-
@
|
143
|
+
@included_files ||= tracked_files - files_from_pattern_list(config.dig("manifest", "exclude"))
|
146
144
|
end
|
147
145
|
|
148
146
|
# Finds and returns all files in the project that match
|
@@ -151,26 +149,23 @@ module Licensed
|
|
151
149
|
return Set.new if patterns.nil? || patterns.empty?
|
152
150
|
|
153
151
|
# evaluate all patterns from the project root
|
154
|
-
|
155
|
-
|
156
|
-
if pattern
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
files + Dir.glob(pattern, File::FNM_DOTMATCH)
|
164
|
-
end
|
152
|
+
Array(patterns).each_with_object(Set.new) do |pattern, files|
|
153
|
+
if pattern.start_with?("!")
|
154
|
+
# if the pattern is an exclusion, remove all matching files
|
155
|
+
# from the result
|
156
|
+
files.subtract(Dir.glob(pattern[1..-1], File::FNM_DOTMATCH, base: config.root))
|
157
|
+
else
|
158
|
+
# if the pattern is an inclusion, add all matching files
|
159
|
+
# to the result
|
160
|
+
files.merge(Dir.glob(pattern, File::FNM_DOTMATCH, base: config.root))
|
165
161
|
end
|
166
162
|
end
|
167
163
|
end
|
168
164
|
|
169
|
-
# Returns all tracked files in the project
|
170
|
-
def
|
171
|
-
|
172
|
-
|
173
|
-
.delete_if { |f| !File.exist?(File.join(Licensed::Git.repository_root, f)) }
|
165
|
+
# Returns all tracked files in the project as the intersection of what git tracks and the files in the project
|
166
|
+
def tracked_files
|
167
|
+
@tracked_files ||= Set.new(Array(Licensed::Git.files)) &
|
168
|
+
Set.new(Dir.glob("**/*", File::FNM_DOTMATCH, base: config.root))
|
174
169
|
end
|
175
170
|
|
176
171
|
class Dependency < Licensed::Dependency
|
data/lib/licensed/sources/npm.rb
CHANGED
@@ -66,15 +66,17 @@ module Licensed
|
|
66
66
|
|
67
67
|
# Recursively parse dependency JSON data. Returns a hash mapping the
|
68
68
|
# package name to it's metadata
|
69
|
-
def recursive_dependencies(dependencies, result = {})
|
69
|
+
def recursive_dependencies(dependencies, result = {}, parent = nil)
|
70
70
|
dependencies.each do |name, dependency|
|
71
|
-
next if dependency
|
71
|
+
next if missing_peer?(parent, dependency, name)
|
72
72
|
next if yarn_lock_present && dependency["missing"]
|
73
73
|
next if dependency["extraneous"] && dependency["missing"]
|
74
74
|
|
75
75
|
dependency["name"] = name
|
76
|
+
dependency["version"] ||= extract_version(parent, name) if dependency["missing"]
|
77
|
+
|
76
78
|
(result[name] ||= []) << dependency
|
77
|
-
recursive_dependencies(dependency["dependencies"] || {}, result)
|
79
|
+
recursive_dependencies(dependency["dependencies"] || {}, result, dependency)
|
78
80
|
end
|
79
81
|
result
|
80
82
|
end
|
@@ -135,6 +137,18 @@ module Licensed
|
|
135
137
|
def include_non_production?
|
136
138
|
config.dig("npm", "production_only") == false
|
137
139
|
end
|
140
|
+
|
141
|
+
def missing_peer?(parent, dependency, name)
|
142
|
+
dependency["peerMissing"] || (dependency["missing"] && peer_dependency(parent, name))
|
143
|
+
end
|
144
|
+
|
145
|
+
def peer_dependency(parent, name)
|
146
|
+
parent&.dig("peerDependencies", name)
|
147
|
+
end
|
148
|
+
|
149
|
+
def extract_version(parent, name)
|
150
|
+
parent&.dig("_dependencies", name) || peer_dependency(parent, name)
|
151
|
+
end
|
138
152
|
end
|
139
153
|
end
|
140
154
|
end
|
data/lib/licensed/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: licensed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: licensee
|