acfs 2.0.0 → 2.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.
Files changed (334) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/acfs.gemspec +3 -1
  5. data/lib/acfs/global.rb +10 -6
  6. data/lib/acfs/location.rb +2 -2
  7. data/lib/acfs/middleware/json.rb +3 -3
  8. data/lib/acfs/request.rb +5 -3
  9. data/lib/acfs/resource/attributes.rb +1 -1
  10. data/lib/acfs/runner.rb +46 -8
  11. data/lib/acfs/stub.rb +1 -1
  12. data/lib/acfs/telemetry.rb +19 -0
  13. data/lib/acfs/version.rb +2 -2
  14. data/lib/acfs.rb +7 -4
  15. data/spec/acfs/collection_spec.rb +16 -10
  16. data/spec/acfs/global_spec.rb +2 -2
  17. data/spec/acfs/middleware/json_spec.rb +16 -0
  18. data/spec/acfs/operation_spec.rb +2 -2
  19. data/spec/acfs/request/callbacks_spec.rb +2 -2
  20. data/spec/acfs/resource/locatable_spec.rb +5 -11
  21. data/spec/acfs/resource/query_methods_spec.rb +1 -1
  22. data/spec/acfs/resource/validation_spec.rb +3 -4
  23. data/spec/acfs/runner_spec.rb +6 -6
  24. data/spec/acfs/stub_spec.rb +6 -4
  25. data/spec/acfs_spec.rb +4 -4
  26. data/vendor/bundle/ruby/4.0.0/bundler/gems/rubocop-config-2b861962124a/README.md +23 -0
  27. data/vendor/bundle/ruby/{3.4.0/bundler/gems/rubocop-config-67802c9d1826 → 4.0.0/bundler/gems/rubocop-config-2b861962124a}/rubocop-config.gemspec +11 -11
  28. data/vendor/bundle/ruby/4.0.0/gems/actionpack-8.1.3/CHANGELOG.md +514 -0
  29. data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/README.rdoc +1 -1
  30. data/vendor/bundle/ruby/4.0.0/gems/actionview-8.1.3/CHANGELOG.md +191 -0
  31. data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/README.rdoc +1 -1
  32. data/vendor/bundle/ruby/4.0.0/gems/activemodel-8.1.3/CHANGELOG.md +68 -0
  33. data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/README.rdoc +1 -1
  34. data/vendor/bundle/ruby/4.0.0/gems/activesupport-8.1.3/CHANGELOG.md +561 -0
  35. data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/README.rdoc +1 -1
  36. data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/CHANGELOG.md +71 -46
  37. data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/README.md +6 -6
  38. data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/LICENSE.MIT +20 -0
  39. data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/README.YARD.md +12 -0
  40. data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/bigdecimal.gemspec +6 -1
  41. data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/CHANGELOG.md +12 -0
  42. data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/README.md +4 -2
  43. data/vendor/bundle/ruby/{3.4.0/gems/connection_pool-2.5.0 → 4.0.0/gems/connection_pool-3.0.2}/README.md +49 -34
  44. data/vendor/bundle/ruby/4.0.0/gems/connection_pool-3.0.2/connection_pool.gemspec +35 -0
  45. data/vendor/bundle/ruby/4.0.0/gems/diff-lcs-1.6.2/CHANGELOG.md +518 -0
  46. data/vendor/bundle/ruby/4.0.0/gems/diff-lcs-1.6.2/README.md +92 -0
  47. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/LICENSE +21 -0
  48. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/README.md +409 -0
  49. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/docile.gemspec +36 -0
  50. data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/drb-2.2.3}/drb.gemspec +2 -1
  51. data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/CHANGELOG.md +43 -1
  52. data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/README.md +1 -1
  53. data/vendor/bundle/ruby/4.0.0/gems/ethon-0.18.0/ethon.gemspec +37 -0
  54. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/CHANGELOG.md +42 -0
  55. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/README.md +1 -0
  56. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/ffi.gemspec +7 -6
  57. data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/README.md +26 -1
  58. data/vendor/bundle/ruby/4.0.0/gems/hashdiff-1.2.1/changelog.md +127 -0
  59. data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.6 → 4.0.0/gems/i18n-1.15.2}/README.md +13 -1
  60. data/vendor/bundle/ruby/{3.4.0/gems/json-2.9.1 → 4.0.0/gems/json-2.19.9}/README.md +117 -2
  61. data/vendor/bundle/ruby/{3.4.0/gems/json-2.9.1 → 4.0.0/gems/json-2.19.9}/json.gemspec +4 -6
  62. data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/LICENSE.txt +21 -0
  63. data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/README.md +88 -0
  64. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/CHANGELOG.md +15 -0
  65. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/LICENSE.txt +21 -0
  66. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/README.md +173 -0
  67. data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/CHANGELOG.md +17 -0
  68. data/vendor/bundle/ruby/{3.4.0/gems/minitest-5.25.4 → 4.0.0/gems/minitest-6.0.6}/README.rdoc +33 -105
  69. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/ChangeLog +383 -0
  70. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/LICENSE +177 -0
  71. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/README.md +302 -0
  72. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/msgpack.gemspec +41 -0
  73. data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/LICENSE.md +20 -0
  74. data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/README.md +281 -0
  75. data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.1-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/LICENSE-DEPENDENCIES.md +187 -0
  76. data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.1-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/README.md +18 -3
  77. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-api-1.10.0/CHANGELOG.md +219 -0
  78. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-api-1.10.0/LICENSE +201 -0
  79. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-api-1.10.0/README.md +68 -0
  80. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-common-0.25.0/CHANGELOG.md +110 -0
  81. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-common-0.25.0/LICENSE +201 -0
  82. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-common-0.25.0/README.md +62 -0
  83. data/vendor/bundle/ruby/4.0.0/gems/parallel-2.1.0/MIT-LICENSE.txt +20 -0
  84. data/vendor/bundle/ruby/{3.4.0/gems/rspec-collection_matchers-1.2.1 → 4.0.0/gems/parser-3.3.11.1}/LICENSE.txt +4 -5
  85. data/vendor/bundle/ruby/4.0.0/gems/parser-3.3.11.1/parser.gemspec +43 -0
  86. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/CHANGELOG.md +786 -0
  87. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/LICENSE.md +7 -0
  88. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/README.md +143 -0
  89. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/prism.gemspec +172 -0
  90. data/vendor/bundle/ruby/4.0.0/gems/public_suffix-7.0.5/CHANGELOG.md +649 -0
  91. data/vendor/bundle/ruby/{3.4.0/gems/public_suffix-6.0.1 → 4.0.0/gems/public_suffix-7.0.5}/LICENSE.txt +1 -1
  92. data/vendor/bundle/ruby/{3.4.0/gems/public_suffix-6.0.1 → 4.0.0/gems/public_suffix-7.0.5}/README.md +38 -29
  93. data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.8 → 4.0.0/gems/rack-3.2.6}/CHANGELOG.md +351 -3
  94. data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.8 → 4.0.0/gems/rack-3.2.6}/README.md +76 -20
  95. data/vendor/bundle/ruby/{3.4.0/gems/rails-dom-testing-2.2.0 → 4.0.0/gems/rails-dom-testing-2.3.0}/README.md +3 -0
  96. data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/CHANGELOG.md +10 -0
  97. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/Changelog.md +101 -0
  98. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/LICENSE +20 -0
  99. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/README.markdown +227 -0
  100. data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/README.rdoc +5 -5
  101. data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/rake.gemspec +3 -2
  102. data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/rake-release.gemspec +4 -4
  103. data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/LICENSE +22 -0
  104. data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/regexp_parser.gemspec +36 -0
  105. data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.2 → 4.0.0/gems/rspec-core-3.13.6}/Changelog.md +293 -261
  106. data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/Changelog.md +154 -140
  107. data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/Changelog.md +181 -129
  108. data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/Changelog.md +101 -65
  109. data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/LICENSE.txt +20 -0
  110. data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/README.md +255 -0
  111. data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/LICENSE.txt +20 -0
  112. data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/README.md +54 -0
  113. data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/CHANGELOG.md +116 -0
  114. data/vendor/bundle/ruby/{3.4.0/gems/diff-lcs-1.5.1/License.md → 4.0.0/gems/rubocop-capybara-2.23.0/MIT-LICENSE.md} +2 -22
  115. data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/README.md +91 -0
  116. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/CHANGELOG.md +135 -0
  117. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/MIT-LICENSE.md +21 -0
  118. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/README.md +91 -0
  119. data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/LICENSE.txt +20 -0
  120. data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/README.md +100 -0
  121. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/CHANGELOG.md +1136 -0
  122. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/MIT-LICENSE.md +21 -0
  123. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/README.md +112 -0
  124. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/CHANGELOG.md +98 -0
  125. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/MIT-LICENSE.md +21 -0
  126. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/README.md +93 -0
  127. data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/LICENSE.txt +19 -0
  128. data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/README.md +131 -0
  129. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/CHANGELOG.md +191 -0
  130. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/LICENSE +20 -0
  131. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/README.md +974 -0
  132. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/LICENSE +202 -0
  133. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/README.md +65 -0
  134. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/simplecov-cobertura.gemspec +29 -0
  135. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/CHANGELOG.md +114 -0
  136. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/LICENSE +20 -0
  137. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/README.md +30 -0
  138. data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/CHANGELOG.md +13 -0
  139. data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/README.md +29 -0
  140. data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/README.md +1 -2
  141. data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/thor.gemspec +3 -3
  142. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/CHANGELOG.md +56 -1
  143. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/README.md +2 -2
  144. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/typhoeus.gemspec +14 -4
  145. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/CHANGELOG.md +299 -0
  146. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/MIT-LICENSE.txt +22 -0
  147. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/README.md +194 -0
  148. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/CHANGELOG.md +202 -0
  149. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/MIT-LICENSE.txt +20 -0
  150. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/README.md +205 -0
  151. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/unicode-emoji.gemspec +22 -0
  152. data/vendor/bundle/ruby/{3.4.0/gems/uri-1.0.2 → 4.0.0/gems/uri-1.1.1}/README.md +1 -1
  153. data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.24.0 → 4.0.0/gems/webmock-3.26.2}/CHANGELOG.md +44 -0
  154. data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.24.0 → 4.0.0/gems/webmock-3.26.2}/README.md +7 -0
  155. data/vendor/bundle/ruby/{3.4.0/specifications/actionpack-8.0.1.gemspec → 4.0.0/specifications/actionpack-8.1.3.gemspec} +9 -9
  156. data/vendor/bundle/ruby/{3.4.0/specifications/actionview-8.0.1.gemspec → 4.0.0/specifications/actionview-8.1.3.gemspec} +9 -9
  157. data/vendor/bundle/ruby/{3.4.0/specifications/activemodel-8.0.1.gemspec → 4.0.0/specifications/activemodel-8.1.3.gemspec} +7 -7
  158. data/vendor/bundle/ruby/{3.4.0/specifications/activesupport-8.0.1.gemspec → 4.0.0/specifications/activesupport-8.1.3.gemspec} +7 -7
  159. data/vendor/bundle/ruby/{3.4.0/specifications/addressable-2.8.7.gemspec → 4.0.0/specifications/addressable-2.9.0.gemspec} +7 -8
  160. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/appraisal-2.5.0.gemspec +1 -1
  161. data/vendor/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
  162. data/vendor/bundle/ruby/{3.4.0/specifications/base64-0.2.0.gemspec → 4.0.0/specifications/base64-0.3.0.gemspec} +6 -6
  163. data/vendor/bundle/ruby/{3.4.0/specifications/bigdecimal-3.1.9.gemspec → 4.0.0/specifications/bigdecimal-4.1.2.gemspec} +6 -6
  164. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/builder-3.3.0.gemspec +1 -1
  165. data/vendor/bundle/ruby/{3.4.0/specifications/concurrent-ruby-1.3.5.gemspec → 4.0.0/specifications/concurrent-ruby-1.3.7.gemspec} +6 -6
  166. data/vendor/bundle/ruby/{3.4.0/specifications/connection_pool-2.5.0.gemspec → 4.0.0/specifications/connection_pool-3.0.2.gemspec} +8 -8
  167. data/vendor/bundle/ruby/{3.4.0/specifications/crack-1.0.0.gemspec → 4.0.0/specifications/crack-1.0.1.gemspec} +4 -4
  168. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/crass-1.0.6.gemspec +1 -1
  169. data/vendor/bundle/ruby/4.0.0/specifications/diff-lcs-1.6.2.gemspec +35 -0
  170. data/vendor/bundle/ruby/4.0.0/specifications/docile-1.4.1.gemspec +22 -0
  171. data/vendor/bundle/ruby/{3.4.0/specifications/drb-2.2.1.gemspec → 4.0.0/specifications/drb-2.2.3.gemspec} +6 -6
  172. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/erubi-1.13.1.gemspec +1 -1
  173. data/vendor/bundle/ruby/4.0.0/specifications/ethon-0.18.0.gemspec +27 -0
  174. data/vendor/bundle/ruby/{3.4.0/specifications/ffi-1.17.1-x86_64-linux-gnu.gemspec → 4.0.0/specifications/ffi-1.17.4-x86_64-linux-gnu.gemspec} +7 -14
  175. data/vendor/bundle/ruby/{3.4.0/specifications/hashdiff-1.1.2.gemspec → 4.0.0/specifications/hashdiff-1.2.1.gemspec} +4 -4
  176. data/vendor/bundle/ruby/{3.4.0/specifications/i18n-1.14.6.gemspec → 4.0.0/specifications/i18n-1.15.2.gemspec} +6 -7
  177. data/vendor/bundle/ruby/{3.4.0/specifications/json-2.9.1.gemspec → 4.0.0/specifications/json-2.19.9.gemspec} +0 -0
  178. data/vendor/bundle/ruby/4.0.0/specifications/language_server-protocol-3.17.0.5.gemspec +31 -0
  179. data/vendor/bundle/ruby/4.0.0/specifications/lint_roller-1.1.0.gemspec +22 -0
  180. data/vendor/bundle/ruby/{3.4.0/specifications/logger-1.6.5.gemspec → 4.0.0/specifications/logger-1.7.0.gemspec} +4 -4
  181. data/vendor/bundle/ruby/{3.4.0/specifications/loofah-2.24.0.gemspec → 4.0.0/specifications/loofah-2.25.1.gemspec} +5 -5
  182. data/vendor/bundle/ruby/4.0.0/specifications/minitest-6.0.6.gemspec +35 -0
  183. data/vendor/bundle/ruby/4.0.0/specifications/msgpack-1.8.3.gemspec +36 -0
  184. data/vendor/bundle/ruby/4.0.0/specifications/multi_json-1.21.1.gemspec +22 -0
  185. data/vendor/bundle/ruby/{3.4.0/specifications/nokogiri-1.18.1-x86_64-linux-gnu.gemspec → 4.0.0/specifications/nokogiri-1.19.4-x86_64-linux-gnu.gemspec} +7 -7
  186. data/vendor/bundle/ruby/4.0.0/specifications/opentelemetry-api-1.10.0.gemspec +35 -0
  187. data/vendor/bundle/ruby/4.0.0/specifications/opentelemetry-common-0.25.0.gemspec +33 -0
  188. data/vendor/bundle/ruby/4.0.0/specifications/parallel-2.1.0.gemspec +21 -0
  189. data/vendor/bundle/ruby/4.0.0/specifications/parser-3.3.11.1.gemspec +37 -0
  190. data/vendor/bundle/ruby/4.0.0/specifications/prism-1.9.0.gemspec +24 -0
  191. data/vendor/bundle/ruby/{3.4.0/specifications/public_suffix-6.0.1.gemspec → 4.0.0/specifications/public_suffix-7.0.5.gemspec} +7 -7
  192. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/racc-1.8.1.gemspec +1 -1
  193. data/vendor/bundle/ruby/{3.4.0/specifications/rack-3.1.8.gemspec → 4.0.0/specifications/rack-3.2.6.gemspec} +7 -7
  194. data/vendor/bundle/ruby/{3.4.0/specifications/rack-session-2.1.0.gemspec → 4.0.0/specifications/rack-session-2.1.2.gemspec} +5 -5
  195. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/rack-test-2.2.0.gemspec +1 -1
  196. data/vendor/bundle/ruby/{3.4.0/specifications/rails-dom-testing-2.2.0.gemspec → 4.0.0/specifications/rails-dom-testing-2.3.0.gemspec} +5 -5
  197. data/vendor/bundle/ruby/{3.4.0/specifications/rails-html-sanitizer-1.6.2.gemspec → 4.0.0/specifications/rails-html-sanitizer-1.7.0.gemspec} +7 -7
  198. data/vendor/bundle/ruby/4.0.0/specifications/rainbow-3.1.1.gemspec +25 -0
  199. data/vendor/bundle/ruby/{3.4.0/specifications/rake-13.2.1.gemspec → 4.0.0/specifications/rake-13.4.2.gemspec} +6 -6
  200. data/vendor/bundle/ruby/{3.4.0/specifications/rake-release-1.3.0.gemspec → 4.0.0/specifications/rake-release-1.4.0.gemspec} +7 -7
  201. data/vendor/bundle/ruby/4.0.0/specifications/regexp_parser-2.12.0.gemspec +22 -0
  202. data/vendor/bundle/ruby/{3.4.0/specifications/rexml-3.4.0.gemspec → 4.0.0/specifications/rexml-3.4.4.gemspec} +6 -6
  203. data/vendor/bundle/ruby/{3.4.0/specifications/rspec-3.13.0.gemspec → 4.0.0/specifications/rspec-3.13.2.gemspec} +9 -9
  204. data/vendor/bundle/ruby/4.0.0/specifications/rspec-core-3.13.6.gemspec +31 -0
  205. data/vendor/bundle/ruby/4.0.0/specifications/rspec-expectations-3.13.5.gemspec +29 -0
  206. data/vendor/bundle/ruby/4.0.0/specifications/rspec-mocks-3.13.8.gemspec +29 -0
  207. data/vendor/bundle/ruby/{3.4.0/specifications/rspec-support-3.13.2.gemspec → 4.0.0/specifications/rspec-support-3.13.7.gemspec} +9 -9
  208. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-1.88.0.gemspec +39 -0
  209. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-ast-1.49.1.gemspec +29 -0
  210. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-capybara-2.23.0.gemspec +28 -0
  211. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-factory_bot-2.28.0.gemspec +28 -0
  212. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-performance-1.26.1.gemspec +30 -0
  213. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec-3.10.2.gemspec +30 -0
  214. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec_rails-2.32.0.gemspec +29 -0
  215. data/vendor/bundle/ruby/4.0.0/specifications/ruby-progressbar-1.13.0.gemspec +29 -0
  216. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/securerandom-0.4.1.gemspec +1 -1
  217. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-0.22.0.gemspec +28 -0
  218. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-cobertura-3.2.0.gemspec +29 -0
  219. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-html-0.13.2.gemspec +22 -0
  220. data/vendor/bundle/ruby/4.0.0/specifications/simplecov_json_formatter-0.1.4.gemspec +21 -0
  221. data/vendor/bundle/ruby/{3.4.0/specifications/thor-1.3.2.gemspec → 4.0.0/specifications/thor-1.5.0.gemspec} +8 -8
  222. data/vendor/bundle/ruby/4.0.0/specifications/typhoeus-1.6.0.gemspec +26 -0
  223. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/tzinfo-2.0.6.gemspec +1 -1
  224. data/vendor/bundle/ruby/4.0.0/specifications/unicode-display_width-3.2.0.gemspec +30 -0
  225. data/vendor/bundle/ruby/4.0.0/specifications/unicode-emoji-4.2.0.gemspec +22 -0
  226. data/vendor/bundle/ruby/{3.4.0/specifications/uri-1.0.2.gemspec → 4.0.0/specifications/uri-1.1.1.gemspec} +5 -5
  227. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/useragent-0.16.11.gemspec +1 -1
  228. data/vendor/bundle/ruby/{3.4.0/specifications/webmock-3.24.0.gemspec → 4.0.0/specifications/webmock-3.26.2.gemspec} +7 -8
  229. metadata +304 -196
  230. data/vendor/bundle/ruby/3.4.0/bundler/gems/rubocop-config-67802c9d1826/README.md +0 -23
  231. data/vendor/bundle/ruby/3.4.0/gems/actionpack-8.0.1/CHANGELOG.md +0 -205
  232. data/vendor/bundle/ruby/3.4.0/gems/actionview-8.0.1/CHANGELOG.md +0 -67
  233. data/vendor/bundle/ruby/3.4.0/gems/activemodel-8.0.1/CHANGELOG.md +0 -110
  234. data/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.1/CHANGELOG.md +0 -157
  235. data/vendor/bundle/ruby/3.4.0/gems/addressable-2.8.7/addressable.gemspec +0 -28
  236. data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/README.md +0 -138
  237. data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/benchmark.gemspec +0 -32
  238. data/vendor/bundle/ruby/3.4.0/gems/connection_pool-2.5.0/connection_pool.gemspec +0 -24
  239. data/vendor/bundle/ruby/3.4.0/gems/diff-lcs-1.5.1/README.rdoc +0 -84
  240. data/vendor/bundle/ruby/3.4.0/gems/ethon-0.16.0/ethon.gemspec +0 -26
  241. data/vendor/bundle/ruby/3.4.0/gems/hashdiff-1.1.2/changelog.md +0 -119
  242. data/vendor/bundle/ruby/3.4.0/gems/logger-1.6.5/logger.gemspec +0 -28
  243. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/CHANGELOG.md +0 -275
  244. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/LICENSE.md +0 -20
  245. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/README.md +0 -121
  246. data/vendor/bundle/ruby/3.4.0/gems/public_suffix-6.0.1/CHANGELOG.md +0 -491
  247. data/vendor/bundle/ruby/3.4.0/gems/rexml-3.4.0/LICENSE.txt +0 -22
  248. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/Changelog.md +0 -68
  249. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/README.md +0 -76
  250. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/rspec-collection_matchers.gemspec +0 -33
  251. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/Changelog.md +0 -73
  252. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/LICENSE.txt +0 -27
  253. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/README.md +0 -104
  254. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/rspec-its.gemspec +0 -31
  255. data/vendor/bundle/ruby/3.4.0/specifications/benchmark-0.4.0.gemspec +0 -23
  256. data/vendor/bundle/ruby/3.4.0/specifications/diff-lcs-1.5.1.gemspec +0 -37
  257. data/vendor/bundle/ruby/3.4.0/specifications/ethon-0.16.0.gemspec +0 -24
  258. data/vendor/bundle/ruby/3.4.0/specifications/minitest-5.25.4.gemspec +0 -31
  259. data/vendor/bundle/ruby/3.4.0/specifications/multi_json-1.15.0.gemspec +0 -26
  260. data/vendor/bundle/ruby/3.4.0/specifications/rspec-collection_matchers-1.2.1.gemspec +0 -27
  261. data/vendor/bundle/ruby/3.4.0/specifications/rspec-core-3.13.2.gemspec +0 -39
  262. data/vendor/bundle/ruby/3.4.0/specifications/rspec-expectations-3.13.3.gemspec +0 -33
  263. data/vendor/bundle/ruby/3.4.0/specifications/rspec-its-2.0.0.gemspec +0 -27
  264. data/vendor/bundle/ruby/3.4.0/specifications/rspec-mocks-3.13.2.gemspec +0 -33
  265. data/vendor/bundle/ruby/3.4.0/specifications/typhoeus-1.4.1.gemspec +0 -24
  266. /data/vendor/bundle/ruby/{3.4.0/bundler/gems/rubocop-config-67802c9d1826 → 4.0.0/bundler/gems/rubocop-config-2b861962124a}/LICENSE +0 -0
  267. /data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/MIT-LICENSE +0 -0
  268. /data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/MIT-LICENSE +0 -0
  269. /data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/MIT-LICENSE +0 -0
  270. /data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/MIT-LICENSE +0 -0
  271. /data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/LICENSE.txt +0 -0
  272. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/MIT-LICENSE +0 -0
  273. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/README.md +0 -0
  274. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/appraisal.gemspec +0 -0
  275. /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/base64-0.3.0}/README.md +0 -0
  276. /data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/LICENSE +0 -0
  277. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/MIT-LICENSE +0 -0
  278. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/README.md +0 -0
  279. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/builder.gemspec +0 -0
  280. /data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/LICENSE.txt +0 -0
  281. /data/vendor/bundle/ruby/{3.4.0/gems/connection_pool-2.5.0 → 4.0.0/gems/connection_pool-3.0.2}/LICENSE +0 -0
  282. /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/LICENSE +0 -0
  283. /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/README.md +0 -0
  284. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/LICENSE +0 -0
  285. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/README.md +0 -0
  286. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/crass.gemspec +0 -0
  287. /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/drb-2.2.3}/LICENSE.txt +0 -0
  288. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/CHANGELOG +0 -0
  289. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/MIT-LICENSE +0 -0
  290. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/README.rdoc +0 -0
  291. /data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/LICENSE +0 -0
  292. /data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/LICENSE +0 -0
  293. /data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/LICENSE.SPECS +0 -0
  294. /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/LICENSE +0 -0
  295. /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/hashdiff.gemspec +0 -0
  296. /data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.6 → 4.0.0/gems/i18n-1.15.2}/MIT-LICENSE +0 -0
  297. /data/vendor/bundle/ruby/{3.4.0/gems/logger-1.6.5 → 4.0.0/gems/logger-1.7.0}/README.md +0 -0
  298. /data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/MIT-LICENSE.txt +0 -0
  299. /data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/README.md +0 -0
  300. /data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.1-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/LICENSE.md +0 -0
  301. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/ChangeLog +0 -0
  302. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.ja.rdoc +0 -0
  303. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.rdoc +0 -0
  304. /data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.8 → 4.0.0/gems/rack-3.2.6}/MIT-LICENSE +0 -0
  305. /data/vendor/bundle/ruby/{3.4.0/gems/rack-session-2.1.0 → 4.0.0/gems/rack-session-2.1.2}/license.md +0 -0
  306. /data/vendor/bundle/ruby/{3.4.0/gems/rack-session-2.1.0 → 4.0.0/gems/rack-session-2.1.2}/readme.md +0 -0
  307. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/MIT-LICENSE.txt +0 -0
  308. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/README.md +0 -0
  309. /data/vendor/bundle/ruby/{3.4.0/gems/rails-dom-testing-2.2.0 → 4.0.0/gems/rails-dom-testing-2.3.0}/MIT-LICENSE +0 -0
  310. /data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/MIT-LICENSE +0 -0
  311. /data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/README.md +0 -0
  312. /data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/MIT-LICENSE +0 -0
  313. /data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/LICENSE +0 -0
  314. /data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/README.md +0 -0
  315. /data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/rexml-3.4.4}/LICENSE.txt +0 -0
  316. /data/vendor/bundle/ruby/{3.4.0/gems/rexml-3.4.0 → 4.0.0/gems/rexml-3.4.4}/README.md +0 -0
  317. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/LICENSE.md +0 -0
  318. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/README.md +0 -0
  319. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.2 → 4.0.0/gems/rspec-core-3.13.6}/LICENSE.md +0 -0
  320. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.2 → 4.0.0/gems/rspec-core-3.13.6}/README.md +0 -0
  321. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/LICENSE.md +0 -0
  322. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/README.md +0 -0
  323. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/LICENSE.md +0 -0
  324. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/README.md +0 -0
  325. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/LICENSE.md +0 -0
  326. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/README.md +0 -0
  327. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/securerandom-0.4.1/README.md +0 -0
  328. /data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/LICENSE.md +0 -0
  329. /data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/LICENSE +0 -0
  330. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/LICENSE +0 -0
  331. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/README.md +0 -0
  332. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/LICENSE +0 -0
  333. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/README.md +0 -0
  334. /data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.24.0 → 4.0.0/gems/webmock-3.26.2}/LICENSE +0 -0
