auth-sanitizer 0.2.2 → 0.2.4

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.
@@ -2,12 +2,11 @@
2
2
 
3
3
  module Auth
4
4
  module Sanitizer
5
- # Logger wrapper that redacts sensitive values from debug output before
6
- # delegating to the underlying logger instance.
5
+ # Logger wrapper that redacts sensitive values from debug output before delegating to the
6
+ # underlying logger instance.
7
7
  #
8
- # This class is intentionally narrow in scope: it only sanitizes string
9
- # messages emitted through the logging path and leaves request/response
10
- # behavior unchanged.
8
+ # This class is intentionally narrow in scope: it only sanitizes string messages emitted
9
+ # through the logging path and leaves request/response behavior unchanged.
11
10
  #
12
11
  # The underlying {ThingFilter} is initialized once when the logger wrapper is
13
12
  # created, so later config changes do not alter the behavior of existing
@@ -15,12 +14,12 @@ module Auth
15
14
  class SanitizedLogger
16
15
  # Create a new sanitized logger wrapper.
17
16
  #
18
- # @param [#add, #debug, #info, #warn, #error, #fatal, #unknown] logger
17
+ # @param logger [#add, #debug, #info, #warn, #error, #fatal, #unknown]
19
18
  # The underlying logger instance that will receive sanitized messages.
20
- # @param [Array<String>] filtered_keys
19
+ # @param filtered_keys [Array<String>]
21
20
  # Key names whose values should be redacted in debug output.
22
21
  # Defaults to {Auth::Sanitizer.default_filtered_keys}.
23
- # @param [String] label
22
+ # @param label [String]
24
23
  # Replacement label for redacted values.
25
24
  # Defaults to {Auth::Sanitizer.filtered_label}.
26
25
  def initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label)
@@ -30,9 +29,9 @@ module Auth
30
29
 
31
30
  # Add a log entry after sanitizing any string payloads.
32
31
  #
33
- # @param [Integer, Symbol, String, nil] severity Logger severity
34
- # @param [Object, nil] message Optional log message
35
- # @param [Object, nil] progname Optional program name
32
+ # @param severity [Integer, Symbol, String, nil] Logger severity
33
+ # @param message [Object, nil] Optional log message
34
+ # @param progname [Object, nil] Optional program name
36
35
  # @yieldreturn [Object] Deferred log message
37
36
  # @return [Object] The underlying logger result
38
37
  def add(severity, message = nil, progname = nil)
@@ -45,7 +44,7 @@ module Auth
45
44
 
46
45
  # Append a message to the underlying logger after sanitization.
47
46
  #
48
- # @param [String] message Message to append
47
+ # @param message [String] Message to append
49
48
  # @return [Object] The underlying logger result
50
49
  def <<(message)
51
50
  @logger << sanitize(message)
@@ -53,7 +52,7 @@ module Auth
53
52
 
54
53
  # Log a debug message after sanitization.
55
54
  #
56
- # @param [Object, nil] progname Optional program name
55
+ # @param progname [Object, nil] Optional program name
57
56
  # @yieldreturn [Object] Deferred log message
58
57
  # @return [Object] The underlying logger result
59
58
  def debug(progname = nil, &block)
@@ -62,7 +61,7 @@ module Auth
62
61
 
63
62
  # Log an info message after sanitization.
64
63
  #
65
- # @param [Object, nil] progname Optional program name
64
+ # @param progname [Object, nil] Optional program name
66
65
  # @yieldreturn [Object] Deferred log message
67
66
  # @return [Object] The underlying logger result
68
67
  def info(progname = nil, &block)
@@ -71,7 +70,7 @@ module Auth
71
70
 
72
71
  # Log a warning message after sanitization.
73
72
  #
74
- # @param [Object, nil] progname Optional program name
73
+ # @param progname [Object, nil] Optional program name
75
74
  # @yieldreturn [Object] Deferred log message
76
75
  # @return [Object] The underlying logger result
77
76
  def warn(progname = nil, &block)
@@ -80,7 +79,7 @@ module Auth
80
79
 
81
80
  # Log an error message after sanitization.
82
81
  #
83
- # @param [Object, nil] progname Optional program name
82
+ # @param progname [Object, nil] Optional program name
84
83
  # @yieldreturn [Object] Deferred log message
