// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once #include "Luau/LinterConfig.h" #include "Luau/ParseOptions.h" #include #include #include #include namespace Luau { using ModuleName = std::string; constexpr const char* kConfigName = ".luaurc"; struct Config { Config(); Mode mode = Mode::Nonstrict; ParseOptions parseOptions; LintOptions enabledLint; LintOptions fatalLint; bool lintErrors = false; bool typeErrors = true; std::vector globals; std::vector paths; std::unordered_map aliases; }; struct ConfigResolver { virtual ~ConfigResolver() {} virtual const Config& getConfig(const ModuleName& name) const = 0; }; struct NullConfigResolver : ConfigResolver { Config defaultConfig; virtual const Config& getConfig(const ModuleName& name) const override; }; std::optional parseModeString(Mode& mode, const std::string& modeString, bool compat = false); std::optional parseLintRuleString( LintOptions& enabledLints, LintOptions& fatalLints, const std::string& warningName, const std::string& value, bool compat = false ); bool isValidAlias(const std::string& alias); std::optional parseConfig(const std::string& contents, Config& config, bool compat = false); } // namespace Luau