rubion 0.3.18 → 0.3.19

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: 25866a240d194626328073cc8f0e78b970dd1e8389563f8a2a636a23ccc545e3
4
- data.tar.gz: bc7061c95fe6a24fd7cc464bf3671f26bc9d1a53eb248512d7b15c1c67efdbf6
3
+ metadata.gz: c02b3b976c548af77be89141a6abb06ee9ee8431606512361fce0375bae02f91
4
+ data.tar.gz: 77032534958a027081fdf213339eb43456cb5891b009ffe6a9200b39f851d7bd
5
5
  SHA512:
6
- metadata.gz: aa33bfe89c56497e77cb63b9e518fe4f57673c53440971ee50b3ebe56f82f83ea39af26e74b5bd3e38036ef85270be2a778b900afce56027234e50c80acb7603
7
- data.tar.gz: 536c26c682881e1516baeeb9833214fb3a761fa0c65df777961d434da28a4e4ba5a39c6e6013251e3b27a6baca3ba9b424e7465282832ed298d061564c859959
6
+ metadata.gz: a02452fc1e9bf2587eedee8146c3fa4d4427434ed2dd7cc9d78fbfb94646179ea466b9de047d02502d92f410f21a944e6e8da3b18cff44b23d775112992fe407
7
+ data.tar.gz: b04981ce97169f9b8727beea93beb88b9f78bf1d8dc5075317355645f67ba7d47f87c0107f4da6ad1d1ca7dcf5a4f8dbd164de3095d7996f1d2668dd1d2900e8
@@ -172,6 +172,30 @@ module Rubion
172
172
  parse_npm_audit_output(data)
173
173
  end
174
174
  rescue JSON::ParserError => e
175
+ # npm audit can emit human-readable errors plus a JSON error object when there is
176
+ # no lockfile (ENOLOCK) or similar issues. Because we redirect stderr to stdout
177
+ # (2>&1), the mixed output may not be valid JSON.
178
+ if @package_manager == 'npm'
179
+ json_start = stdout.index('{')
180
+ json_end = stdout.rindex('}')
181
+
182
+ if json_start && json_end && json_end > json_start
183
+ json_str = stdout[json_start..json_end]
184
+
185
+ begin
186
+ error_data = JSON.parse(json_str)
187
+
188
+ if error_data.is_a?(Hash) && error_data.dig('error', 'code') == 'ENOLOCK'
189
+ puts "\n ℹ️ npm audit requires a package-lock.json. Skipping npm vulnerability check.\n"
190
+ @result.package_vulnerabilities = []
191
+ return
192
+ end
193
+ rescue JSON::ParserError
194
+ # Fall through to the generic error below
195
+ end
196
+ end
197
+ end
198
+
175
199
  raise "Failed to parse #{@package_manager} audit JSON output: #{e.message}. Raw output: #{stdout}"
176
200
  end
177
201
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rubion
4
- VERSION = "0.3.18"
4
+ VERSION = "0.3.19"
5
5
  end
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.18
4
+ version: 0.3.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - bipashant