85
84
  # @return [Object] The underlying logger result
86
85
  def error(progname = nil, &block)
@@ -89,7 +88,7 @@ module Auth
89
88
 
90
89
  # Log a fatal message after sanitization.
91
90
  #
92
- # @param [Object, nil] progname Optional program name
91
+ # @param progname [Object, nil] Optional program name
93
92
  # @yieldreturn [Object] Deferred log message
94
93
  # @return [Object] The underlying logger result
95
94
  def fatal(progname = nil, &block)
@@ -98,7 +97,7 @@ module Auth
98
97
 
99
98
  # Log an unknown-severity message after sanitization.
100
99
  #
101
- # @param [Object, nil] progname Optional program name
100
+ # @param progname [Object, nil] Optional program name
102
101
  # @yieldreturn [Object] Deferred log message
103
102
  # @return [Object] The underlying logger result
104
103
  def unknown(progname = nil, &block)
@@ -121,7 +120,7 @@ module Auth
121
120
 
122
121
  # Set the formatter of the underlying logger if supported.
123
122
  #
124
- # @param [Object] formatter Formatter object
123
+ # @param formatter [Object] Formatter object
125
124
  # @return [void]
126
125
  def formatter=(formatter)
127
126
  @logger.formatter = formatter if @logger.respond_to?(:formatter=)
@@ -136,7 +135,7 @@ module Auth
136
135
 
137
136
  # Set the logger level if supported.
138
137
  #
139
- # @param [Object] level Logger level
138
+ # @param level [Object] Logger level
140
139
  # @return [void]
141
140
  def level=(level)
142
141
  @logger.level = level if @logger.respond_to?(:level=)
@@ -151,7 +150,7 @@ module Auth
151
150
 
152
151
  # Set the logger progname if supported.
153
152
  #
154
- # @param [Object] progname Logger progname
153
+ # @param progname [Object] Logger progname
155
154
  # @return [void]
156
155
  def progname=(progname)
157
156
  @logger.progname = progname if @logger.respond_to?(:progname=)
@@ -159,8 +158,8 @@ module Auth
159
158
 
160
159
  # Report support for methods provided by the wrapped logger.
161
160
  #
162
- # @param [Symbol] method_name Method name to check
163
- # @param [Boolean] include_private Whether private methods are considered
161
+ # @param method_name [Symbol] Method name to check
162
+ # @param include_private [Boolean] Whether private methods are considered
164
163
  # @return [Boolean]
165
164
  def respond_to_missing?(method_name, include_private = false)
166
165
  @logger.respond_to?(method_name, include_private) || super
@@ -168,8 +167,8 @@ module Auth
168
167
 
169
168
  # Delegate unsupported methods to the wrapped logger.
170
169
  #
171
- # @param [Symbol] method_name Method to invoke
172
- # @param [Array<Object>] args Method arguments
170
+ # @param method_name [Symbol] Method to invoke
171
+ # @param args [Array<Object>] Method arguments
173
172
  # @yield Deferred block forwarded to the wrapped logger
174
173
  # @return [Object] The delegated result
175
174
  def method_missing(method_name, *args, &block)
@@ -182,8 +181,8 @@ module Auth
182
181
 
183
182
  # Dispatch a severity-specific log call after sanitization.
184
183
  #
185
- # @param [Symbol] level Logger method name
186
- # @param [Object, nil] progname Optional program name
184
+ # @param level [Symbol] Logger method name
185
+ # @param progname [Object, nil] Optional program name
187
186
  # @yieldreturn [Object] Deferred log message
188
187
  # @return [Object] The underlying logger result
189
188
  def log(level, progname = nil)
@@ -196,14 +195,17 @@ module Auth
196
195
 
197
196
  # Sanitize a logger message when it is a String.
198
197
  #
199
- # @param [Object] message Potential logger payload
198
+ # @param message [Object] Potential logger payload
200
199
  # @return [Object] Unchanged non-String payloads, sanitized String payloads
201
200
  def sanitize(message)
202
201
  return message unless message.is_a?(String)
203
202
 
204
- sanitized = message.dup
203
+ # scrub replaces invalid byte sequences so the gsub calls below never
204
+ # raise on an invalid encoding while logging a request.
205
+ sanitized = message.dup.scrub
205
206
  sanitized = sanitize_authorization_header(sanitized)
