auth-sanitizer 0.1.4 → 0.2.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.
data/README.md CHANGED
@@ -1,17 +1,10 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![oauth2 Logo by Chris Messina, CC BY-SA 3.0][🖼️oauth2-i]][🖼️oauth2]
1
+ <a href="https://github.com/ruby-oauth"><img alt="ruby-oauth Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/ruby-oauth/avatar-128px.svg" width="14%" align="right"/></a>
2
2
 
3
- [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
- [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️oauth2-i]: https://logos.galtzo.com/assets/images/oauth/oauth2/avatar-192px.svg
8
- [🖼️oauth2]: https://github.com/ruby-oauth/oauth2
3
+ # 💎 Auth::Sanitizer
9
4
 
10
- # 🟥 Auth::Sanitizer
5
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
11
6
 
12
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
13
-
14
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
15
8
 
16
9
  ---
17
10
 
@@ -20,13 +13,13 @@
20
13
  [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
21
14
 
22
15
  <details>
23
- <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
24
17
 
25
18
  I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
26
19
 
27
20
  </details>
28
21
 
29
- ## 🌻 Synopsis
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
30
23
 
31
24
  `auth-sanitizer` provides small, dependency-light helpers for keeping OAuth and authentication secrets out of object
32
25
  inspection and log output.
@@ -34,7 +27,7 @@ inspection and log output.
34
27
  The gem is intentionally narrow in scope. It does not change HTTP requests, token objects, persistence, or application
35
28
  configuration for you. Instead, it gives host gems and applications two reusable redaction surfaces:
36
29
 
37
- - `Auth::Sanitizer::FilteredAttributes` redacts selected instance variables from `#inspect`.
30
+ - `Auth::Sanitizer::FilteredAttributes` redacts selected attributes from standard Ruby `#inspect` output.
38
31
  - `Auth::Sanitizer::SanitizedLogger` wraps an existing logger and redacts sensitive values from string log messages.
39
32
 
40
33
  Out of the box, logger sanitization filters the key names most commonly found in OAuth and OpenID Connect debug output:
@@ -76,43 +69,48 @@ This gem is used by the following libraries to ensure clean output:
76
69
  - oauth-tty
77
70
  - oauth2
78
71
  - omniauth-ldap
72
+ - omniauth-identity
79
73
 
80
74
  ## 💡 Info you can shake a stick at
81
75
 
82
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
76
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
83
77
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
84
- | Works with JRuby | [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
78
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
85
79
  | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
86
- | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
87
- | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
88
- | Works with MRI Ruby 2 | ![Ruby 2.2 Compat][💎ruby-2.2i] <br/> [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎ruby-2.3-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
89
- | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
90
- | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
91
- | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
92
- | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
93
- | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
94
- | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
95
- | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
80
+ | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
81
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
82
+ | Works with MRI Ruby 2 | ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
83
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
84
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
85
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
86
+ | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
87
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
88
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
89
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
96
90
 
97
91
  ### Compatibility
98
92
 
99
93
  Compatible with MRI Ruby 2.2.0+, and concordant releases of JRuby, and TruffleRuby.
94
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
95
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
96
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
97
+ not practical for the current toolchain.
100
98
 
101
- | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
99
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
102
100
  |------------------------------------------------|--------------------------------------------------------|
103
- | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
101
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
104
102
 
105
103
  ### Federated DVCS
106
104
 
107
105
  <details markdown="1">
108
- <summary>Find this repo on federated forges (Coming soon!)</summary>
106
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
109
107
 
110
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
108
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
111
109
  |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
112
- | 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
113
- | 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
114
- | 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
115
- | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
110
+ | 🧪 [ruby-oauth/auth-sanitizer on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
111
+ | 🧊 [ruby-oauth/auth-sanitizer on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
112
+ | 🐙 [ruby-oauth/auth-sanitizer on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
113
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
116
114
 
117
115
  </details>
118
116
 
@@ -123,7 +121,7 @@ Compatible with MRI Ruby 2.2.0+, and concordant releases of JRuby, and TruffleRu
123
121
  Available as part of the Tidelift Subscription.
124
122
 
125
123
  <details markdown="1">
126
- <summary>Need enterprise-level guarantees?</summary>
124
+ <summary>Need enterprise-level guarantees?</summary>
127
125
 
128
126
  The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
129
127
 
@@ -155,41 +153,6 @@ If bundler is not being used to manage dependencies, install the gem by executin
155
153
  gem install auth-sanitizer
156
154
  ```
157
155
 
158
- ### 🔒 Secure Installation
159
-
160
- <details markdown="1">
161
- <summary>For Medium or High Security Installations</summary>
162
-
163
- This gem is cryptographically signed and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
164
- [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
165
- by following the instructions below.
166
-
167
- Add my public key (if you haven’t already; key expires 2045-04-29) as a trusted certificate:
168
-
169
- ```console
170
- gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
171
- ```
172
-
173
- You only need to do that once. Then proceed to install with:
174
-
175
- ```console
176
- gem install auth-sanitizer -P HighSecurity
177
- ```
178
-
179
- The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
180
-
181
- If you want to up your security game full-time:
182
-
183
- ```console
184
- bundle config set --global trust-policy MediumSecurity
185
- ```
186
-
187
- `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
188
-
189
- NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
190
-
191
- </details>
192
-
193
156
  ## ⚙️ Configuration
194
157
 
195
158
  Most applications can use the defaults. Configuration is available when a host gem or application wants to align
@@ -255,7 +218,7 @@ unless auth_sanitizer_spec && auth_sanitizer_requirement.satisfied_by?(auth_sani
255
218
  end
256
219
  auth_sanitizer_loader_path = File.join(
257
220
  auth_sanitizer_spec.full_gem_path,
258
- "lib/auth_sanitizer/loader.rb",
221
+ "lib/auth_sanitizer/loader.rb"
259
222
  )
260
223
  unless File.file?(auth_sanitizer_loader_path)
261
224
  raise LoadError, "auth-sanitizer #{auth_sanitizer_requirement} loader not found at #{auth_sanitizer_loader_path}"
@@ -287,7 +250,7 @@ unless auth_sanitizer_spec && auth_sanitizer_requirement.satisfied_by?(auth_sani
287
250
  end
288
251
  auth_sanitizer_loader_path = File.join(
289
252
  auth_sanitizer_spec.full_gem_path,
290
- "lib/auth_sanitizer/loader.rb",
253
+ "lib/auth_sanitizer/loader.rb"
291
254
  )
292
255
  unless File.file?(auth_sanitizer_loader_path)
293
256
  raise LoadError, "auth-sanitizer #{auth_sanitizer_requirement} loader not found at #{auth_sanitizer_loader_path}"
@@ -297,7 +260,7 @@ auth_sanitizer_loader_namespace = Module.new
297
260
  auth_sanitizer_loader_namespace.module_eval(
298
261
  File.read(auth_sanitizer_loader_path),
299
262
  auth_sanitizer_loader_path,
300
- 1,
263
+ 1
301
264
  )
302
265
 
303
266
  AUTH_SANITIZER = auth_sanitizer_loader_namespace
@@ -353,7 +316,7 @@ logger = Auth::Sanitizer::SanitizedLogger.new(
353
316
  api_key
354
317
  private_key
355
318
  session_secret
356
- ],
319
+ ]
357
320
  )
358
321
  ```
359
322
 
@@ -363,7 +326,7 @@ You can also replace the list entirely:
363
326
  logger = Auth::Sanitizer::SanitizedLogger.new(
364
327
  Logger.new($stdout),
365
328
  filtered_keys: %w[my_secret],
366
- label: "[GONE]",
329
+ label: "[GONE]"
367
330
  )
368
331
  ```
369
332
 
@@ -395,8 +358,43 @@ class OAuthCredential
395
358
  end
396
359
  ```
397
360
 
398
- Declared names are matched against instance variable names. For example, `filtered_attributes :access_token` redacts
399
- `@access_token` in `#inspect`.
361
+ `FilteredAttributes#inspect` delegates to `super.inspect` first, then redacts only narrow, standard Ruby inspect
362
+ fragments for configured names. This preserves host object inspect behavior instead of rebuilding the object's output.
363
+
364
+ For example, `filtered_attributes :access_token` redacts `@access_token="..."` in normal object inspect output:
365
+
366
+ ```ruby
367
+ OAuthCredential.new("secret", Time.now).inspect
368
+ # => #<OAuthCredential:0x... @access_token=[FILTERED], @expires_at=2026-06-04 08:00:00 -0600>
369
+ ```
370
+
371
+ Configured names are also redacted when they appear as string-valued keys inside standard Ruby hash inspect fragments,
372
+ which is useful for adapter models that store attributes in an internal hash:
373
+
374
+ ```ruby
375
+ class IdentityRecord
376
+ include Auth::Sanitizer::FilteredAttributes
377
+
378
+ filtered_attributes :password_digest
379
+
380
+ def initialize(identity_data)
381
+ @identity_data = identity_data
382
+ end
383
+ end
384
+
385
+ IdentityRecord.new({id: 1, password_digest: "$2a$secret"}).inspect
386
+ # => #<IdentityRecord:0x... @identity_data={id: 1, password_digest: [FILTERED]}>
387
+ ```
388
+
389
+ The inspect redactor intentionally leaves unsupported or highly customized inspect formats unchanged. It only replaces
390
+ quoted string values in these standard shapes:
391
+
392
+ - `@name="value"`
393
+ - `{name: "value"}`
394
+ - `{:name => "value"}`
395
+ - `{"name" => "value"}`
396
+
397
+ This conservative behavior avoids breaking host models whose `inspect` output has application-specific formatting.
400
398
 
401
399
  Calling `filtered_attributes` again replaces the class-level list:
402
400
 
@@ -461,15 +459,16 @@ end
461
459
  response = TokenResponse.new(
462
460
  access_token: "access-token-value",
463
461
  refresh_token: "refresh-token-value",
464
- scope: "profile email",
462
+ scope: "profile email"
465
463
  )
466
464
 
467
465
  response.inspect
468
- # => #<TokenResponse:123456 @access_token=[FILTERED], @refresh_token=[FILTERED], @scope="profile email">
466
+ # => #<TokenResponse:0x... @access_token=[FILTERED], @refresh_token=[FILTERED], @scope="profile email">
469
467
  ```
470
468
 
471
469
  Only the configured attributes are redacted. Other instance variables remain visible so inspected objects are still
472
- useful while debugging.
470
+ useful while debugging. Inspect filtering is conservative: unsupported custom formats are left unchanged rather than
471
+ risking a malformed `inspect` result.
473
472
 
474
473
  ### Redact Logger Output
475
474
 
@@ -524,7 +523,7 @@ Use `filtered_keys:` for application-specific secrets:
524
523
  logger = Auth::Sanitizer::SanitizedLogger.new(
525
524
  Logger.new($stdout),
526
525
  filtered_keys: %w[access_token api_key signing_secret],
527
- label: "[SECRET]",
526
+ label: "[SECRET]"
528
527
  )
529
528
 
530
529
  logger.debug("api_key=12345&access_token=abc123")
@@ -553,8 +552,8 @@ While ruby-oauth tools are free software and will always be, the project would b
553
552
  Raising a monthly budget of... "dollars" would make the project more sustainable.
554
553
 
555
554
  We welcome both individual and corporate sponsors! We also offer a
556
- wide array of funding channels to account for your preferences
557
- (although currently [Open Collective][🖇osc] is our preferred funding platform).
555
+ wide array of funding channels to account for your preferences.
556
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
558
557
 
559
558
  **If you're working in a company that's making significant use of ruby-oauth tools we'd
560
559
  appreciate it if you suggest to your company to become a ruby-oauth sponsor.**
@@ -566,7 +565,7 @@ You can support the development of ruby-oauth tools via
566
565
  [Open Collective][🖇osc]
567
566
  and [Tidelift][🏙️entsup-tidelift].
568
567
 
569
- | 📍 NOTE |
568
+ | 📍 NOTE |
570
569
  |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
571
570
  | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
572
571
 
@@ -594,7 +593,7 @@ No sponsors yet. Be the first!
594
593
 
595
594
  ### Another way to support open-source
596
595
 
597
- I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
596
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
598
597
 
599
598
  If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
600
599
 
@@ -611,7 +610,7 @@ See [SECURITY.md][🔐security].
611
610
  ## 🤝 Contributing
612
611
 
613
612
  If you need some ideas of where to help, you could work on adding more code coverage,
614
- or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
613
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
615
614
  or use the gem and think about how it could be better.
616
615
 
617
616
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
@@ -624,12 +623,17 @@ See [CONTRIBUTING.md][🤝contributing].
624
623
 
625
624
  ### Code Coverage
626
625
 
626
+ <details markdown="1">
627
+ <summary>Coverage service badges</summary>
628
+
627
629
  [![Coverage Graph][🏀codecov-g]][🏀codecov]
628
630
 
629
631
  [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
630
632
 
631
633
  [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
632
634
 
635
+ </details>
636
+
633
637
  ### 🪇 Code of Conduct
634
638
 
635
639
  Everyone interacting with this project's codebases, issue trackers,
@@ -644,13 +648,13 @@ Made with [contributors-img][🖐contrib-rocks].
644
648
  Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/auth-sanitizer/-/graphs/main][🚎contributors-gl]
645
649
 
646
650
  <details>
647
- <summary>⭐️ Star History</summary>
651
+ <summary>⭐️ Star History</summary>
648
652
 
649
- <a href="https://star-history.com/#ruby-oauth/auth-sanitizer&Date">
653
+ <a href="https://star-history.com/ruby-oauth/auth-sanitizer&Date">
650
654
  <picture>
651
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date&theme=dark" />
652
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
653
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
655
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date&theme=dark" />
656
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
657
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ruby-oauth/auth-sanitizer&type=Date" />
654
658
  </picture>
655
659
  </a>
656
660
 
@@ -658,19 +662,8 @@ Also see GitLab Contributors: [https://gitlab.com/ruby-oauth/auth-sanitizer/-/gr
658
662
 
659
663
  ## 📌 Versioning
660
664
 
661
- This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
662
- Violations of this scheme should be reported as bugs.
663
- Specifically, if a minor or patch version is released that breaks backward compatibility,
664
- a new version should be immediately released that restores compatibility.
665
- Breaking changes to the public API will only be introduced with new major versions.
666
-
667
- > dropping support for a platform is both obviously and objectively a breaking change <br/>
668
- >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
669
-
670
- I understand that policy doesn't work universally ("exceptions to every rule!"),
671
- but it is the policy here.
672
- As such, in many cases it is good to specify a dependency on this library using
673
- the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
665
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
666
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
674
667
 
675
668
  For example:
676
669
 
@@ -681,8 +674,8 @@ spec.add_dependency("auth-sanitizer", "~> 0.0")
681
674
  <details markdown="1">
682
675
  <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
683
676
 
684
- SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
685
- is a *breaking change* to an API, and for that reason the bike shedding is endless.
677
+ Dropping support for a platform can be a breaking change for affected users.
678
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
686
679
 
687
680
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
688
681
  read this article from the creator of SemVer:
@@ -702,6 +695,13 @@ the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
702
695
 
703
696
  See [LICENSE.md][📄license] for the official copyright notice.
704
697
 
698
+ <details markdown="1">
699
+ <summary>Copyright holders</summary>
700
+
701
+ - Copyright (c) 2026 Peter H. Boling
702
+
703
+ </details>
704
+
705
705
  ## 🤑 A request for help
706
706
 
707
707
  Maintainers have teeth and need to pay their dentists.
@@ -721,6 +721,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
721
721
 
722
722
  ### Please give the project a star ⭐ ♥.
723
723
 
724
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
725
+
724
726
  Thanks for RTFM. ☺️
725
727
 
726
728
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -765,7 +767,7 @@ Thanks for RTFM. ☺️
765
767
  [⛳️gem-name]: https://bestgems.org/gems/auth-sanitizer
766
768
  [⛳️name-img]: https://img.shields.io/badge/name-auth--sanitizer-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
767
769
  [⛳️tag-img]: https://img.shields.io/github/tag/ruby-oauth/auth-sanitizer.svg
768
- [⛳️tag]: http://github.com/ruby-oauth/auth-sanitizer/releases
770
+ [⛳️tag]: https://github.com/ruby-oauth/auth-sanitizer/releases
769
771
  [🚂maint-blog]: http://www.railsbling.com/tags/auth-sanitizer
770
772
  [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
771
773
  [🚂maint-contact]: http://www.railsbling.com/contact
@@ -800,7 +802,7 @@ Thanks for RTFM. ☺️
800
802
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
801
803
  [🚂railsbling]: http://www.railsbling.com
802
804
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
803
- [📜src-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer/
805
+ [📜src-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer
804
806
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
805
807
  [📜src-cb]: https://codeberg.org/ruby-oauth/auth-sanitizer
806
808
  [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
@@ -809,8 +811,8 @@ Thanks for RTFM. ☺️
809
811
  [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
810
812
  [📜gl-wiki]: https://gitlab.com/ruby-oauth/auth-sanitizer/-/wikis/home
811
813
  [📜gh-wiki]: https://github.com/ruby-oauth/auth-sanitizer/wiki
812
- [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
813
- [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
814
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
815
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
814
816
  [👽dl-rank]: https://bestgems.org/gems/auth-sanitizer
815
817
  [👽dl-ranki]: https://img.shields.io/gem/rd/auth-sanitizer.svg
816
818
  [👽version]: https://bestgems.org/gems/auth-sanitizer
@@ -823,9 +825,6 @@ Thanks for RTFM. ☺️
823
825
  [🏀codecovi]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/graph/badge.svg
824
826
  [🏀coveralls]: https://coveralls.io/github/ruby-oauth/auth-sanitizer?branch=main
825
827
  [🏀coveralls-img]: https://coveralls.io/repos/github/ruby-oauth/auth-sanitizer/badge.svg?branch=main
826
- [🖐codeQL]: https://github.com/ruby-oauth/auth-sanitizer/security/code-scanning
827
- [🖐codeQL-img]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/codeql-analysis.yml/badge.svg
828
- [🚎ruby-2.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.3.yml
829
828
  [🚎ruby-2.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.4.yml
830
829
  [🚎ruby-2.5-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.5.yml
831
830
  [🚎ruby-2.6-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-2.6.yml
@@ -835,6 +834,7 @@ Thanks for RTFM. ☺️
835
834
  [🚎ruby-3.2-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.2.yml
836
835
  [🚎ruby-3.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.3.yml
837
836
  [🚎ruby-3.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/ruby-3.4.yml
837
+ [🚎jruby-9.2-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.2.yml
838
838
  [🚎jruby-9.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.3.yml
839
839
  [🚎jruby-9.4-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/jruby-9.4.yml
840
840
  [🚎truby-22.3-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/truffleruby-22.3.yml
@@ -863,7 +863,7 @@ Thanks for RTFM. ☺️
863
863
  [🚎15-🪪-wf]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/license-eye.yml
864
864
  [🚎15-🪪-wfi]: https://github.com/ruby-oauth/auth-sanitizer/actions/workflows/license-eye.yml/badge.svg
865
865
  [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
866
- [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
866
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
867
867
  [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
868
868
  [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
869
869
  [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
@@ -882,6 +882,7 @@ Thanks for RTFM. ☺️
882
882
  [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
883
883
  [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
884
884
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
885
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
885
886
  [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
886
887
  [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
887
888
  [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
@@ -893,34 +894,35 @@ Thanks for RTFM. ☺️
893
894
  [🤝cb-issues]: https://codeberg.org/ruby-oauth/auth-sanitizer/issues
894
895
  [🤝cb-pulls]: https://codeberg.org/ruby-oauth/auth-sanitizer/pulls
895
896
  [🤝cb-donate]: https://donate.codeberg.org/
896
- [🤝contributing]: CONTRIBUTING.md
897
- [🏀codecov-g]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/graphs/tree.svg
897
+ [🤝contributing]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CONTRIBUTING.md
898
+ [🏀codecov-g]: https://codecov.io/gh/ruby-oauth/auth-sanitizer/graph/badge.svg
898
899
  [🖐contrib-rocks]: https://contrib.rocks
899
900
  [🖐contributors]: https://github.com/ruby-oauth/auth-sanitizer/graphs/contributors
900
901
  [🖐contributors-img]: https://contrib.rocks/image?repo=ruby-oauth/auth-sanitizer
901
902
  [🚎contributors-gl]: https://gitlab.com/ruby-oauth/auth-sanitizer/-/graphs/main
902
- [🪇conduct]: CODE_OF_CONDUCT.md
903
+ [🪇conduct]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CODE_OF_CONDUCT.md
903
904
  [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
904
905
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
905
906
  [📌semver]: https://semver.org/spec/v2.0.0.html
906
907
  [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
907
908
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
908
909
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
909
- [📌changelog]: CHANGELOG.md
910
+ [📌changelog]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/CHANGELOG.md
910
911
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
911
912
  [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
912
913
  [📌gitmoji]: https://gitmoji.dev
913
914
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
914
915
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
915
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.135-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
916
- [🔐security]: SECURITY.md
916
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.145-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
917
+ [🔐security]: https://github.com/ruby-oauth/auth-sanitizer/blob/main/SECURITY.md
917
918
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
918
919
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
919
920
  [📄license]: LICENSE.md
920
- [📄license-ref]: https://opensource.org/licenses/MIT
921
+ [📄license-ref]: MIT.md
921
922
  [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
922
- [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
923
- [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
923
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
924
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-✓-259D6C.svg?style=flat&logo=Apache
925
+
924
926
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
925
927
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
926
928
  [🚎yard-current]: http://rubydoc.info/gems/auth-sanitizer
@@ -932,3 +934,14 @@ Thanks for RTFM. ☺️
932
934
  [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
933
935
  [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
934
936
  [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
937
+
938
+ <!-- kettle-jem:metadata:start -->
939
+ | Field | Value |
940
+ |---|---|
941
+ | Package | auth-sanitizer |
942
+ | Description | 💎 Configurable KV output redaction. Sanitize/filter your secrets. |
943
+ | Homepage | https://github.com/ruby-oauth/auth-sanitizer |
944
+ | Source | https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.0 |
945
+ | License | `MIT` |
946
+ | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/ruby-oauth, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/auth-sanitizer, https://www.buymeacoffee.com/pboling |
947
+ <!-- kettle-jem:metadata:end -->
data/RUBOCOP.md CHANGED
File without changes
data/SECURITY.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Version | Supported |
6
6
  |----------|-----------|
7
- | 1.latest | ✅ |
7
+ | 0.latest | ✅ |
8
8
 
9
9
  ## Security contact information
10
10
 
@@ -12,8 +12,6 @@ To report a security vulnerability, please use the
12
12
  [Tidelift security contact](https://tidelift.com/security).
13
13
  Tidelift will coordinate the fix and disclosure.
14
14
 
15
- More detailed explanation of the process is in [IRP.md][IRP]
16
-
17
15
  ## Additional Support
18
16
 
19
17
  If you are interested in support for versions older than the latest release,
@@ -21,4 +19,3 @@ please consider sponsoring the project / maintainer @ https://liberapay.com/pbol
21
19
  or find other sponsorship links in the [README].
22
20
 
23
21
  [README]: README.md
24
- [IRP]: IRP.md
data/certs/pboling.pem ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
3
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
4
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
5
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
6
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
7
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
8
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
9
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
10
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
11
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
12
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
13
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
14
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
15
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
16
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
17
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
18
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
19
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
20
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
21
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
22
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
23
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
24
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
25
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
26
+ L9nRqA==
27
+ -----END CERTIFICATE-----
File without changes