# Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
# frozen_string_literal: true

module Contrast
  module CoreExtensions
    # Our top level Protect namespace in the Core Extensions section of our
    # code. These patches are those that are invoked directly from a patched
    # Class.
    #
    # @deprecated This is one of our earliest designs and is not nearly as
    #   relevant given the move to C based patching and the lessons learned
    #   therein.
    module Assess
      cs__scoped_require 'contrast/agent/patching/policy/patcher'

      cs__scoped_require 'contrast/utils/tag_util'

      # provider rules - have to come before policy
      cs__scoped_require 'contrast/agent/assess/rule/provider'

      # tagging / dataflow
      cs__scoped_require 'contrast/agent/assess/adjusted_span'
      cs__scoped_require 'contrast/agent/assess/policy/policy_node'
      cs__scoped_require 'contrast/agent/assess/policy/source_node'
      cs__scoped_require 'contrast/agent/assess/policy/source_method'
      cs__scoped_require 'contrast/agent/assess/policy/propagation_node'
      cs__scoped_require 'contrast/agent/assess/policy/propagation_method'
      cs__scoped_require 'contrast/agent/assess/policy/trigger_node'
      cs__scoped_require 'contrast/agent/assess/policy/trigger_method'
      cs__scoped_require 'contrast/agent/assess/policy/policy'
      cs__scoped_require 'contrast/agent/assess/policy/patcher'

      # classes that don't play nice w/ our standard propagation
      cs__scoped_require 'contrast/agent/assess/frozen_properties'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/assess_extension'
      # this needs to come first b/c array and others work on strings and
      # expect them to be trackable
      cs__scoped_require 'contrast/extensions/ruby_core/assess/string'

      cs__scoped_require 'contrast/extensions/ruby_core/assess/array'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/erb'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/fiber'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/hash'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/kernel'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/regexp'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/module'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/basic_object'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/tilt_template_trigger'
      cs__scoped_require 'contrast/extensions/ruby_core/assess/xpath_library_trigger'
    end
  end
end