206
207
  sanitized = sanitize_json_pairs(sanitized)
208
+ sanitized = sanitize_inspect_pairs(sanitized)
207
209
  sanitize_form_and_query_pairs(sanitized)
208
210
  end
209
211
 
@@ -216,7 +218,7 @@ module Auth
216
218
 
217
219
  # Redact Authorization header values.
218
220
  #
219
- # @param [String] message Logger message
221
+ # @param message [String] Logger message
220
222
  # @return [String] Sanitized logger message
221
223
  def sanitize_authorization_header(message)
222
224
  message.gsub(/(Authorization:\s*)(?:"[^"]*"|[^\r\n]+)/i, "\\1\"#{thing_filter.label}\"")
@@ -224,7 +226,7 @@ module Auth
224
226
 
225
227
  # Redact JSON-style values for configured sensitive key names.
226
228
  #
227
- # @param [String] message Logger message
229
+ # @param message [String] Logger message
228
230
  # @return [String] Sanitized logger message
229
231
  def sanitize_json_pairs(message)
230
232
  message.gsub(/(["'])(#{thing_filter.pattern_source})\1(\s*:\s*)(["'])(.*?)\4/i) do
@@ -232,12 +234,36 @@ module Auth
232
234
  end
233
235
  end
234
236
 
237
+ # Redact values in Ruby `Hash#inspect` output for configured sensitive key names.
238
+ #
239
+ # Faraday's debug logger renders non-String bodies (such as the params Hash an OAuth client
240
+ # builds for a token request) with `pretty_inspect`, so secrets reach the logger in Ruby
241
+ # inspect syntax rather than JSON or form encoding. Handles both Ruby 3.4+ formats
242
+ # (`{"key" => "value"}`, `{key: "value"}`) and the pre-3.4 formats (`{"key"=>"value"}`,
243
+ # `{:key=>"value"}`), case-insensitively.
244
+ #
245
+ # @param message [String] Logger message
246
+ # @return [String] Sanitized logger message
247
+ def sanitize_inspect_pairs(message)
248
+ key = thing_filter.pattern_source
249
+ label = thing_filter.label
250
+ # Hash-rocket pairs: "key" => "value" / "key"=>"value" / :key=>"value"
251
+ message = message.gsub(/((?:"(?:#{key})"|:#{key})\s*=>\s*")[^"]*(")/i) { "#{$1}#{label}#{$2}" }
252
+ # Symbol shorthand pairs: key: "value" (not preceded by a quote, so
253
+ # already-sanitized JSON pairs are not reprocessed)
254
+ message.gsub(/(?<!["'])((?:\b(?:#{key})):\s*")[^"]*(")/i) { "#{$1}#{label}#{$2}" }
255
+ end
256
+
235
257
  # Redact form-encoded and query-string values for configured sensitive key names.
236
258
  #
237
- # @param [String] message Logger message
259
+ # The value class excludes `"` and `>` so the pattern neither crosses
260
+ # into quoted strings nor mangles `Hash#inspect` hash-rocket pairs
261
+ # (`:key=>"value"`), which {sanitize_inspect_pairs} handles instead.
262
+ #
263
+ # @param message [String] Logger message
238
264
  # @return [String] Sanitized logger message
239
265
  def sanitize_form_and_query_pairs(message)
240
- message.gsub(/(\b(?:#{thing_filter.pattern_source})=)([^&\s"]+)/i, "\\1#{thing_filter.label}")
266
+ message.gsub(/(\b(?:#{thing_filter.pattern_source})=)([^&\s">]+)/i, "\\1#{thing_filter.label}")
241
267
  end
242
268
  end
243
269
  end
@@ -13,8 +13,8 @@ module Auth
13
13
  class ThingFilter
14
14
  # Create a new filter.
15
15
  #
16
- # @param [Enumerable<#to_s>] things Names that should be filtered
17
- # @param [String] label Replacement label to use for filtered values
16
+ # @param things [Enumerable<#to_s>] Names that should be filtered
17
+ # @param label [String] Replacement label to use for filtered values
18
18
  #
19
19
  # The provided values are duplicated and frozen so the filter remains
20
20
  # stable for the lifetime of the object.
@@ -39,7 +39,7 @@ module Auth
39
39
  # Matching is substring-based so it works naturally with instance-variable
40
40
  # names used by `#inspect`, such as `@secret` matching `secret`.
41
41
  #
42
- # @param [#to_s] thing_name Candidate thing name
42
+ # @param thing_name [#to_s] Candidate thing name
43
43
  # @return [Boolean]
44
44
  def filtered?(thing_name)
45
45
  thing_name_str = thing_name.to_s
@@ -2,9 +2,12 @@
2
2
 
3
3
  module Auth
4
4
  module Sanitizer
5
+ # Version namespace for this gem.
5
6
  module Version
6
- VERSION = "0.2.2"
7
+ # Current gem version.
8
+ VERSION = "0.2.4"
7
9
  end
10
+ # Current gem version exposed at the traditional constant location.
8
11
  VERSION = Version::VERSION # Traditional Constant Location
9
12
  end
10
13
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  require "version_gem"
4
4
 
5
- require_relative "sanitizer/version"
6
5
  require_relative "sanitizer/thing_filter"
7
6
  require_relative "sanitizer/core"
8
7
  require_relative "sanitizer/filtered_attributes"
9
8
  require_relative "sanitizer/sanitized_logger"
9
+ require_relative "sanitizer/version"
10
10
 
11
11
  Auth::Sanitizer::Version.class_eval do
12
12
  extend VersionGem::Basic
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Namespace for the isolated loader surface of the auth-sanitizer gem.
3
4
  module AuthSanitizer
4
5
  # Loader for consumers that need Auth::Sanitizer without defining a top-level
5
6
  # Auth constant in the host application.
6
7
  module Loader
8
+ # Gem source files evaluated into the anonymous namespace, in load order.
7
9
  FILES = %w[
8
10
  auth/sanitizer/version.rb
9
11
  auth/sanitizer/thing_filter.rb
@@ -39,6 +41,9 @@ module AuthSanitizer
39
41
  # the anonymous Auth namespace. This keeps the normal files unchanged while
40
42
  # avoiding Object::Auth leakage on runtimes where Module#module_eval still
41
43
  # resolves nested module declarations through Object.
44
+ #
45
+ # @param path [String] Absolute path to the gem source file
46
+ # @return [String] The source with the top-level wrapper removed
42
47
  def isolated_source(path)
43
48
  lines = File.readlines(path)
44
49
  wrapper_index = lines.index("module Auth\n")
@@ -5,3 +5,12 @@ module AuthSanitizer
5
5
  def self.load_isolated: () -> Module
6
6
  end
7
7
  end
8
+
9
+ module Auth
10
+ module Sanitizer
11
+ module Version
12
+ VERSION: String
13
+ end
14
+ VERSION: String
15
+ end
16
+ end
data.tar.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- �(P��Ip��y�u��k�v��~?��]�|�*A?���ޫ�%,�Ci{����� x�D��&D����T��qCul�+L�=��8�L�P���;���~Nˉ 1|gH��KW�^��g^���[�
2
- U����uK�3�&_�wT8��WN<���r���{NQN�����(�+��"�?rI�ZY B%�HGNJއ�YK�s2C?��*�=���Jh��CR#�����R��K���J��w2�$]�PG �ҋo)H�P�͠#03��[ �GZ�8��kU���}QxB�M0��G��A��@�
1
+ Ucp1�/>R�l{��8,�ͷF�i���p>oNv
2
+ ��h��jB%���p�P���q�����p���u�z�S�����e\�K���(D��݆yD���OO�Ȱn�&��^
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auth-sanitizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '1.1'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.1.10
49
+ version: 1.1.16
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,27 +56,27 @@ dependencies:
56
56
  version: '1.1'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.1.10
59
+ version: 1.1.16
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: kettle-dev
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '2.1'
66
+ version: '3.1'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 2.1.0
69
+ version: 3.1.22
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '2.1'
76
+ version: '3.1'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 2.1.0
79
+ version: 3.1.22
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: bundler-audit
82
82
  requirement: !ruby/object:Gem::Requirement
@@ -125,26 +125,46 @@ dependencies:
125
125
  - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: 1.0.4
128
+ - !ruby/object:Gem::Dependency
129
+ name: anonymous_loader
130
+ requirement: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '0.1'
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 0.1.4
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.1'
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: 0.1.4
128
148
  - !ruby/object:Gem::Dependency
129
149
  name: appraisal2
130
150
  requirement: !ruby/object:Gem::Requirement
131
151
  requirements:
132
152
  - - "~>"
133
153
  - !ruby/object:Gem::Version
134
- version: '3.1'
154
+ version: '3.2'
135
155
  - - ">="
136
156
  - !ruby/object:Gem::Version
137
- version: 3.1.1
157
+ version: 3.2.6
138
158
  type: :development
139
159
  prerelease: false
140
160
  version_requirements: !ruby/object:Gem::Requirement
141
161
  requirements:
142
162
  - - "~>"
143
163
  - !ruby/object:Gem::Version
144
- version: '3.1'
164
+ version: '3.2'
145
165
  - - ">="
146
166
  - !ruby/object:Gem::Version
147
- version: 3.1.1
167
+ version: 3.2.6
148
168
  - !ruby/object:Gem::Dependency
149
169
  name: kettle-test
150
170
  requirement: !ruby/object:Gem::Requirement
@@ -154,7 +174,7 @@ dependencies:
154
174
  version: '2.0'
155
175
  - - ">="
156
176
  - !ruby/object:Gem::Version
157
- version: 2.0.3
177
+ version: 2.0.27
158
178
  type: :development
159
179
  prerelease: false
160
180
  version_requirements: !ruby/object:Gem::Requirement
@@ -164,27 +184,27 @@ dependencies:
164
184
  version: '2.0'
165
185
  - - ">="
166
186
  - !ruby/object:Gem::Version
167
- version: 2.0.3
187
+ version: 2.0.27
168
188
  - !ruby/object:Gem::Dependency
169
189
  name: turbo_tests2
170
190
  requirement: !ruby/object:Gem::Requirement
171
191
  requirements:
172
192
  - - "~>"
173
193
  - !ruby/object:Gem::Version
174
- version: '3.1'
194
+ version: '4.0'
175
195
  - - ">="
176
196
  - !ruby/object:Gem::Version
177
- version: 3.1.1
197
+ version: 4.0.0
178
198
  type: :development
179
199
  prerelease: false
180
200
  version_requirements: !ruby/object:Gem::Requirement
181
201
  requirements:
182
202
  - - "~>"
183
203
  - !ruby/object:Gem::Version
184
- version: '3.1'
204
+ version: '4.0'
185
205
  - - ">="
186
206
  - !ruby/object:Gem::Version
187
- version: 3.1.1
207
+ version: 4.0.0
188
208
  - !ruby/object:Gem::Dependency
189
209
  name: ruby-progressbar
190
210
  requirement: !ruby/object:Gem::Requirement
@@ -208,7 +228,7 @@ dependencies:
208
228
  version: '1.0'
209
229
  - - ">="
210
230
  - !ruby/object:Gem::Version
211
- version: 1.0.3
231
+ version: 1.0.9
212
232
  type: :development
213
233
  prerelease: false
214
234
  version_requirements: !ruby/object:Gem::Requirement
@@ -218,7 +238,7 @@ dependencies:
218
238
  version: '1.0'
219
239
  - - ">="
220
240
  - !ruby/object:Gem::Version
221
- version: 1.0.3
241
+ version: 1.0.9
222
242
  - !ruby/object:Gem::Dependency
223
243
  name: gitmoji-regex
224
244
  requirement: !ruby/object:Gem::Requirement
@@ -228,7 +248,7 @@ dependencies:
228
248
  version: '2.0'
229
249
  - - ">="
230
250
  - !ruby/object:Gem::Version
231
- version: 2.0.1
251
+ version: 2.0.15
232
252
  type: :development
233
253
  prerelease: false
234
254
  version_requirements: !ruby/object:Gem::Requirement
@@ -238,33 +258,17 @@ dependencies:
238
258
  version: '2.0'
239
259
  - - ">="
240
260
  - !ruby/object:Gem::Version
241
- version: 2.0.1
242
- description: "\U0001F48E Configurable KV output redaction. Sanitize/filter your secrets."
261
+ version: 2.0.15
262
+ description: "\U0001F9FC Configurable KV output redaction. Sanitize/filter your secrets."
243
263
  email:
244
264
  - floss@galtzo.com
245
265
  executables: []
246
266
  extensions: []
247
- extra_rdoc_files:
248
- - CHANGELOG.md
249
- - CITATION.cff
250
- - CODE_OF_CONDUCT.md
251
- - CONTRIBUTING.md
252
- - FUNDING.md
253
- - LICENSE.md
254
- - README.md
255
- - RUBOCOP.md
256
- - SECURITY.md
267
+ extra_rdoc_files: []
257
268
  files:
258
269
  - CHANGELOG.md
259
- - CITATION.cff
260
- - CODE_OF_CONDUCT.md
261
- - CONTRIBUTING.md
262
- - FUNDING.md
263
270
  - LICENSE.md
264
271
  - README.md
265
- - RUBOCOP.md
266
- - SECURITY.md
267
- - certs/pboling.pem
268
272
  - lib/auth/sanitizer.rb
269
273
  - lib/auth/sanitizer/core.rb
270
274
  - lib/auth/sanitizer/filtered_attributes.rb
@@ -273,24 +277,24 @@ files:
273
277
  - lib/auth/sanitizer/version.rb
274
278
  - lib/auth_sanitizer/loader.rb
275
279
  - sig/auth/sanitizer.rbs
276
- - sig/auth/sanitizer/version.rbs
277
280
  homepage: https://github.com/ruby-oauth/auth-sanitizer
278
281
  licenses:
279
282
  - MIT
280
283
  metadata:
281
284
  homepage_uri: https://auth-sanitizer.galtzo.com
282
- source_code_uri: https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.2
283
- changelog_uri: https://github.com/ruby-oauth/auth-sanitizer/blob/v0.2.2/CHANGELOG.md
285
+ source_code_uri: https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.4
286
+ changelog_uri: https://github.com/ruby-oauth/auth-sanitizer/blob/v0.2.4/CHANGELOG.md
284
287
  bug_tracker_uri: https://github.com/ruby-oauth/auth-sanitizer/issues
285
- documentation_uri: https://www.rubydoc.info/gems/auth-sanitizer/0.2.2
288
+ documentation_uri: https://www.rubydoc.info/gems/auth-sanitizer/0.2.4
286
289
  funding_uri: https://github.com/sponsors/pboling
287
290
  wiki_uri: https://github.com/ruby-oauth/auth-sanitizer/wiki
288
291
  news_uri: https://www.railsbling.com/tags/auth-sanitizer
289
292
  discord_uri: https://discord.gg/3qme4XHNKN
293
+ mailing_list_uri: https://www.rubyforum.org/tag/ruby-oauth
290
294
  rubygems_mfa_required: 'true'
291
295
  rdoc_options:
292
296
  - "--title"
293
- - "auth-sanitizer - \U0001F48E Configurable KV output redaction"
297
+ - "auth-sanitizer - \U0001F9FC Configurable KV output redaction"
294
298
  - "--main"
295
299
  - README.md
296
300
  - "--exclude"
@@ -311,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
315
  - !ruby/object:Gem::Version
312
316
  version: '0'
313
317
  requirements: []
314
- rubygems_version: 4.0.10
318
+ rubygems_version: 4.0.20
315
319
  specification_version: 4
316
- summary: "\U0001F48E Configurable KV output redaction"
320
+ summary: "\U0001F9FC Configurable KV output redaction"
317
321
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/CITATION.cff DELETED
@@ -1,20 +0,0 @@
1
- cff-version: 1.2.0
2
- title: "auth-sanitizer"
3
- message: >-
4
- If you use this work and you want to cite it,
5
- then you can use the metadata from this file.
6
- type: software
7
- authors:
8
- - given-names: "Peter H."
9
- family-names: "Boling"
10
- email: "floss@galtzo.com"
11
- affiliation: "galtzo.com"
12
- orcid: 'https://orcid.org/0009-0008-8519-441X'
13
- identifiers:
14
- - type: url
15
- value: 'https://github.com/ruby-oauth/auth-sanitizer'
16
- description: "auth-sanitizer"
17
- repository-code: 'https://github.com/ruby-oauth/auth-sanitizer'
18
- abstract: >-
19
- auth-sanitizer
20
- license: See license file