@@ -0,0 +1,127 @@
1
+ # Change Log
2
+
3
+ ## v1.2.1 2025-09-06
4
+
5
+ * Use HTTPS for the source in the Gemfile [#101](https://github.com/liufengyun/hashdiff/issues/101) ([@krzysiek1507](https://github.com/krzysiek1507))
6
+
7
+ ## v1.2.0 2025-5-20
8
+
9
+ * Added :preserve_key_order option to maintain original hash key order [#99](https://github.com/liufengyun/hashdiff/issues/99) ([@robkiessling](https://github.com/robkiessling))
10
+
11
+ ## v1.1.2 2024-11-12
12
+
13
+ * Fix bundler cache [#96](https://github.com/liufengyun/hashdiff/issues/96) ([@olleolleolle](https://github.com/olleolleolle))
14
+ * Quote the '3.0' in YAML [#95](https://github.com/liufengyun/hashdiff/issues/95) ([@olleolleolle](https://github.com/olleolleolle))
15
+ * Fix version in source code [#97](https://github.com/liufengyun/hashdiff/issues/97) ([@liufengyun](https://github.com/liufengyun))
16
+
17
+ ## v1.1.1 2024-08-02
18
+
19
+ * Fix bug in ignore_keys option [#88](https://github.com/liufengyun/hashdiff/issues/88) ([@Matzfan](https://github.com/Matzfan))
20
+ * Exclude spec files from gem package [#94](https://github.com/liufengyun/hashdiff/issues/94) ([@amatsuda](https://github.com/amatsuda))
21
+
22
+ ## v1.1.0 2023-12-14
23
+
24
+ * Add ignore_keys option ([#86](https://github.com/liufengyun/hashdiff/issues/86) [@Matzfan](https://github.com/Matzfan))
25
+ * Remove pinned version of rake < 11
26
+ * Bump rspec dep ~> 3.5
27
+ * Bump rubocop dep >= 1.52.1
28
+ * Bump rubocop-rspec dep > 1.16.0
29
+
30
+ ## v1.0.1 2020-02-25
31
+
32
+ * Add indifferent option
33
+
34
+ ## v1.0.0 2019-06-06
35
+
36
+ * Fix typo in readme ([#72](https://github.com/liufengyun/hashdiff/issues/72) [@koic](https://github.com/koic))
37
+ * Fix Rubocop offence ([#73](https://github.com/liufengyun/hashdiff/issues/73) [@koic](https://github.com/koic))
38
+ * Bumps version to v1.0.0 ([#74](https://github.com/liufengyun/hashdiff/issues/74) [@jfelchner](https://github.com/jfelchner))
39
+
40
+ ## v1.0.0.beta1 2019-06-06
41
+
42
+ * fix warnings in ci ([#69](https://github.com/liufengyun/hashdiff/issues/69) [@y-yagi](https://github.com/y-yagi))
43
+ * drop warnings of the constant change ([#70](https://github.com/liufengyun/hashdiff/issues/70) [@jfelchner](https://github.com/jfelchner))
44
+
45
+ ## v0.4.0 2019-05-28
46
+
47
+ * refactoring ([#56](https://github.com/liufengyun/hashdiff/issues/56) [#57](https://github.com/liufengyun/hashdiff/issues/57) [#59](https://github.com/liufengyun/hashdiff/issues/59) [#61](https://github.com/liufengyun/hashdiff/issues/61) [@krzysiek1507](https://github.com/krzysiek1507))
48
+ * fix typo in README ([#64](https://github.com/liufengyun/hashdiff/issues/64) [@pboling](https://github.com/pboling))
49
+ * change HashDiff to Hashdiff ([#65](https://github.com/liufengyun/hashdiff/issues/65) [@jfelchner](https://github.com/jfelchner))
50
+
51
+ ## v0.3.9 2019-04-22
52
+
53
+ * Performance tweak (thanks [@krzysiek1507](https://github.com/krzysiek1507): [#51](https://github.com/liufengyun/hashdiff/issues/51) [#52](https://github.com/liufengyun/hashdiff/issues/52) [#53](https://github.com/liufengyun/hashdiff/issues/53))
54
+
55
+ ## v0.3.8 2018-12-30
56
+
57
+ * Add Rubocop and drops Ruby 1.9 support [#47](https://github.com/liufengyun/hashdiff/issues/47)
58
+
59
+ ## v0.3.7 2017-10-08
60
+
61
+ * remove 1.8.7 support from gemspec [#39](https://github.com/liufengyun/hashdiff/issues/39)
62
+
63
+ ## v0.3.6 2017-08-22
64
+
65
+ * add option `use_lcs` [#35](https://github.com/liufengyun/hashdiff/issues/35)
66
+
67
+ ## v0.3.5 2017-08-06
68
+
69
+ * add option `array_path` [#34](https://github.com/liufengyun/hashdiff/issues/34)
70
+
71
+ ## v0.3.4 2017-05-01
72
+
73
+ * performance improvement of `#similar?` [#31](https://github.com/liufengyun/hashdiff/issues/31)
74
+
75
+ ## v0.3.2 2016-12-27
76
+
77
+ * replace `Fixnum` by `Integer` [#28](https://github.com/liufengyun/hashdiff/issues/28)
78
+
79
+ ## v0.3.1 2016-11-24
80
+
81
+ * fix an error when a hash has mixed types [#26](https://github.com/liufengyun/hashdiff/issues/26)
82
+
83
+ ## v0.3.0 2016-2-11
84
+
85
+ * support `:case_insensitive` option
86
+
87
+ ## v0.2.3 2015-11-5
88
+
89
+ * improve performance of LCS algorithm [#12](https://github.com/liufengyun/hashdiff/issues/12)
90
+
91
+ ## v0.2.2 2014-10-6
92
+
93
+ * make library 1.8.7 compatible
94
+
95
+ ## v0.2.1 2014-7-13
96
+
97
+ * yield added/deleted keys for custom comparison
98
+
99
+ ## v0.2.0 2014-3-29
100
+
101
+ * support custom comparison blocks
102
+ * support `:strip`, `:numeric_tolerance` and `:strict` options
103
+
104
+ ## v0.1.0 2013-8-25
105
+
106
+ * use options for parameters `:delimiter` and `:similarity` in interfaces
107
+
108
+ ## v0.0.6 2013-3-2
109
+
110
+ * Add parameter for custom property-path delimiter.
111
+
112
+ ## v0.0.5 2012-7-1
113
+
114
+ * fix a bug in judging whehter two objects are similiar.
115
+ * add more spec test for `.best_diff`
116
+
117
+ ## v0.0.4 2012-6-24
118
+
119
+ Main changes in this version is to output the whole object in addition & deletion, instead of recursely add/deletes the object.
120
+
121
+ For example, `diff({a:2, c:[4, 5]}, {a:2}) will generate following output:
122
+
123
+ [['-', 'c', [4, 5]]]
124
+
125
+ instead of following:
126
+
127
+ [['-', 'c[0]', 4], ['-', 'c[1]', 5], ['-', 'c', []]]
@@ -19,7 +19,7 @@ We support Rails versions from 6.0 and up.
19
19
 
20
20
  ### Ruby (without Rails)
21
21
 
22
- We support Ruby versions from 3.0 and up.
22
+ We support Ruby versions from 3.1 and up.
23
23
 
24
24
  If you want to use this library without Rails, you can simply add `i18n` to your `Gemfile`:
25
25
 
@@ -54,6 +54,18 @@ I18n.locale = :de
54
54
  I18n.t(:test) # => "Dies ist ein Test"
55
55
  ```
56
56
 
57
+ ### Fiber-safe config updates
58
+
59
+ `Fiber[]` values are inherited by child fibers.
60
+ To avoid sharing mutable config objects across fibers, prefer creating updated configs and setting them with `set!`:
61
+
62
+ ```ruby
63
+ I18n.config.with(locale: :ja).set!
64
+ ```
65
+
66
+ `set!` stores a frozen config in the current execution context.
67
+ This keeps inherited state safe and lets updates happen by replacing config objects.
68
+
57
69
  ## Features
58
70
 
59
71
  * Translation and localization
@@ -29,7 +29,7 @@ If bundler is not being used to manage dependencies, install the gem by executin
29
29
 
30
30
  $ gem install json
31
31
 
32
- ## Usage
32
+ ## Basic Usage
33
33
 
34
34
  To use JSON you can
35
35
 
@@ -52,7 +52,98 @@ You can also use the `pretty_generate` method (which formats the output more
52
52
  verbosely and nicely) or `fast_generate` (which doesn't do any of the security
53
53
  checks generate performs, e. g. nesting deepness checks).
54
54
 
55
- ## Handling arbitrary types
55
+ ## Casting non native types
56
+
57
+ JSON documents can only support Hashes, Arrays, Strings, Integers and Floats.
58
+
59
+ By default if you attempt to serialize something else, `JSON.generate` will
60
+ search for a `#to_json` method on that object:
61
+
62
+ ```ruby
63
+ Position = Struct.new(:latitude, :longitude) do
64
+ def to_json(state = nil, *)
65
+ JSON::State.from_state(state).generate({
66
+ latitude: latitude,
67
+ longitude: longitude,
68
+ })
69
+ end
70
+ end
71
+
72
+ JSON.generate([
73
+ Position.new(12323.234, 435345.233),
74
+ Position.new(23434.676, 159435.324),
75
+ ]) # => [{"latitude":12323.234,"longitude":435345.233},{"latitude":23434.676,"longitude":159435.324}]
76
+ ```
77
+
78
+ If a `#to_json` method isn't defined on the object, `JSON.generate` will fallback to call `#to_s`:
79
+
80
+ ```ruby
81
+ JSON.generate(Object.new) # => "#<Object:0x000000011e768b98>"
82
+ ```
83
+
84
+ Both of these behavior can be disabled using the `strict: true` option:
85
+
86
+ ```ruby
87
+ JSON.generate(Object.new, strict: true) # => Object not allowed in JSON (JSON::GeneratorError)
88
+ JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
89
+ ```
90
+
91
+ ## JSON::Coder
92
+
93
+ Since `#to_json` methods are global, it can sometimes be problematic if you need a given type to be
94
+ serialized in different ways in different locations.
95
+
96
+ Instead it is recommended to use the newer `JSON::Coder` API:
97
+
98
+ ```ruby
99
+ module MyApp
100
+ API_JSON_CODER = JSON::Coder.new do |object, is_object_key|
101
+ case object
102
+ when Time
103
+ object.iso8601(3)
104
+ else
105
+ object
106
+ end
107
+ end
108
+ end
109
+
110
+ puts MyApp::API_JSON_CODER.dump(Time.now.utc) # => "2025-01-21T08:41:44.286Z"
111
+ ```
112
+
113
+ The provided block is called for all objects that don't have a native JSON equivalent, and
114
+ must return a Ruby object that has a native JSON equivalent.
115
+
116
+ It is also called for objects that do have a JSON equivalent, but are used as Hash keys, for instance `{ 1 => 2}`,
117
+ as well as for strings that aren't valid UTF-8:
118
+
119
+ ```ruby
120
+ coder = JSON::Combining.new do |object, is_object_key|
121
+ case object
122
+ when String
123
+ if !string.valid_encoding? || string.encoding != Encoding::UTF_8
124
+ Base64.encode64(string)
125
+ else
126
+ string
127
+ end
128
+ else
129
+ object
130
+ end
131
+ end
132
+ ```
133
+
134
+ ## Combining JSON fragments
135
+
136
+ To combine JSON fragments into a bigger JSON document, you can use `JSON::Fragment`:
137
+
138
+ ```ruby
139
+ posts_json = cache.fetch_multi(post_ids) do |post_id|
140
+ JSON.generate(Post.find(post_id))
141
+ end
142
+ posts_json.map! { |post_json| JSON::Fragment.new(post_json) }
143
+ JSON.generate({ posts: posts_json, count: posts_json.count })
144
+ ```
145
+
146
+ ## Round-tripping arbitrary types
56
147
 
57
148
  > [!CAUTION]
58
149
  > You should never use `JSON.unsafe_load` nor `JSON.parse(str, create_additions: true)` to parse untrusted user input,
@@ -158,8 +249,32 @@ There are also the methods `Kernel#j` for generate, and `Kernel#jj` for
158
249
  `pretty_generate` output to the console, that work analogous to Core Ruby's `p` and
159
250
  the `pp` library's `pp` methods.
160
251
 
252
+ ## Security
253
+
254
+ When parsing or serializing untrusted input, parser and generator options should never be user controlled.
255
+
256
+ ```ruby
257
+ # Dangerous, DO NOT DO THIS.
258
+ JSON.generate(params[:data], params[:options])
259
+ ```
260
+
261
+ Security vulnerability reports relying on attacker controlled parsing or generator options will be handled as regular bug fixes.
262
+
161
263
  ## Development
162
264
 
265
+ ### Prerequisites
266
+
267
+ 1. Clone the repository
268
+ 2. Install dependencies with `bundle install`
269
+
270
+ ### Testing
271
+
272
+ The full test suite can be run with:
273
+
274
+ ```bash
275
+ bundle exec rake test
276
+ ```
277
+
163
278
  ### Release
164
279
 
165
280
  Update the `lib/json/version.rb` file.
@@ -11,14 +11,13 @@ spec = Gem::Specification.new do |s|
11
11
  s.version = version
12
12
 
13
13
  s.summary = "JSON Implementation for Ruby"
14
- s.homepage = "https://ruby.github.io/json"
14
+ s.homepage = "https://github.com/ruby/json"
15
15
  s.metadata = {
16
16
  'bug_tracker_uri' => 'https://github.com/ruby/json/issues',
17
17
  'changelog_uri' => 'https://github.com/ruby/json/blob/master/CHANGES.md',
18
- 'documentation_uri' => 'https://ruby.github.io/json/doc/index.html',
18
+ 'documentation_uri' => 'https://docs.ruby-lang.org/en/master/JSON.html',
19
19
  'homepage_uri' => s.homepage,
20
20
  'source_code_uri' => 'https://github.com/ruby/json',
21
- 'wiki_uri' => 'https://github.com/ruby/json/wiki'
22
21
  }
23
22
 
24
23
  s.required_ruby_version = Gem::Requirement.new(">= 2.7")
@@ -45,15 +44,14 @@ spec = Gem::Specification.new do |s|
45
44
  "LEGAL",
46
45
  "README.md",
47
46
  "json.gemspec",
48
- *Dir["lib/**/*.rb"],
49
- ]
47
+ ] + Dir.glob("lib/**/*.rb", base: File.expand_path("..", __FILE__))
50
48
 
51
49
  if java_ext
52
50
  s.platform = 'java'
53
51
  s.files += Dir["lib/json/ext/**/*.jar"]
54
52
  else
55
53
  s.extensions = Dir["ext/json/**/extconf.rb"]
56
- s.files += Dir["ext/json/**/*.{c,h,rl}"]
54
+ s.files += Dir["ext/json/**/*.{c,h,rb}"]
57
55
  end
58
56
  end
59
57
 
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Fumiaki MATSUSHIMA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,88 @@
1
+ # LanguageServer::Protocol
2
+
3
+ A Language Server Protocol SDK for Ruby.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/language_server-protocol.svg)](https://badge.fury.io/rb/language_server-protocol)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'language_server-protocol'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install language_server-protocol
22
+
23
+ ## Usage
24
+
25
+ Currently, this gem supports only stdio as transport layer out of box.
26
+
27
+ ```ruby
28
+ require "language_server-protocol"
29
+
30
+ LSP = LanguageServer::Protocol
31
+ writer = LSP::Transport::Stdio::Writer.new
32
+ reader = LSP::Transport::Stdio::Reader.new
33
+
34
+ subscribers = {
35
+ initialize: -> {
36
+ LSP::Interface::InitializeResult.new(
37
+ capabilities: LSP::Interface::ServerCapabilities.new(
38
+ text_document_sync: LSP::Interface::TextDocumentSyncOptions.new(
39
+ change: LSP::Constant::TextDocumentSyncKind::FULL
40
+ ),
41
+ completion_provider: LSP::Interface::CompletionOptions.new(
42
+ resolve_provider: true,
43
+ trigger_characters: %w(.)
44
+ ),
45
+ definition_provider: true
46
+ )
47
+ )
48
+ }
49
+ }
50
+
51
+ reader.read do |request|
52
+ result = subscribers[request[:method].to_sym].call
53
+ writer.write(id: request[:id], result: result)
54
+ exit
55
+ end
56
+ ```
57
+
58
+ You can use any IO object as transport layer:
59
+
60
+ ```ruby
61
+ io = StringIO.new
62
+ writer = LSP::Transport::Io::Writer.new(io)
63
+ reader = LSP::Transport::Io::Reader.new(io)
64
+ ```
65
+
66
+ ## Versioning
67
+
68
+ language_server-protocol gem does NOT use semantic versioning.
69
+ This gem versions are structured as `x.y.z.t`.
70
+ `x.y.z` indicates the [Language server protocol](https://github.com/Microsoft/language-server-protocol/) version and `t` is a monotonically increasing number.
71
+
72
+ ## Development
73
+
74
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
75
+
76
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
77
+
78
+ ## Contributing
79
+
80
+ Bug reports and pull requests are welcome on GitHub at https://github.com/mtsmfm/language_server-protocol-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
81
+
82
+ ## License
83
+
84
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
85
+
86
+ ## Code of Conduct
87
+
88
+ Everyone interacting in the LanguageServer::Protocol project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/mtsmfm/language_server-protocol-ruby/blob/main/CODE_OF_CONDUCT.md).
@@ -0,0 +1,15 @@
1
+ ## [Unreleased]
2
+
3
+ ## [1.1.0]
4
+
5
+ - Add `LintRoller::Support` module of classes designed to make it a little
6
+ easier to author plugins. `MergesUpstreamMetadata#merge` will allow a minimal
7
+ YAML config (say, `standard-sorbet`'s, which only contains `Enabled` values for
8
+ each rule) to merge in any other defaults from a source YAML (e.g.
9
+ `rubocop-sorbet`'s which includes `Description`, `VersionAdded`, and so on).
10
+ This way that metadata is neither absent at runtime nor duplicated in a standard
11
+ plugin that mirrors a rubocop extension
12
+
13
+ ## [1.0.0]
14
+
15
+ - Initial release
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 Test Double, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,173 @@
1
+ # lint_roller - A plugin specification for linters
2
+
3
+ `lint_roller` is an itty-bitty plugin API for code analysis tools like linters
4
+ and formatters. It provides plugins for those tools to load extensions and
5
+ specify custom rulesets.
6
+
7
+ (As of this release, only [Standard
8
+ Ruby](https://github.com/standardrb/standard) supports `lint_roller` plugins,
9
+ but we think [RuboCop](https://github.com/rubocop/rubocop) could add support and
10
+ most plugins would be compatible with both `rubocop` and `standardrb`.
11
+ Additionally, there's nothing that would prevent other tools like
12
+ [rufo](https://github.com/ruby-formatter/rufo) from adopting it.)
13
+
14
+ ## How to make a plugin
15
+
16
+ If you want to make a plugin, the first thing you should do is extend
17
+ [LintRoller::Plugin](/lib/lint_roller/plugin.rb) with a custom class. Let's take
18
+ this example plugin for banana-related static analysis:
19
+
20
+ ```ruby
21
+ module BananaRoller
22
+ class Plugin < LintRoller::Plugin
23
+ # `config' is a Hash of options passed to the plugin by the user
24
+ def initialize(config = {})
25
+ @alternative = config["alternative"] ||= "chocolate"
26
+ end
27
+
28
+ def about
29
+ LintRoller::About.new(
30
+ name: "banana_roller",
31
+ version: "1.0", # or, in a gem, probably BananaRoller::VERSION
32
+ homepage: "https://github.com/example/banana_roller",
33
+ description: "Configuration of banana-related code"
34
+ )
35
+ end
36
+
37
+ # `context' is an instance of LintRoller::Context provided by the runner
38
+ def supported?(context)
39
+ context.engine == :rubocop
40
+ end
41
+
42
+ # `context' is an instance of LintRoller::Context provided by the runner
43
+ def rules(context)
44
+ LintRoller::Rules.new(
45
+ type: :path,
46
+ config_format: :rubocop,
47
+ value: Pathname.new(__dir__).join("../../config/default.yml")
48
+ )
49
+ end
50
+ end
51
+ end
52
+ ```
53
+
54
+ And that's pretty much it. Just a declarative way to identify your plugin,
55
+ detect whether it supports the given
56
+ [LintRoller::Context](/lib/lint_roller_context.rb) (e.g. the current `runner`
57
+ and `engine` and their respective `_version`s), for which the plugin will
58
+ ultimately its configuration as a [LintRoller::Rules](/lib/lint_roller/rules.rb)
59
+ object.
60
+
61
+ ## Packaging a plugin in a gem
62
+
63
+ In order for a formatter to use your plugin, it needs to know what path to
64
+ require as well as the name of the plugin class to instantiate and invoke.
65
+
66
+ To make this work seamlessly for your users without additional configuration of
67
+ their own, all you need to do is specify a metadata attribute called
68
+ `default_lint_roller_plugin` in your gemspec.
69
+
70
+ Taking [standard-custom](https://github.com/standardrb/standard-custom) as an
71
+ example, its gemspec contains:
72
+
73
+ ```ruby
74
+ Gem::Specification.new do |spec|
75
+ # …
76
+ spec.metadata["default_lint_roller_plugin"] = "Standard::Custom::Plugin"
77
+ # …
78
+ end
79
+ ```
80
+
81
+ Because gem specs are loaded by RubyGems and Bundler very early, remember to
82
+ specify the plugin as a string representation of the constant, as load order
83
+ usually matters, and most tools will need to be loaded before any custom
84
+ extensions. Hence, `"Standard::Custom::Plugin"` instead of
85
+ `Standard::Custom::Plugin`.
86
+
87
+ ## Using your plugin
88
+
89
+ Once you've made your plugin, here's how it's configured from a Standard Ruby
90
+ `.standard.yml` file.
91
+
92
+ ### If your plugin is packaged as a gem
93
+
94
+ Packaging your plugin in a gem is the golden path, both because distributing
95
+ code via [RubyGems.org](https://rubygems.org) is very neat, but also because it
96
+ makes the least work for your users.
97
+
98
+ If your gem name is `banana_roller` and you've set
99
+ `spec.metadata["default_lint_roller_plugin"]` to `"BananaRoller::Plugin"`, then
100
+ your users could just add this to their `.standard.yml` file:
101
+
102
+ ```yaml
103
+ plugins:
104
+ - banana_roller
105
+ ```
106
+
107
+ And that's it! During initialization, `standardrb` will `require
108
+ "banana_roller"` and know to call `BananaRoller::Plugin.new(config)` to
109
+ instantiate it.
110
+
111
+ ### If your plugin ISN'T in a gem
112
+
113
+ If you're developing a plugin for internal use or in conjunction with a single
114
+ project, you may want it to live in the same repo as opposed to packaging it in
115
+ a gem.
116
+
117
+ To do this, then—in lieu of a gem name—provide the path you want to be required
118
+ as its name, and (since there is no `spec.metadata` to learn of your plugin's
119
+ class name), specify it as an option on the plugin:
120
+
121
+ ```yaml
122
+ plugins:
123
+ - lib/banana_roller/plugin:
124
+ plugin_class_name: BananaRoller::Plugin
125
+ ```
126
+
127
+ (Be careful with the indentation here! Any configuration under a plugin must be
128
+ indented in order for it to be parsed as a hash under the
129
+ `"lib/banana_roller/plugin"` key.)
130
+
131
+ Additionally, if you want the plugin's name to make more sense, you can give
132
+ it whatever name you like in the configuration and specify the `require_path`
133
+ explicitly:
134
+
135
+ ```yaml
136
+ plugins:
137
+ - banana_roller:
138
+ require_path: lib/banana_roller/plugin
139
+ plugin_class_name: BananaRoller::Plugin
140
+ ```
141
+
142
+ ### Passing user configuration to the plugin
143
+
144
+ When a `LintRoller::Plugin` is instantiated, users can pass a configuration hash
145
+ that tells your plugin how to behave.
146
+
147
+ To illustrate how this works in Standard Ruby, anything passed as a hash beneath
148
+ a plugin will be passed to the class's `initialize` method:
149
+
150
+ ```yaml
151
+ plugins:
152
+ - apple_roller
153
+ - banana_roller:
154
+ require_path: lib/banana_roller/plugin
155
+ plugin_class_name: BananaRoller::Plugin
156
+ alternative: "apples"
157
+ - orange_roller:
158
+ rind: false
159
+ ```
160
+
161
+ In the above case, `apple_roller`'s plugin class will be instantiated with
162
+ `new({})`, `banana_roller` will get all 3 of those parameters passed
163
+ `BananaRoller::Plugin.new({require_path…})`, and `orange_roller`'s class will be
164
+ called with `new({rind: false})`.
165
+
166
+ ## Code of Conduct
167
+
168
+ This project follows Test Double's [code of
169
+ conduct](https://testdouble.com/code-of-conduct) for all community interactions,
170
+ including (but not limited to) one-on-one communications, public posts/comments,
171
+ code reviews, pull requests, and GitHub issues. If violations occur, Test Double
172
+ will take any action they deem appropriate for the infraction, up to and
173
+ including blocking a user from the organization's repositories.
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.25.1 / 2026-03-17
4
+
5
+ * Ensure `Loofah::HTML5::Scrub.allowed_uri?` recognizes unescaped whitespace entities and rejects schemas containing them. See [GHSA-46fp-8f5p-pf2m](https://github.com/flavorjones/loofah/security/advisories/GHSA-46fp-8f5p-pf2m). #302 @flavorjones
6
+
7
+ ## 2.25.0 / 2025-12-15
8
+
9
+ * Extract `Loofah::HTML5::Scrub.allowed_uri?` which operates on a string. Previously this logic was coupled to the parsed tree in `.scrub_uri_attribute`. #300 @flavorjones
10
+ * Tightened up how entities and control characters are handled when detecting allowed URIs. #301 @flavorjones
11
+
12
+
13
+ ## 2.24.1 / 2025-05-12
14
+
15
+ ### Ruby support
16
+
17
+ * Import only what's needed from `cgi` for support for Ruby 3.5 #296 @Earlopain
18
+
19
+
3
20
  ## 2.24.0 / 2024-12-24
4
21
 
5
22
  ### Added