lexxy-variables 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +85 -60
- data/lib/lexxy_variables/configuration.rb +1 -3
- data/lib/lexxy_variables/helper.rb +4 -17
- data/lib/lexxy_variables/renderers/liquid.rb +8 -12
- data/lib/lexxy_variables/renderers/substitution.rb +6 -8
- data/lib/lexxy_variables/{pipeline.rb → resolver.rb} +29 -23
- data/lib/lexxy_variables/version.rb +1 -1
- data/lib/lexxy_variables/with_variables.rb +31 -0
- data/lib/lexxy_variables.rb +4 -4
- data/vendor/bundle/ruby/3.4.0/cache/concurrent-ruby-1.3.8.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/erb-6.0.5.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/lexxy-0.9.25.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/loofah-2.25.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/parser-3.3.12.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rails-html-sanitizer-1.7.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-6.0.5/gem_make.out +19 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{lexxy-0.9.24 → lexxy-0.9.25}/gem_make.out +2 -2
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/CHANGELOG.md +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concurrent_ruby.jar +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/constants.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/promises.rb +8 -2
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/Gemfile +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/NEWS.md +17 -1
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb.rb +11 -3
- data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/javascript/lexxy.js +66 -9
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.map +1 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/lib/lexxy/version.rb +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/CHANGELOG.md +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/safelist.rb +6 -2
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/scrub.rb +86 -13
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/CHANGELOG.md +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/sanitizer/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/scrubbers.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/specifications/{concurrent-ruby-1.3.7.gemspec → concurrent-ruby-1.3.8.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{erb-6.0.4.gemspec → erb-6.0.5.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{lexxy-0.9.24.gemspec → lexxy-0.9.25.gemspec} +2 -2
- data/vendor/bundle/ruby/3.4.0/specifications/{loofah-2.25.1.gemspec → loofah-2.25.2.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{parser-3.3.11.1.gemspec → parser-3.3.12.0.gemspec} +4 -4
- data/vendor/bundle/ruby/3.4.0/specifications/{rails-html-sanitizer-1.7.0.gemspec → rails-html-sanitizer-1.7.1.gemspec} +5 -5
- metadata +325 -327
- data/vendor/bundle/ruby/3.4.0/cache/concurrent-ruby-1.3.7.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/erb-6.0.4.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/lexxy-0.9.24.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/loofah-2.25.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/parser-3.3.11.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rails-html-sanitizer-1.7.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-6.0.4/gem_make.out +0 -19
- data/vendor/bundle/ruby/3.4.0/gems/erb-6.0.4/Gemfile +0 -11
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.map +0 -1
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js +0 -11
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/lib/lexxy/version.rb +0 -3
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/rails_api_test.rb +0 -101
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/sanitizer_test.rb +0 -1284
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/scrubbers_test.rb +0 -294
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/test_helper.rb +0 -7
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/gem.build_complete +0 -0
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/mkmf.log +0 -0
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{lexxy-0.9.24 → lexxy-0.9.25}/gem.build_complete +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/Gemfile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/ConcurrentRubyService.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/agent.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/array.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/async.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atom.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/event.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/fiber_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/locals.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/semaphore.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/atomic_direct_update.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomics.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/deprecation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/logging.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/obligation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/observable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/configuration.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/dataflow.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/delay.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/errors.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/exchanger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/timer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executors.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/future.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/hash.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/immutable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/ivar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/map.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/maybe.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/mutable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/mvar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/options.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/promise.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/re_include.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/scheduled_task.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/settable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/condition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/full_memory_barrier.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/safe_initialization.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/volatile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/timer_task.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/tuple.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/tvar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/native_integer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/processor_counter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent-ruby.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/BSDL +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/COPYING +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/_doc/cgi.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/_doc/erb_executable.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/bin/console +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/bin/setup +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/erb.gemspec +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/Makefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/escape.c +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/extconf.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/compiler.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/def_method.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/util.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/libexec/erb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-content.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-editor.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-variables.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/views/action_text/attachables/_remote_video.html.erb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/config/ci.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/ext/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/action_text/attachables/remote_video.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/action_text/editor/lexxy_editor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/active_storage/blob_with_preview_url.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/action_text_tag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/attachable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/form_builder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/form_helper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/rich_text_area_tag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/tasks/actiontext/lexical_tasks.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/MIT-LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/SECURITY.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/concerns.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/elements.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/helpers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html4/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html4/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/libxml2_workarounds.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/metahelpers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/scrubber.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/scrubbers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/xml/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/xml/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-parse +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-rewrite +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/gauntlet_parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/all.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/node.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/processor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/base.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/builders/default.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/clobbering_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/color.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/context.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current_arg_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/deprecation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/dedenter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/explanation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/literal.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/stack_state.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F0.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F1.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-strings.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/macruby.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/max_numparam_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/messages.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/meta.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby18.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby19.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby20.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby21.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby22.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby23.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby24.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby25.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby26.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby27.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby30.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby31.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby32.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby33.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby34.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rubymotion.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_parse.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_rewrite.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/buffer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment/associator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/collection.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/condition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/constant.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/definition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/for.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/heredoc.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/index.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/keyword.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/method_definition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/objc_kwarg.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/operator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/rescue_body.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/send.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/ternary.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/variable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/range.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter/action.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter/action.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/static_environment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/syntax_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/tree_rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/variables_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/parser.gemspec +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/sanitizer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails-html-sanitizer.rb +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.25.2 / 2026-07-15
|
|
4
|
+
|
|
5
|
+
### Security
|
|
6
|
+
|
|
7
|
+
* Ensure `Loofah::HTML5::Scrub.allowed_uri?` recognizes numeric character references without semicolons (e.g. `javascript:alert(1)`), which browsers decode and execute, and rejects schemes split by them. See [GHSA-5qhf-9phg-95m2](https://github.com/flavorjones/loofah/security/advisories/GHSA-5qhf-9phg-95m2). @flavorjones
|
|
8
|
+
* Ensure `Loofah::HTML5::Scrub.allowed_uri?` recognizes the named character references `	` and `
`, which `CGI.unescapeHTML` does not decode and browsers strip from URIs, and rejects schemes split by them (e.g. `java	script:alert(1)`). See [GHSA-8whx-365g-h9vv](https://github.com/flavorjones/loofah/security/advisories/GHSA-8whx-365g-h9vv). @flavorjones
|
|
9
|
+
* Ensure that both `href` and `xlink:href` attributes on SVG elements like `use` are restricted to local (same-document) references. Previously only `xlink:href` was restricted, allowing the SVG 2 `href` attribute to reference external documents. See [GHSA-9wjq-cp2p-hrgf](https://github.com/flavorjones/loofah/security/advisories/GHSA-9wjq-cp2p-hrgf). @flavorjones
|
|
10
|
+
|
|
11
|
+
### Improved
|
|
12
|
+
|
|
13
|
+
* Harden `data:` URI mediatype parsing in `Loofah::HTML5::Scrub.allowed_uri?`. The mediatype is now parsed following the [WHATWG data: URL spec](https://fetch.spec.whatwg.org/#data-urls) and [RFC 2397](https://www.rfc-editor.org/rfc/rfc2397) instead of simply being split on a colon. A `data:` URI with an omitted or malformed mediatype is now treated as `text/plain` and allowed, and one without the required comma is now rejected. #305 @flavorjones
|
|
14
|
+
* Remove `feed` from the default set of allowed protocols. The [feed URI scheme](https://en.wikipedia.org/wiki/Feed_URI_scheme) was never accepted as a standard protocol, and no major browser supports it. Removing it reduces the attack surface particularly for non-browser contexts. #304 @flavorjones
|
|
15
|
+
* Remove a vestigial `p` alternative from `Loofah::HTML5::SafeList::PROTOCOL_SEPARATOR`. This appears to be an ancient typo dating back to pre-extraction Rails circa 2007. #305 @flavorjones
|
|
16
|
+
|
|
17
|
+
|
|
3
18
|
## 2.25.1 / 2026-03-17
|
|
4
19
|
|
|
5
20
|
* 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
|
data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/safelist.rb
RENAMED
|
@@ -605,6 +605,11 @@ module Loofah
|
|
|
605
605
|
"stroke",
|
|
606
606
|
])
|
|
607
607
|
|
|
608
|
+
SVG_HREF_ATTRIBUTES = Set.new([
|
|
609
|
+
"xlink:href",
|
|
610
|
+
"href",
|
|
611
|
+
])
|
|
612
|
+
|
|
608
613
|
SVG_ALLOW_LOCAL_HREF = Set.new([
|
|
609
614
|
"altGlyph",
|
|
610
615
|
"animate",
|
|
@@ -978,7 +983,7 @@ module Loofah
|
|
|
978
983
|
"stroke-opacity",
|
|
979
984
|
])
|
|
980
985
|
|
|
981
|
-
PROTOCOL_SEPARATOR = /:|(�*58)|(&#
|
|
986
|
+
PROTOCOL_SEPARATOR = /:|(�*58)|(�*3a)|(%|%)3A/i
|
|
982
987
|
|
|
983
988
|
ACCEPTABLE_PROTOCOLS = Set.new([
|
|
984
989
|
"afs",
|
|
@@ -987,7 +992,6 @@ module Loofah
|
|
|
987
992
|
"data",
|
|
988
993
|
"ed2k",
|
|
989
994
|
"fax",
|
|
990
|
-
"feed",
|
|
991
995
|
"ftp",
|
|
992
996
|
"gopher",
|
|
993
997
|
"http",
|
data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/scrub.rb
RENAMED
|
@@ -14,7 +14,43 @@ module Loofah
|
|
|
14
14
|
CSS_WHITESPACE = " "
|
|
15
15
|
CSS_PROPERTY_STRING_WITHOUT_EMBEDDED_QUOTES = /\A(["'])?[^"']+\1\z/
|
|
16
16
|
DATA_ATTRIBUTE_NAME = /\Adata-[\w-]+\z/
|
|
17
|
-
|
|
17
|
+
|
|
18
|
+
# Decimal (`:`) or hexadecimal (`:`) form, with or without the trailing semicolon that
|
|
19
|
+
# CGI.unescapeHTML requires but browsers do not.
|
|
20
|
+
NUMERIC_CHARACTER_REFERENCE = /&#(x[0-9a-f]+|[0-9]+);?/i
|
|
21
|
+
|
|
22
|
+
# A scheme (RFC 3986) followed by a protocol separator. The separator must recognize the same
|
|
23
|
+
# encoded-colon forms as PROTOCOL_SEPARATOR, otherwise a scheme split by an encoded colon (for
|
|
24
|
+
# example "javascript:alert(1)") would not be recognized as having a scheme and would skip
|
|
25
|
+
# protocol validation.
|
|
26
|
+
URI_PROTOCOL_REGEX = /\A[a-z][a-z0-9+\-.]*#{SafeList::PROTOCOL_SEPARATOR}/
|
|
27
|
+
|
|
28
|
+
# Matches a valid MIME type "essence" (type "/" subtype, no parameters), used to
|
|
29
|
+
# decide whether a data: URI mediatype is well-formed; a non-match is not a valid
|
|
30
|
+
# MIME type, which the data: URL processor treats as text/plain. Specs:
|
|
31
|
+
#
|
|
32
|
+
# https://mimesniff.spec.whatwg.org/#valid-mime-type
|
|
33
|
+
# https://mimesniff.spec.whatwg.org/#mime-type-essence
|
|
34
|
+
# https://mimesniff.spec.whatwg.org/#http-token-code-point
|
|
35
|
+
#
|
|
36
|
+
# The character class below is the HTTP token set (tchar) from RFC 9110 section
|
|
37
|
+
# 5.6.2, https://www.rfc-editor.org/rfc/rfc9110#name-tokens :
|
|
38
|
+
#
|
|
39
|
+
# tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^"
|
|
40
|
+
# / "_" / "`" / "|" / "~" / DIGIT / ALPHA
|
|
41
|
+
#
|
|
42
|
+
# ALPHA is written a-z, not a-zA-Z, because allowed_uri? downcases the input first.
|
|
43
|
+
DATA_URI_MEDIATYPE = %r{
|
|
44
|
+
\A
|
|
45
|
+
[a-z0-9!\#$%&'*+\-.^_`|~]+ # type: 1*tchar
|
|
46
|
+
/ # "/" is not a tchar, so it is the sole delimiter
|
|
47
|
+
[a-z0-9!\#$%&'*+\-.^_`|~]+ # subtype: 1*tchar
|
|
48
|
+
\z
|
|
49
|
+
}x
|
|
50
|
+
|
|
51
|
+
# HTML5 named character references for whitespace that browsers strip from
|
|
52
|
+
# URIs. CGI.unescapeHTML does not decode these, so they are handled explicitly.
|
|
53
|
+
WHITESPACE_CHARACTER_REFERENCES = /&(Tab|NewLine);/
|
|
18
54
|
|
|
19
55
|
class << self
|
|
20
56
|
def allowed_element?(element_name)
|
|
@@ -48,7 +84,7 @@ module Loofah
|
|
|
48
84
|
end
|
|
49
85
|
|
|
50
86
|
next unless SafeList::SVG_ALLOW_LOCAL_HREF.include?(node.name) &&
|
|
51
|
-
attr_name
|
|
87
|
+
SafeList::SVG_HREF_ATTRIBUTES.include?(attr_name) &&
|
|
52
88
|
attr_node.value =~ /^\s*[^#\s].*/m
|
|
53
89
|
|
|
54
90
|
attr_node.remove
|
|
@@ -141,29 +177,52 @@ module Loofah
|
|
|
141
177
|
attr_node.value = values.join(" ")
|
|
142
178
|
end
|
|
143
179
|
|
|
144
|
-
# Returns true if the given URI string is safe, false otherwise.
|
|
145
|
-
#
|
|
146
|
-
# requiring a Nokogiri DOM node.
|
|
180
|
+
# Returns true if the given URI string is safe, false otherwise. This method can be used to
|
|
181
|
+
# validate URI attribute values without requiring a Nokogiri DOM node.
|
|
147
182
|
def allowed_uri?(uri_string)
|
|
148
|
-
#
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
183
|
+
# CGI.unescapeHTML decodes numeric references only when they carry a trailing semicolon, so
|
|
184
|
+
# also decode the semicolon-less ones, which browsers still decode and execute. Normalizing
|
|
185
|
+
# more aggressively than a browser only rejects more, which is safe. Control characters are
|
|
186
|
+
# stripped both before and after decoding, since decoding can produce them. That strip must
|
|
187
|
+
# precede WHITESPACE_CHARACTER_REFERENCES: removing a control character can reveal a named
|
|
188
|
+
# whitespace reference.
|
|
189
|
+
uri_string = decode_numeric_character_references(CGI.unescapeHTML(uri_string.gsub(CONTROL_CHARACTERS, "")))
|
|
190
|
+
uri_string.gsub!(CONTROL_CHARACTERS, "")
|
|
191
|
+
uri_string.gsub!(WHITESPACE_CHARACTER_REFERENCES, "")
|
|
192
|
+
uri_string.gsub!(":", ":")
|
|
193
|
+
uri_string.downcase!
|
|
153
194
|
if URI_PROTOCOL_REGEX.match?(uri_string)
|
|
154
195
|
protocol = uri_string.split(SafeList::PROTOCOL_SEPARATOR)[0]
|
|
155
196
|
return false unless SafeList::ALLOWED_PROTOCOLS.include?(protocol)
|
|
156
197
|
|
|
157
198
|
if protocol == "data"
|
|
158
199
|
# permit only allowed data mediatypes
|
|
159
|
-
|
|
160
|
-
mediatype, _ = mediatype.split(/[;,]/)[0..1] if mediatype
|
|
161
|
-
return false if mediatype && !SafeList::ALLOWED_URI_DATA_MEDIATYPES.include?(mediatype)
|
|
200
|
+
return false unless SafeList::ALLOWED_URI_DATA_MEDIATYPES.include?(data_uri_mediatype(uri_string))
|
|
162
201
|
end
|
|
163
202
|
end
|
|
164
203
|
true
|
|
165
204
|
end
|
|
166
205
|
|
|
206
|
+
def decode_numeric_character_references(string)
|
|
207
|
+
string.gsub(NUMERIC_CHARACTER_REFERENCE) do |reference|
|
|
208
|
+
digits = ::Regexp.last_match(1)
|
|
209
|
+
hexadecimal = digits.start_with?("x", "X")
|
|
210
|
+
digits = digits[1..-1] if hexadecimal
|
|
211
|
+
significant_digits = digits.sub(/\A0+/, "")
|
|
212
|
+
|
|
213
|
+
# The largest code point is U+10FFFF: 7 decimal or 6 hexadecimal significant digits.
|
|
214
|
+
# Anything longer is out of range; skip it without building a large integer from it.
|
|
215
|
+
next reference if significant_digits.length > (hexadecimal ? 6 : 7)
|
|
216
|
+
|
|
217
|
+
codepoint = significant_digits.to_i(hexadecimal ? 16 : 10)
|
|
218
|
+
begin
|
|
219
|
+
codepoint.chr(Encoding::UTF_8)
|
|
220
|
+
rescue RangeError
|
|
221
|
+
reference
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
167
226
|
def scrub_uri_attribute(attr_node)
|
|
168
227
|
if allowed_uri?(attr_node.value)
|
|
169
228
|
false
|
|
@@ -238,6 +297,20 @@ module Loofah
|
|
|
238
297
|
string
|
|
239
298
|
end
|
|
240
299
|
end
|
|
300
|
+
|
|
301
|
+
private
|
|
302
|
+
|
|
303
|
+
# Returns the mediatype of a data: URI per RFC 2397, or nil when the
|
|
304
|
+
# required comma is absent. allowed_uri? entity-decodes, downcases, and
|
|
305
|
+
# strips control characters before calling this. An omitted or malformed
|
|
306
|
+
# mediatype resolves to "text/plain", matching the WHATWG data: URL processor.
|
|
307
|
+
def data_uri_mediatype(uri_string)
|
|
308
|
+
metadata, comma, _data = uri_string.delete_prefix("data:").partition(",")
|
|
309
|
+
return nil if comma.empty?
|
|
310
|
+
|
|
311
|
+
mediatype = metadata.delete_suffix(";base64").split(";", 2).first.to_s.strip
|
|
312
|
+
mediatype.match?(DATA_URI_MEDIATYPE) ? mediatype : "text/plain"
|
|
313
|
+
end
|
|
241
314
|
end
|
|
242
315
|
end
|
|
243
316
|
end
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## v1.7.1 / 2026-07-15
|
|
2
|
+
|
|
3
|
+
* SVG reference elements now restrict both `href` and `xlink:href` to local references.
|
|
4
|
+
|
|
5
|
+
Previously `PermitScrubber` restricted only `xlink:href` on elements in `SVG_ALLOW_LOCAL_HREF`,
|
|
6
|
+
so a plain `href` attribute on those elements could reference an external document. Applications
|
|
7
|
+
are only affected if the allowed tags are overridden to include an SVG reference element such as
|
|
8
|
+
`use`; the default configuration is not affected.
|
|
9
|
+
|
|
10
|
+
This change addresses GHSA-cj75-f6xr-r4g7 (CVE requested). The minimum Loofah dependency is now
|
|
11
|
+
`~> 2.25, >= 2.25.2`.
|
|
12
|
+
|
|
13
|
+
*Mike Dalessio*
|
|
14
|
+
|
|
15
|
+
|
|
1
16
|
## v1.7.0 / 2026-02-24
|
|
2
17
|
|
|
3
18
|
* Add `Rails::HTML::Sanitizer.allowed_uri?` which delegates to `Loofah::HTML5::Scrub.allowed_uri?`,
|
|
@@ -172,7 +172,7 @@ module Rails
|
|
|
172
172
|
Loofah::HTML5::Scrub.scrub_attribute_that_allows_local_ref(attr_node)
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
if Loofah::HTML5::SafeList::SVG_ALLOW_LOCAL_HREF.include?(node.name) && attr_name
|
|
175
|
+
if Loofah::HTML5::SafeList::SVG_ALLOW_LOCAL_HREF.include?(node.name) && Loofah::HTML5::SafeList::SVG_HREF_ATTRIBUTES.include?(attr_name) && attr_node.value =~ /^\s*[^#\s].*/m
|
|
176
176
|
attr_node.remove
|
|
177
177
|
end
|
|
178
178
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: concurrent-ruby 1.3.
|
|
2
|
+
# stub: concurrent-ruby 1.3.8 ruby lib/concurrent-ruby
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
5
|
s.name = "concurrent-ruby".freeze
|
|
6
|
-
s.version = "1.3.
|
|
6
|
+
s.version = "1.3.8".freeze
|
|
7
7
|
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
9
9
|
s.metadata = { "changelog_uri" => "https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md", "source_code_uri" => "https://github.com/ruby-concurrency/concurrent-ruby" } if s.respond_to? :metadata=
|
|
10
10
|
s.require_paths = ["lib/concurrent-ruby".freeze]
|
|
11
11
|
s.authors = ["Jerry D'Antonio".freeze, "Petr Chalupa".freeze, "The Ruby Concurrency Team".freeze]
|
|
12
|
-
s.date = "2026-
|
|
12
|
+
s.date = "2026-07-19"
|
|
13
13
|
s.description = "Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.\nInspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency patterns.\n".freeze
|
|
14
14
|
s.email = "concurrent-ruby@googlegroups.com".freeze
|
|
15
15
|
s.extra_rdoc_files = ["CHANGELOG.md".freeze, "LICENSE.txt".freeze, "README.md".freeze]
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: erb 6.0.
|
|
2
|
+
# stub: erb 6.0.5 ruby lib
|
|
3
3
|
# stub: ext/erb/escape/extconf.rb
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = "erb".freeze
|
|
7
|
-
s.version = "6.0.
|
|
7
|
+
s.version = "6.0.5".freeze
|
|
8
8
|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
10
|
-
s.metadata = { "changelog_uri" => "https://github.com/ruby/erb/blob/v6.0.
|
|
10
|
+
s.metadata = { "changelog_uri" => "https://github.com/ruby/erb/blob/v6.0.5/NEWS.md", "homepage_uri" => "https://github.com/ruby/erb", "source_code_uri" => "https://github.com/ruby/erb" } if s.respond_to? :metadata=
|
|
11
11
|
s.require_paths = ["lib".freeze]
|
|
12
12
|
s.authors = ["Masatoshi SEKI".freeze, "Takashi Kokubun".freeze]
|
|
13
13
|
s.bindir = "libexec".freeze
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: lexxy 0.9.
|
|
2
|
+
# stub: lexxy 0.9.25 ruby lib
|
|
3
3
|
# stub: ext/Rakefile
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = "lexxy".freeze
|
|
7
|
-
s.version = "0.9.
|
|
7
|
+
s.version = "0.9.25".freeze
|
|
8
8
|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
10
10
|
s.metadata = { "changelog_uri" => "https://github.com/basecamp/lexxy", "homepage_uri" => "https://github.com/basecamp/lexxy", "source_code_uri" => "https://github.com/basecamp/lexxy" } if s.respond_to? :metadata=
|
data/vendor/bundle/ruby/3.4.0/specifications/{loofah-2.25.1.gemspec → loofah-2.25.2.gemspec}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: loofah 2.25.
|
|
2
|
+
# stub: loofah 2.25.2 ruby lib
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
5
|
s.name = "loofah".freeze
|
|
6
|
-
s.version = "2.25.
|
|
6
|
+
s.version = "2.25.2".freeze
|
|
7
7
|
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
9
9
|
s.metadata = { "bug_tracker_uri" => "https://github.com/flavorjones/loofah/issues", "changelog_uri" => "https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/loofah/", "funding_uri" => "https://github.com/sponsors/flavorjones", "homepage_uri" => "https://github.com/flavorjones/loofah", "source_code_uri" => "https://github.com/flavorjones/loofah" } if s.respond_to? :metadata=
|
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
s.homepage = "https://github.com/flavorjones/loofah".freeze
|
|
16
16
|
s.licenses = ["MIT".freeze]
|
|
17
17
|
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0".freeze)
|
|
18
|
-
s.rubygems_version = "4.0.
|
|
18
|
+
s.rubygems_version = "4.0.10".freeze
|
|
19
19
|
s.summary = "Loofah is a general library for manipulating and transforming HTML/XML documents and fragments, built on top of Nokogiri.".freeze
|
|
20
20
|
|
|
21
21
|
s.installed_by_version = "3.6.9".freeze
|
data/vendor/bundle/ruby/3.4.0/specifications/{parser-3.3.11.1.gemspec → parser-3.3.12.0.gemspec}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: parser 3.3.
|
|
2
|
+
# stub: parser 3.3.12.0 ruby lib
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
5
|
s.name = "parser".freeze
|
|
6
|
-
s.version = "3.3.
|
|
6
|
+
s.version = "3.3.12.0".freeze
|
|
7
7
|
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
9
|
-
s.metadata = { "bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.
|
|
9
|
+
s.metadata = { "bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0" } if s.respond_to? :metadata=
|
|
10
10
|
s.require_paths = ["lib".freeze]
|
|
11
11
|
s.authors = ["whitequark".freeze]
|
|
12
|
-
s.date = "2026-
|
|
12
|
+
s.date = "2026-07-16"
|
|
13
13
|
s.description = "A Ruby parser written in pure Ruby.".freeze
|
|
14
14
|
s.email = ["whitequark@whitequark.org".freeze]
|
|
15
15
|
s.executables = ["ruby-parse".freeze, "ruby-rewrite".freeze]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
# stub: rails-html-sanitizer 1.7.
|
|
2
|
+
# stub: rails-html-sanitizer 1.7.1 ruby lib
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
5
|
s.name = "rails-html-sanitizer".freeze
|
|
6
|
-
s.version = "1.7.
|
|
6
|
+
s.version = "1.7.1".freeze
|
|
7
7
|
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
9
|
-
s.metadata = { "bug_tracker_uri" => "https://github.com/rails/rails-html-sanitizer/issues", "changelog_uri" => "https://github.com/rails/rails-html-sanitizer/blob/v1.7.
|
|
9
|
+
s.metadata = { "bug_tracker_uri" => "https://github.com/rails/rails-html-sanitizer/issues", "changelog_uri" => "https://github.com/rails/rails-html-sanitizer/blob/v1.7.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/rails-html-sanitizer/1.7.1", "source_code_uri" => "https://github.com/rails/rails-html-sanitizer/tree/v1.7.1" } if s.respond_to? :metadata=
|
|
10
10
|
s.require_paths = ["lib".freeze]
|
|
11
11
|
s.authors = ["Rafael Mendon\u00E7a Fran\u00E7a".freeze, "Kasper Timm Hansen".freeze, "Mike Dalessio".freeze]
|
|
12
12
|
s.date = "1980-01-02"
|
|
@@ -15,13 +15,13 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
s.homepage = "https://github.com/rails/rails-html-sanitizer".freeze
|
|
16
16
|
s.licenses = ["MIT".freeze]
|
|
17
17
|
s.required_ruby_version = Gem::Requirement.new(">= 2.7.0".freeze)
|
|
18
|
-
s.rubygems_version = "4.0.
|
|
18
|
+
s.rubygems_version = "4.0.10".freeze
|
|
19
19
|
s.summary = "This gem is responsible to sanitize HTML fragments in Rails applications.".freeze
|
|
20
20
|
|
|
21
21
|
s.installed_by_version = "3.6.9".freeze
|
|
22
22
|
|
|
23
23
|
s.specification_version = 4
|
|
24
24
|
|
|
25
|
-
s.add_runtime_dependency(%q<loofah>.freeze, ["~> 2.25".freeze])
|
|
25
|
+
s.add_runtime_dependency(%q<loofah>.freeze, ["~> 2.25".freeze, ">= 2.25.2".freeze])
|
|
26
26
|
s.add_runtime_dependency(%q<nokogiri>.freeze, [">= 1.15.7".freeze, "!= 1.16.0".freeze, "!= 1.16.0.rc1".freeze, "!= 1.16.1".freeze, "!= 1.16.2".freeze, "!= 1.16.3".freeze, "!= 1.16.4".freeze, "!= 1.16.5".freeze, "!= 1.16.6".freeze, "!= 1.16.7".freeze])
|
|
27
27
|
end
|