From 662ef895c8037c7e547eb8fc2615f800f67e9cd2 Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 00:35:48 +0000 Subject: [PATCH 1/8] Create `SingularRequireMode` --- src/rules/bundle/require_mode.rs | 3 +- src/rules/convert_require/mod.rs | 156 +++++++++++++++--- .../convert_require/roblox_require_mode.rs | 27 ++- src/rules/require/luau_path_locator.rs | 1 + src/rules/require/luau_require_mode.rs | 50 +++--- src/rules/require/path_require_mode.rs | 80 ++++----- src/rules/rule_property.rs | 32 ++-- 7 files changed, 227 insertions(+), 122 deletions(-) diff --git a/src/rules/bundle/require_mode.rs b/src/rules/bundle/require_mode.rs index 81f13a4c..d4706e36 100644 --- a/src/rules/bundle/require_mode.rs +++ b/src/rules/bundle/require_mode.rs @@ -3,8 +3,7 @@ use std::str::FromStr; use serde::{Deserialize, Serialize}; use crate::rules::{ - require::{LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator}, - RuleProcessResult, + RequireModeLike, RuleProcessResult, require::{LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator} }; use crate::{nodes::Block, rules::Context}; diff --git a/src/rules/convert_require/mod.rs b/src/rules/convert_require/mod.rs index 3a680567..0cac3c3f 100644 --- a/src/rules/convert_require/mod.rs +++ b/src/rules/convert_require/mod.rs @@ -10,6 +10,7 @@ use crate::nodes::{Arguments, Block, FunctionCall}; use crate::process::{DefaultVisitor, IdentifierTracker, NodeProcessor, NodeVisitor}; use crate::rules::require::is_require_call; use crate::rules::{Context, RuleConfiguration, RuleConfigurationError, RuleProperties}; +use crate::DarkluaError; use instance_path::InstancePath; pub use roblox_index_style::RobloxIndexStyle; @@ -18,15 +19,31 @@ pub use roblox_require_mode::RobloxRequireMode; use super::{verify_required_properties, PathRequireMode, Rule, RuleProcessResult}; use crate::rules::require::LuauRequireMode; -use std::ffi::OsStr; use std::ops::{Deref, DerefMut}; use std::path::{Path, PathBuf}; use std::str::FromStr; +/// A representation of how require calls are handled and transformed. +pub trait RequireModeLike { + fn find_require( + &self, + call: &FunctionCall, + context: &Context, + ) -> DarkluaResult>; + fn generate_require( + &self, + path: &Path, + current_mode: &T, + context: &Context, + ) -> DarkluaResult>; + fn is_module_folder_name(&self, path: &Path) -> bool; + fn initialize(&mut self, context: &Context) -> DarkluaResult<()>; +} + /// A representation of how require calls are handled and transformed. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(deny_unknown_fields, rename_all = "snake_case", tag = "name")] -pub enum RequireMode { +pub enum SingularRequireMode { /// Handles requires using file system paths Path(PathRequireMode), /// Handles requires using Luau module paths @@ -35,29 +52,33 @@ pub enum RequireMode { Roblox(RobloxRequireMode), } -impl RequireMode { - pub(crate) fn find_require( +impl RequireModeLike for SingularRequireMode { + fn find_require( &self, call: &FunctionCall, context: &Context, ) -> DarkluaResult> { match self { - RequireMode::Path(path_mode) => path_mode.find_require(call, context), - RequireMode::Luau(luau_mode) => luau_mode.find_require(call, context), - RequireMode::Roblox(roblox_mode) => roblox_mode.find_require(call, context), + SingularRequireMode::Path(path_mode) => path_mode.find_require(call, context), + SingularRequireMode::Luau(luau_mode) => luau_mode.find_require(call, context), + SingularRequireMode::Roblox(roblox_mode) => roblox_mode.find_require(call, context), } } - fn generate_require( + fn generate_require( &self, path: &Path, - current_mode: &Self, + current_mode: &T, context: &Context, ) -> DarkluaResult> { match self { - RequireMode::Path(path_mode) => path_mode.generate_require(path, current_mode, context), - RequireMode::Luau(luau_mode) => luau_mode.generate_require(path, current_mode, context), - RequireMode::Roblox(roblox_mode) => { + SingularRequireMode::Path(path_mode) => { + path_mode.generate_require(path, current_mode, context) + } + SingularRequireMode::Luau(luau_mode) => { + luau_mode.generate_require(path, current_mode, context) + } + SingularRequireMode::Roblox(roblox_mode) => { roblox_mode.generate_require(path, current_mode, context) } } @@ -65,24 +86,22 @@ impl RequireMode { fn is_module_folder_name(&self, path: &Path) -> bool { match self { - RequireMode::Path(path_mode) => path_mode.is_module_folder_name(path), - RequireMode::Luau(luau_mode) => luau_mode.is_module_folder_name(path), - RequireMode::Roblox(_roblox_mode) => { - matches!(path.file_stem().and_then(OsStr::to_str), Some("init")) - } + SingularRequireMode::Path(path_mode) => path_mode.is_module_folder_name(path), + SingularRequireMode::Luau(luau_mode) => luau_mode.is_module_folder_name(path), + SingularRequireMode::Roblox(roblox_mode) => roblox_mode.is_module_folder_name(path), } } fn initialize(&mut self, context: &Context) -> DarkluaResult<()> { match self { - RequireMode::Roblox(roblox_mode) => roblox_mode.initialize(context), - RequireMode::Path(path_mode) => path_mode.initialize(context), - RequireMode::Luau(luau_mode) => luau_mode.initialize(context), + SingularRequireMode::Roblox(roblox_mode) => roblox_mode.initialize(context), + SingularRequireMode::Path(path_mode) => path_mode.initialize(context), + SingularRequireMode::Luau(luau_mode) => luau_mode.initialize(context), } } } -impl FromStr for RequireMode { +impl FromStr for SingularRequireMode { type Err = String; fn from_str(s: &str) -> Result { @@ -95,11 +114,88 @@ impl FromStr for RequireMode { } } +/// A representation of how require calls are handled and transformed. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(deny_unknown_fields, rename_all = "snake_case", tag = "name")] +pub enum RequireMode { + Single(SingularRequireMode), + Hybrid(Vec), +} + +impl RequireModeLike for RequireMode { + fn find_require( + &self, + call: &FunctionCall, + context: &Context, + ) -> DarkluaResult> { + match self { + RequireMode::Single(singular_require_mode) => { + singular_require_mode.find_require(call, context) + } + RequireMode::Hybrid(singular_require_modes) => { + for mode in singular_require_modes { + if let Ok(Some(x)) = mode.find_require(call, context) { + return Ok(Some(x)); + } + } + + return Err(DarkluaError::custom("unable to find valid require"))?; + } + } + } + + fn generate_require( + &self, + path: &Path, + current_mode: &T, + context: &Context, + ) -> DarkluaResult> { + match self { + RequireMode::Single(singular_require_mode) => { + singular_require_mode.generate_require(path, current_mode, context) + } + RequireMode::Hybrid(singular_require_modes) => { + for mode in singular_require_modes { + if let Ok(Some(x)) = mode.generate_require(path, current_mode, context) { + return Ok(Some(x)); + } + } + + return Err(DarkluaError::custom("unable to find valid require"))?; + } + } + } + + fn is_module_folder_name(&self, path: &Path) -> bool { + match self { + RequireMode::Single(singular_require_mode) => { + singular_require_mode.is_module_folder_name(path) + } + RequireMode::Hybrid(_singular_require_modes) => false, + } + } + + fn initialize(&mut self, context: &Context) -> DarkluaResult<()> { + match self { + RequireMode::Single(singular_require_mode) => singular_require_mode.initialize(context), + RequireMode::Hybrid(singular_require_modes) => { + for mode in singular_require_modes { + if let Ok(x) = mode.initialize(context) { + return Ok(x); + } + } + + return Err(DarkluaError::custom("unable to find valid require"))?; + } + } + } +} + #[derive(Debug, Clone)] struct RequireConverter<'a> { identifier_tracker: IdentifierTracker, current: RequireMode, - target: RequireMode, + target: SingularRequireMode, context: &'a Context<'a, 'a, 'a>, } @@ -118,7 +214,7 @@ impl DerefMut for RequireConverter<'_> { } impl<'a> RequireConverter<'a> { - fn new(current: RequireMode, target: RequireMode, context: &'a Context) -> Self { + fn new(current: RequireMode, target: SingularRequireMode, context: &'a Context) -> Self { Self { identifier_tracker: IdentifierTracker::new(), current, @@ -161,14 +257,14 @@ pub const CONVERT_REQUIRE_RULE_NAME: &str = "convert_require"; #[derive(Debug, PartialEq, Eq)] pub struct ConvertRequire { current: RequireMode, - target: RequireMode, + target: SingularRequireMode, } impl Default for ConvertRequire { fn default() -> Self { Self { - current: RequireMode::Path(Default::default()), - target: RequireMode::Roblox(Default::default()), + current: RequireMode::Single(SingularRequireMode::Path(Default::default())), + target: SingularRequireMode::Roblox(Default::default()), } } } @@ -201,7 +297,13 @@ impl RuleConfiguration for ConvertRequire { self.current = value.expect_require_mode(&key)?; } "target" => { - self.target = value.expect_require_mode(&key)?; + self.target = match value.expect_require_mode(&key)? { + RequireMode::Single(singular_require_mode) => singular_require_mode, + RequireMode::Hybrid(_) => Err(RuleConfigurationError::UnexpectedValue { + property: String::from("target"), + message: String::from("target can only be a singular require mode"), + })?, + }; } _ => return Err(RuleConfigurationError::UnexpectedProperty(key)), } diff --git a/src/rules/convert_require/roblox_require_mode.rs b/src/rules/convert_require/roblox_require_mode.rs index d38ffbf2..36145056 100644 --- a/src/rules/convert_require/roblox_require_mode.rs +++ b/src/rules/convert_require/roblox_require_mode.rs @@ -1,21 +1,16 @@ use serde::{Deserialize, Serialize}; use crate::{ - frontend::DarkluaResult, - nodes::{Arguments, FunctionCall, Prefix}, - rules::{ - convert_require::rojo_sourcemap::RojoSourcemap, - require::path_utils::{get_relative_parent_path, get_relative_path}, - Context, - }, - utils, DarkluaError, + DarkluaError, frontend::DarkluaResult, nodes::{Arguments, FunctionCall, Prefix}, rules::{ + Context, RequireModeLike, convert_require::rojo_sourcemap::RojoSourcemap, require::path_utils::{get_relative_parent_path, get_relative_path} + }, utils }; use std::path::{Component, Path, PathBuf}; use super::{ instance_path::{get_parent_instance, script_identifier}, - RequireMode, RobloxIndexStyle, + RobloxIndexStyle, }; #[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)] @@ -28,8 +23,8 @@ pub struct RobloxRequireMode { cached_sourcemap: Option, } -impl RobloxRequireMode { - pub(crate) fn initialize(&mut self, context: &Context) -> DarkluaResult<()> { +impl RequireModeLike for RobloxRequireMode { + fn initialize(&mut self, context: &Context) -> DarkluaResult<()> { if let Some(ref rojo_sourcemap_path) = self .rojo_sourcemap .as_ref() @@ -58,7 +53,11 @@ impl RobloxRequireMode { Ok(()) } - pub(crate) fn find_require( + fn is_module_folder_name(&self, path: &Path) -> bool { + matches!(path.file_stem().and_then(std::ffi::OsStr::to_str), Some("init")) + } + + fn find_require( &self, _call: &FunctionCall, _context: &Context, @@ -67,10 +66,10 @@ impl RobloxRequireMode { .context("Roblox require mode cannot be used as the current require mode")) } - pub(crate) fn generate_require( + fn generate_require( &self, require_path: &Path, - current: &RequireMode, + current: &T, context: &Context, ) -> DarkluaResult> { let source_path = utils::normalize_path(context.current_path()); diff --git a/src/rules/require/luau_path_locator.rs b/src/rules/require/luau_path_locator.rs index 3528711a..99789f9c 100644 --- a/src/rules/require/luau_path_locator.rs +++ b/src/rules/require/luau_path_locator.rs @@ -1,6 +1,7 @@ use std::path::{Path, PathBuf}; use super::{path_iterator, LuauRequireMode}; +use crate::rules::RequireModeLike; use crate::rules::require::path_utils::{get_relative_parent_path, is_require_relative}; use crate::{utils, DarkluaError, Resources}; diff --git a/src/rules/require/luau_require_mode.rs b/src/rules/require/luau_require_mode.rs index 58400536..c6638468 100644 --- a/src/rules/require/luau_require_mode.rs +++ b/src/rules/require/luau_require_mode.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use crate::frontend::DarkluaResult; use crate::nodes::{Arguments, FunctionCall, StringExpression}; use crate::rules::require::{match_path_require_call, path_utils, LuauPathLocator, PathLocator}; -use crate::rules::{Context, RequireMode}; +use crate::rules::{Context, RequireModeLike}; use crate::utils; use crate::DarkluaError; @@ -38,20 +38,8 @@ impl Default for LuauRequireMode { } } -impl LuauRequireMode { - /// Set if the require mode should use `.luaurc` configuration to resolve aliases. - pub fn with_configuration(mut self, use_luau_configuration: bool) -> Self { - self.use_luau_configuration = use_luau_configuration; - self - } - - /// Add a new Luau alias to the require mode. - pub fn with_alias(mut self, name: impl Into, path: impl Into) -> Self { - self.aliases.insert(name.into(), path.into()); - self - } - - pub(crate) fn initialize(&mut self, context: &Context) -> Result<(), DarkluaError> { +impl RequireModeLike for LuauRequireMode { + fn initialize(&mut self, context: &Context) -> Result<(), DarkluaError> { if !self.use_luau_configuration { self.luau_rc_aliases.take(); return Ok(()); @@ -69,18 +57,13 @@ impl LuauRequireMode { Ok(()) } - #[inline] - pub(crate) fn module_folder_name(&self) -> &str { - "init" - } - - pub(crate) fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> bool { let expect_value = Some(self.module_folder_name()); path.file_name().and_then(OsStr::to_str) == expect_value || path.file_stem().and_then(OsStr::to_str) == expect_value } - pub(crate) fn find_require( + fn find_require( &self, call: &FunctionCall, context: &Context, @@ -98,10 +81,10 @@ impl LuauRequireMode { } } - pub(crate) fn generate_require( + fn generate_require( &self, require_path: &Path, - _current: &RequireMode, + _current: &T, context: &Context<'_, '_, '_>, ) -> Result, crate::DarkluaError> { let source_path = utils::normalize_path(context.current_path()); @@ -225,6 +208,25 @@ impl LuauRequireMode { path_utils::write_require_path(&generated_path).map(generate_require_arguments) } +} + +impl LuauRequireMode { + /// Set if the require mode should use `.luaurc` configuration to resolve aliases. + pub fn with_configuration(mut self, use_luau_configuration: bool) -> Self { + self.use_luau_configuration = use_luau_configuration; + self + } + + /// Add a new Luau alias to the require mode. + pub fn with_alias(mut self, name: impl Into, path: impl Into) -> Self { + self.aliases.insert(name.into(), path.into()); + self + } + + #[inline] + pub(crate) fn module_folder_name(&self) -> &str { + "init" + } pub(crate) fn get_source(&self, name: &str, rel: &Path) -> Option { log::trace!( diff --git a/src/rules/require/path_require_mode.rs b/src/rules/require/path_require_mode.rs index 093a7917..7591fb18 100644 --- a/src/rules/require/path_require_mode.rs +++ b/src/rules/require/path_require_mode.rs @@ -4,7 +4,7 @@ use crate::frontend::DarkluaResult; use crate::nodes::{Arguments, FunctionCall, StringExpression}; use crate::rules::require::path_utils::get_relative_path; use crate::rules::require::{match_path_require_call, path_utils, PathLocator}; -use crate::rules::{Context, RequireMode}; +use crate::rules::{Context, RequireModeLike}; use crate::utils; use crate::DarkluaError; @@ -57,18 +57,8 @@ fn is_default_module_folder_name(value: &String) -> bool { value == DEFAULT_MODULE_FOLDER_NAME } -impl PathRequireMode { - /// Creates a new path require mode with the specified module folder name. - pub fn new(module_folder_name: impl Into) -> Self { - Self { - module_folder_name: module_folder_name.into(), - sources: Default::default(), - use_luau_configuration: default_use_luau_configuration(), - luau_rc_aliases: Default::default(), - } - } - - pub(crate) fn initialize(&mut self, context: &Context) -> Result<(), DarkluaError> { +impl RequireModeLike for PathRequireMode { + fn initialize(&mut self, context: &Context) -> Result<(), DarkluaError> { if !self.use_luau_configuration { self.luau_rc_aliases.take(); return Ok(()); @@ -85,29 +75,7 @@ impl PathRequireMode { Ok(()) } - pub(crate) fn module_folder_name(&self) -> &str { - &self.module_folder_name - } - - pub(crate) fn get_source(&self, name: &str, rel: &Path) -> Option { - log::trace!( - "lookup alias `{}` from `{}` (path mode)", - name, - rel.display() - ); - - self.sources - .get(name) - .map(|alias| rel.join(alias)) - .or_else(|| { - self.luau_rc_aliases - .as_ref() - .and_then(|aliases| aliases.get(name)) - .map(ToOwned::to_owned) - }) - } - - pub(crate) fn find_require( + fn find_require( &self, call: &FunctionCall, context: &Context, @@ -123,16 +91,16 @@ impl PathRequireMode { } } - pub(crate) fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> bool { let expect_value = Some(self.module_folder_name.as_str()); path.file_name().and_then(OsStr::to_str) == expect_value || path.file_stem().and_then(OsStr::to_str) == expect_value } - pub(crate) fn generate_require( + fn generate_require( &self, require_path: &Path, - _current: &RequireMode, + _current: &T, context: &Context<'_, '_, '_>, ) -> Result, crate::DarkluaError> { let source_path = utils::normalize_path(context.current_path()); @@ -214,6 +182,40 @@ impl PathRequireMode { } } +impl PathRequireMode { + /// Creates a new path require mode with the specified module folder name. + pub fn new(module_folder_name: impl Into) -> Self { + Self { + module_folder_name: module_folder_name.into(), + sources: Default::default(), + use_luau_configuration: default_use_luau_configuration(), + luau_rc_aliases: Default::default(), + } + } + + pub(crate) fn module_folder_name(&self) -> &str { + &self.module_folder_name + } + + pub(crate) fn get_source(&self, name: &str, rel: &Path) -> Option { + log::trace!( + "lookup alias `{}` from `{}` (path mode)", + name, + rel.display() + ); + + self.sources + .get(name) + .map(|alias| rel.join(alias)) + .or_else(|| { + self.luau_rc_aliases + .as_ref() + .and_then(|aliases| aliases.get(name)) + .map(ToOwned::to_owned) + }) + } +} + fn generate_require_arguments(value: String) -> Option { Some(Arguments::default().with_argument(StringExpression::from_value(value))) } diff --git a/src/rules/rule_property.rs b/src/rules/rule_property.rs index 412c7344..a2f84f35 100644 --- a/src/rules/rule_property.rs +++ b/src/rules/rule_property.rs @@ -1,11 +1,11 @@ -use std::collections::HashMap; +use std::{collections::HashMap, str::FromStr}; use regex::Regex; use serde::{Deserialize, Serialize}; use crate::{ nodes::{DecimalNumber, Expression, StringExpression, TableEntry, TableExpression}, - process::to_expression, + process::to_expression, rules::SingularRequireMode, }; use super::{ @@ -84,8 +84,8 @@ impl RulePropertyValue { match self { Self::RequireMode(require_mode) => Ok(require_mode), Self::String(value) => { - value - .parse() + SingularRequireMode::from_str(&value) + .map(RequireMode::Single) .map_err(|err: String| RuleConfigurationError::UnexpectedValue { property: key.to_owned(), message: err, @@ -156,27 +156,27 @@ impl From for RulePropertyValue { } } -impl From<&RequireMode> for RulePropertyValue { - fn from(value: &RequireMode) -> Self { +impl From<&SingularRequireMode> for RulePropertyValue { + fn from(value: &SingularRequireMode) -> Self { match value { - RequireMode::Path(mode) => { + SingularRequireMode::Path(mode) => { if mode == &PathRequireMode::default() { return Self::from("path"); } } - RequireMode::Luau(mode) => { + SingularRequireMode::Luau(mode) => { if mode == &LuauRequireMode::default() { return Self::from("luau"); } } - RequireMode::Roblox(mode) => { + SingularRequireMode::Roblox(mode) => { if mode == &RobloxRequireMode::default() { return Self::from("roblox"); } } } - Self::RequireMode(value.clone()) + Self::RequireMode(RequireMode::Single(value.clone())) } } @@ -387,7 +387,7 @@ mod test { fn parse_require_mode_path_object() { parse_rule_property( r#"{"name": "path"}"#, - RulePropertyValue::RequireMode(RequireMode::Path(PathRequireMode::default())), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path(PathRequireMode::default()))), ); } @@ -395,7 +395,7 @@ mod test { fn parse_require_mode_path_object_with_options() { parse_rule_property( r#"{"name": "path", "module_folder_name": "index"}"#, - RulePropertyValue::RequireMode(RequireMode::Path(PathRequireMode::new("index"))), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path(PathRequireMode::new("index")))), ); } @@ -403,7 +403,7 @@ mod test { fn parse_require_mode_roblox_object() { parse_rule_property( r#"{"name": "roblox"}"#, - RulePropertyValue::RequireMode(RequireMode::Roblox(RobloxRequireMode::default())), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Roblox(RobloxRequireMode::default()))), ); } @@ -411,12 +411,12 @@ mod test { fn parse_require_mode_roblox_object_with_options() { parse_rule_property( r#"{"name": "roblox", "rojo_sourcemap": "./sourcemap.json"}"#, - RulePropertyValue::RequireMode(RequireMode::Roblox( + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Roblox( serde_json::from_str::( r#"{"rojo_sourcemap": "./sourcemap.json"}"#, ) .unwrap(), - )), + ))), ); } @@ -424,7 +424,7 @@ mod test { fn parse_require_mode_luau_object() { parse_rule_property( r#"{ "name": "luau" }"#, - RulePropertyValue::RequireMode(RequireMode::Luau(LuauRequireMode::default())), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Luau(LuauRequireMode::default()))), ); } From f070125ee2734066de829b5fe93d9cc9266995a4 Mon Sep 17 00:00:00 2001 From: Stefan Date: Sun, 28 Dec 2025 00:37:01 +0000 Subject: [PATCH 2/8] merge to upstream (#7) * Fix `inject_global_value` rule with default value (#324) * Release 0.17.3 (#325) * Add support for property modifiers in table types (#332) This PR adds support for `read` and `write` access modifiers in table types. Example: ``` export type Object = { read name: string, } ``` --------- Co-authored-by: jeparlefrancais <35781636+jeparlefrancais@users.noreply.github.com> --- CHANGELOG.md | 8 + Cargo.lock | 930 +++++--------- Cargo.toml | 29 +- README.md | 2 +- site/content/docs/bundle/index.md | 4 +- site/content/docs/installation/index.md | 2 +- .../javascript-tests/package-lock.json | 1129 +++++++++++------ site/package-lock.json | 61 +- site/package.json | 10 +- src/ast_converter.rs | 31 +- src/frontend/configuration.rs | 17 +- src/frontend/work_item.rs | 9 +- src/generator/dense.rs | 7 + src/generator/mod.rs | 15 + src/generator/readable.rs | 8 + ...rguments__dense_arguments_empty_tuple.snap | 1 - ..._dense_arguments_tuple_with_one_value.snap | 1 - ...dense_arguments_tuple_with_two_values.snap | 1 - ...e_assign_two_variables_with_one_value.snap | 1 - ..._assign_two_variables_with_two_values.snap | 1 - ..._dense_assign_variable_with_one_value.snap | 1 - ...__binary__dense_binary_true_and_false.snap | 1 - ...binary__dense_binary_true_equal_false.snap | 1 - ...assign_statement_increment_var_by_one.snap | 1 - ...o_statement__dense_do_statement_empty.snap | 1 - ...atement__dense_do_statement_nested_do.snap | 1 - ...ression__dense_expression_false_value.snap | 1 - ...xpression__dense_expression_nil_value.snap | 1 - ...__dense_expression_true_in_parenthese.snap | 1 - ...pression__dense_expression_true_value.snap | 1 - ...__dense_expression_variable_arguments.snap | 1 - ..._field__dense_field_identifier_prefix.snap | 1 - ...ction_expr__dense_function_expr_empty.snap | 1 - ...r__dense_function_expr_empty_variadic.snap | 1 - ...xpr_empty_variadic_with_one_parameter.snap | 1 - ...xpr_empty_variadic_with_two_parameter.snap | 1 - ...unction_expr_empty_with_two_parameter.snap | 1 - ...ement__dense_function_statement_empty.snap | 1 - ...e_function_statement_empty_with_field.snap | 1 - ..._function_statement_empty_with_method.snap | 1 - ..._generic_for__dense_generic_for_empty.snap | 1 - ...f_statement__dense_if_statement_empty.snap | 1 - ...se_if_statement_empty_with_empty_else.snap | 1 - ...ment_empty_with_empty_multiple_branch.snap | 1 - ...entifier_prefix_with_identifier_value.snap | 1 - ...ots__last__dense_last_break_statement.snap | 1 - ...__last__dense_last_continue_statement.snap | 1 - ...ast__dense_last_return_one_expression.snap | 1 - ...__last__dense_last_return_parentheses.snap | 2 - ...st__dense_last_return_two_expressions.snap | 1 - ...ast__dense_last_return_without_values.snap | 1 - ...e_local_assign_foo_and_bar_unassigned.snap | 1 - ...gn__dense_local_assign_foo_unassigned.snap | 1 - ...ense_local_assign_var_assign_to_false.snap | 1 - ..._function__dense_local_function_empty.snap | 1 - ...__dense_local_function_empty_variadic.snap | 1 - ...ion_empty_variadic_with_one_parameter.snap | 1 - ...cal_function_empty_with_one_parameter.snap | 1 - ...al_function_empty_with_two_parameters.snap | 1 - ...__number__dense_number_binary_0b10101.snap | 1 - ...ts__number__dense_number_number_0_005.snap | 1 - ...hots__number__dense_number_number_0_5.snap | 1 - ...pshots__number__dense_number_number_1.snap | 1 - ...s__number__dense_number_number_100_25.snap | 1 - ...hots__number__dense_number_number_123.snap | 1 - ...number__dense_number_number_1_2345e50.snap | 1 - ...__dense_number_number_1_2345e_minus50.snap | 1 - ...__number__dense_number_number_2000_05.snap | 1 - ...hots__number__dense_number_number_nan.snap | 1 - ...dense_number_number_negative_infinity.snap | 1 - ...dense_number_number_positive_infinity.snap | 1 - ..._number__dense_number_number_thousand.snap | 1 - ...or__dense_numeric_for_empty_with_step.snap | 1 - ..._dense_numeric_for_empty_without_step.snap | 1 - ...hots__prefix__dense_prefix_identifier.snap | 1 - ...dense_prefix_identifier_in_parenthese.snap | 1 - ...snapshots__repeat__dense_repeat_empty.snap | 1 - ...ts__string__dense_string_only_letters.snap | 1 - ...ring__dense_string_with_double_quotes.snap | 1 - ..._string_with_single_and_double_quotes.snap | 1 - ...ring__dense_string_with_single_quotes.snap | 1 - ...__snapshots__table__dense_table_empty.snap | 1 - ...e__dense_table_list_with_single_value.snap | 1 - ...ble__dense_table_list_with_two_values.snap | 1 - ...shots__table__dense_table_mixed_table.snap | 1 - ...__table__dense_table_with_field_entry.snap | 1 - ...__table__dense_table_with_index_entry.snap | 1 - ...laration_table_with_one_read_property.snap | 5 + ...aration_table_with_one_write_property.snap | 5 + ...laration_table_with_read_indexer_type.snap | 5 + ...an_inner_binary_has_higher_precedence.snap | 1 - ...napshots__unary__dense_unary_not_true.snap | 1 - ...y_two_unary_minus_breaks_between_them.snap | 1 - ..._an_inner_binary_has_lower_precedence.snap | 1 - ...tatement__dense_while_statement_empty.snap | 1 - ...ments__readable_arguments_empty_tuple.snap | 1 - ...adable_arguments_tuple_with_one_value.snap | 1 - ...dable_arguments_tuple_with_two_values.snap | 1 - ...e_assign_two_variables_with_one_value.snap | 1 - ..._assign_two_variables_with_two_values.snap | 1 - ...adable_assign_variable_with_one_value.snap | 1 - ...inary__readable_binary_true_and_false.snap | 1 - ...ary__readable_binary_true_equal_false.snap | 1 - ...k_ambiguous_function_call_from_assign.snap | 1 - ...us_function_call_from_compound_assign.snap | 1 - ...uous_function_call_from_function_call.snap | 1 - ...guous_function_call_from_local_assign.snap | 1 - ...k_ambiguous_function_call_from_repeat.snap | 1 - ...assign_statement_increment_var_by_one.snap | 1 - ...tatement__readable_do_statement_empty.snap | 1 - ...ment__readable_do_statement_nested_do.snap | 1 - ...sion__readable_expression_false_value.snap | 1 - ...ession__readable_expression_nil_value.snap | 1 - ...eadable_expression_true_in_parenthese.snap | 1 - ...ssion__readable_expression_true_value.snap | 1 - ...eadable_expression_variable_arguments.snap | 1 - ...eld__readable_field_identifier_prefix.snap | 1 - ...on_expr__readable_function_expr_empty.snap | 1 - ...readable_function_expr_empty_variadic.snap | 1 - ...xpr_empty_variadic_with_one_parameter.snap | 1 - ...xpr_empty_variadic_with_two_parameter.snap | 1 - ...unction_expr_empty_with_two_parameter.snap | 1 - ...nt__readable_function_statement_empty.snap | 1 - ...e_function_statement_empty_with_field.snap | 1 - ..._function_statement_empty_with_method.snap | 1 - ...neric_for__readable_generic_for_empty.snap | 1 - ...tatement__readable_if_statement_empty.snap | 1 - ...le_if_statement_empty_with_empty_else.snap | 1 - ...ment_empty_with_empty_multiple_branch.snap | 1 - ...entifier_prefix_with_identifier_value.snap | 1 - ...__last__readable_last_break_statement.snap | 1 - ...ast__readable_last_continue_statement.snap | 1 - ...__readable_last_return_one_expression.snap | 1 - ...ast__readable_last_return_parentheses.snap | 2 - ..._readable_last_return_two_expressions.snap | 1 - ...__readable_last_return_without_values.snap | 1 - ...e_local_assign_foo_and_bar_unassigned.snap | 1 - ..._readable_local_assign_foo_unassigned.snap | 1 - ...able_local_assign_var_assign_to_false.snap | 1 - ...nction__readable_local_function_empty.snap | 1 - ...eadable_local_function_empty_variadic.snap | 1 - ...ion_empty_variadic_with_one_parameter.snap | 1 - ...cal_function_empty_with_one_parameter.snap | 1 - ...al_function_empty_with_two_parameters.snap | 1 - ...umber__readable_number_binary_0b10101.snap | 1 - ..._number__readable_number_number_0_005.snap | 1 - ...s__number__readable_number_number_0_5.snap | 1 - ...ots__number__readable_number_number_1.snap | 1 - ...number__readable_number_number_100_25.snap | 1 - ...s__number__readable_number_number_123.snap | 1 - ...ber__readable_number_number_1_2345e50.snap | 1 - ...eadable_number_number_1_2345e_minus50.snap | 1 - ...umber__readable_number_number_2000_05.snap | 1 - ...s__number__readable_number_number_nan.snap | 1 - ...dable_number_number_negative_infinity.snap | 1 - ...dable_number_number_positive_infinity.snap | 1 - ...mber__readable_number_number_thousand.snap | 1 - ...s__prefix__readable_prefix_identifier.snap | 1 - ...dable_prefix_identifier_in_parenthese.snap | 1 - ...pshots__repeat__readable_repeat_empty.snap | 1 - ..._string__readable_string_only_letters.snap | 1 - ...g__readable_string_with_double_quotes.snap | 1 - ..._string_with_single_and_double_quotes.snap | 1 - ...g__readable_string_with_single_quotes.snap | 1 - ...napshots__table__readable_table_empty.snap | 1 - ...readable_table_list_with_single_value.snap | 1 - ...__readable_table_list_with_two_values.snap | 1 - ...ts__table__readable_table_mixed_table.snap | 1 - ...able__readable_table_with_field_entry.snap | 1 - ...able__readable_table_with_index_entry.snap | 1 - ...laration_table_with_one_read_property.snap | 5 + ...aration_table_with_one_write_property.snap | 5 + ...laration_table_with_read_indexer_type.snap | 5 + ...an_inner_binary_has_higher_precedence.snap | 1 - ...shots__unary__readable_unary_not_true.snap | 1 - ...y_two_unary_minus_breaks_between_them.snap | 1 - ..._an_inner_binary_has_lower_precedence.snap | 1 - ...ement__readable_while_statement_empty.snap | 1 - ...ts__token_based_arguments_empty_tuple.snap | 1 - ..._based_arguments_tuple_with_one_value.snap | 1 - ...based_arguments_tuple_with_two_values.snap | 1 - ...d_assign_two_variables_with_one_value.snap | 1 - ..._assign_two_variables_with_two_values.snap | 1 - ..._based_assign_variable_with_one_value.snap | 1 - ...ry__token_based_binary_true_and_false.snap | 1 - ...__token_based_binary_true_equal_false.snap | 1 - ...assign_statement_increment_var_by_one.snap | 1 - ...ement__token_based_do_statement_empty.snap | 1 - ...t__token_based_do_statement_nested_do.snap | 1 - ...n__token_based_expression_false_value.snap | 1 - ...ion__token_based_expression_nil_value.snap | 1 - ...n_based_expression_true_in_parenthese.snap | 1 - ...on__token_based_expression_true_value.snap | 1 - ...n_based_expression_variable_arguments.snap | 1 - ...__token_based_field_identifier_prefix.snap | 1 - ...expr__token_based_function_expr_empty.snap | 1 - ...en_based_function_expr_empty_variadic.snap | 1 - ...xpr_empty_variadic_with_one_parameter.snap | 1 - ...xpr_empty_variadic_with_two_parameter.snap | 1 - ...unction_expr_empty_with_two_parameter.snap | 1 - ..._token_based_function_statement_empty.snap | 1 - ...d_function_statement_empty_with_field.snap | 1 - ..._function_statement_empty_with_method.snap | 1 - ...ic_for__token_based_generic_for_empty.snap | 1 - ...ement__token_based_if_statement_empty.snap | 1 - ...ed_if_statement_empty_with_empty_else.snap | 1 - ...ment_empty_with_empty_multiple_branch.snap | 1 - ...entifier_prefix_with_identifier_value.snap | 1 - ...ast__token_based_last_break_statement.snap | 1 - ...__token_based_last_continue_statement.snap | 1 - ...oken_based_last_return_one_expression.snap | 1 - ...__token_based_last_return_parentheses.snap | 2 - ...ken_based_last_return_two_expressions.snap | 1 - ...oken_based_last_return_without_values.snap | 3 +- ...d_local_assign_foo_and_bar_unassigned.snap | 1 - ...ken_based_local_assign_foo_unassigned.snap | 1 - ...ased_local_assign_var_assign_to_false.snap | 1 - ...ion__token_based_local_function_empty.snap | 1 - ...n_based_local_function_empty_variadic.snap | 1 - ...ion_empty_variadic_with_one_parameter.snap | 1 - ...cal_function_empty_with_one_parameter.snap | 1 - ...al_function_empty_with_two_parameters.snap | 1 - ...er__token_based_number_binary_0b10101.snap | 1 - ...mber__token_based_number_number_0_005.snap | 1 - ...number__token_based_number_number_0_5.snap | 1 - ...__number__token_based_number_number_1.snap | 1 - ...ber__token_based_number_number_100_25.snap | 1 - ...number__token_based_number_number_123.snap | 1 - ...__token_based_number_number_1_2345e50.snap | 1 - ...n_based_number_number_1_2345e_minus50.snap | 1 - ...er__token_based_number_number_2000_05.snap | 1 - ...number__token_based_number_number_nan.snap | 1 - ...based_number_number_negative_infinity.snap | 1 - ...based_number_number_positive_infinity.snap | 1 - ...r__token_based_number_number_thousand.snap | 1 - ...ken_based_numeric_for_empty_with_step.snap | 1 - ..._based_numeric_for_empty_without_step.snap | 1 - ...prefix__token_based_prefix_identifier.snap | 1 - ...based_prefix_identifier_in_parenthese.snap | 1 - ...ots__repeat__token_based_repeat_empty.snap | 1 - ...ring__token_based_string_only_letters.snap | 1 - ...token_based_string_with_double_quotes.snap | 1 - ..._string_with_single_and_double_quotes.snap | 1 - ...token_based_string_with_single_quotes.snap | 1 - ...shots__table__token_based_table_empty.snap | 1 - ...en_based_table_list_with_single_value.snap | 1 - ...oken_based_table_list_with_two_values.snap | 1 - ..._table__token_based_table_mixed_table.snap | 1 - ...e__token_based_table_with_field_entry.snap | 1 - ...e__token_based_table_with_index_entry.snap | 1 - ...laration_table_with_one_read_property.snap | 5 + ...aration_table_with_one_write_property.snap | 5 + ...laration_table_with_read_indexer_type.snap | 5 + ...an_inner_binary_has_higher_precedence.snap | 1 - ...ts__unary__token_based_unary_not_true.snap | 1 - ...y_two_unary_minus_breaks_between_them.snap | 1 - ..._an_inner_binary_has_lower_precedence.snap | 1 - ...nt__token_based_while_statement_empty.snap | 1 - ..._new_line_after_custom_added_comments.snap | 1 - src/generator/token_based.rs | 43 +- src/lib.rs | 2 +- ...__test__expression_from_floats__f64_0.snap | 1 - src/nodes/types/table.rs | 185 ++- src/parser.rs | 179 ++- src/process/evaluator/lua_value.rs | 9 +- src/rules/append_text_comment.rs | 37 +- src/rules/call_parens.rs | 4 +- src/rules/compute_expression.rs | 2 +- src/rules/convert_index_to_field.rs | 4 +- src/rules/convert_luau_number.rs | 4 +- src/rules/convert_require/mod.rs | 6 +- .../convert_require/roblox_index_style.rs | 9 +- src/rules/convert_square_root_call.rs | 2 +- src/rules/empty_do.rs | 4 +- src/rules/filter_early_return.rs | 4 +- src/rules/global_function_to_assign.rs | 2 +- src/rules/group_local.rs | 2 +- src/rules/inject_value.rs | 77 +- src/rules/method_def.rs | 4 +- src/rules/no_local_function.rs | 4 +- src/rules/remove_assertions.rs | 11 +- src/rules/remove_comments.rs | 14 +- src/rules/remove_compound_assign.rs | 4 +- src/rules/remove_continue.rs | 4 +- src/rules/remove_debug_profiling.rs | 11 +- src/rules/remove_floor_division.rs | 4 +- src/rules/remove_if_expression.rs | 4 +- src/rules/remove_interpolated_string.rs | 20 +- src/rules/remove_method_call.rs | 4 +- src/rules/remove_nil_declarations.rs | 4 +- src/rules/remove_spaces.rs | 4 +- src/rules/remove_types.rs | 4 +- src/rules/remove_unused_variable.rs | 4 +- ...ables__test__default_rename_variables.snap | 1 - ...es__test__no_globals_rename_variables.snap | 1 - ..._rename_variables_with_function_names.snap | 1 - ...test__roblox_globals_rename_variables.snap | 1 - src/rules/replace_referenced_tokens.rs | 2 +- src/rules/shift_token_line.rs | 2 +- ...__test__append_text_comment_with_text.snap | 8 - ..._append_text_comment_with_text_at_end.snap | 9 - ...__default_remove_function_call_parens.snap | 6 - ...ion__test__default_compute_expression.snap | 6 - ..._test__default_convert_index_to_field.snap | 6 - ...er__test__default_convert_luau_number.snap | 5 - ...pty_do__test__default_remove_empty_do.snap | 6 - ...st__default_filter_after_early_return.snap | 7 - ..._test__default_group_local_assignment.snap | 6 - ...alue__test__inject_false_value_as_foo.snap | 10 - ...alue__test__inject_float_value_as_var.snap | 10 - ...alue__test__inject_hello_value_as_var.snap | 10 - ...ue__test__inject_integer_value_as_var.snap | 10 - ..._inject_negative_integer_value_as_var.snap | 10 - ..._value__test__inject_nil_value_as_foo.snap | 10 - ...value__test__inject_true_value_as_foo.snap | 10 - ...est__default_remove_method_definition.snap | 6 - ...ault_convert_local_function_to_assign.snap | 6 - ...ions__test__default_remove_assertions.snap | 5 - ...emove_assertions_without_side_effects.snap | 8 - ...mments__test__default_remove_comments.snap | 6 - ...ts_configure_with_invalid_regex_error.snap | 9 - ...t__default_remove_compound_assignment.snap | 5 - ...ntinue__test__default_remove_continue.snap | 5 - ..._test__default_remove_debug_profiling.snap | 5 - ..._debug_profiling_without_side_effects.snap | 8 - ...__test__default_remove_floor_division.snap | 5 - ...n__test__default_remove_if_expression.snap | 5 - ...t__default_remove_interpolated_string.snap | 5 - ...interpolated_string_tostring_strategy.snap | 8 - ...all__test__default_remove_method_call.snap | 5 - ..._test__default_remove_nil_declaration.snap | 7 - ...e_spaces__test__default_remove_spaces.snap | 6 - ...ove_types__test__default_remove_types.snap | 5 - ..._test__default_remove_unused_variable.snap | 5 - ...st__default_replace_referenced_tokens.snap | 5 - ...test__default_remove_unused_if_branch.snap | 6 - ...le__test__default_remove_unused_while.snap | 6 - src/rules/unused_if_branch.rs | 4 +- src/rules/unused_while.rs | 4 +- tests/ast_fuzzer/mod.rs | 18 +- tests/ast_fuzzer/random.rs | 14 +- tests/cli.rs | 2 +- tests/rule_tests/append_text_comment.rs | 2 +- tests/rule_tests/inject_value.rs | 63 +- ...nvert_sibling_module_from_init_module.snap | 2 +- ..._snapshots__for_continue_with_comment.snap | 1 + ..._continue_snapshots__for_inside_while.snap | 1 + ..._loop_continue_in_function_expression.snap | 1 + ...r_loop_continue_in_function_statement.snap | 1 + ...napshots__for_loop_with_only_continue.snap | 1 + ...nue_snapshots__function_with_continue.snap | 1 + ...pshots__generic_for_continue_or_break.snap | 1 + ...apshots__multiple_conditions_continue.snap | 1 + ...shots__nested_for_continue_statements.snap | 1 + ...hots__numeric_for_continue_first_case.snap | 1 + ...continue_snapshots__repeat_inside_for.snap | 1 + ...shots__sequential_loops_with_continue.snap | 1 + .../rules__utils__invalid_sourcemap.snap | 1 - tests/snapshots/convert_help_command.snap | 1 - tests/snapshots/minify_help_command.snap | 1 - tests/snapshots/process_help_command.snap | 1 - ...rrors_when_no_extension_and_no_format.snap | 1 - ...nd_errors_when_unrecognized_extension.snap | 1 - ...n_convert_command_on_json_file_stdout.snap | 1 - ...vert_command_on_json_file_with_output.snap | 1 - ...on_without_extension_file_with_output.snap | 1 - tests/snapshots/run_minify_command.snap | 1 - .../snapshots/run_minify_verbose_command.snap | 1 - tests/snapshots/run_process_command.snap | 1 - ...run_process_single_file_custom_config.snap | 1 - .../run_process_verbose_command.snap | 1 - tests/snapshots/short_help_command.snap | 1 - 372 files changed, 1890 insertions(+), 1737 deletions(-) create mode 100644 src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_read_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_write_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_read_indexer_type.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_read_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_write_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_read_indexer_type.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_read_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_write_property.snap create mode 100644 src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_read_indexer_type.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text_at_end.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__call_parens__test__default_remove_function_call_parens.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__compute_expression__test__default_compute_expression.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__convert_index_to_field__test__default_convert_index_to_field.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__convert_luau_number__test__default_convert_luau_number.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__empty_do__test__default_remove_empty_do.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__filter_early_return__test__default_filter_after_early_return.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__group_local__test__default_group_local_assignment.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_false_value_as_foo.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_float_value_as_var.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_hello_value_as_var.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_integer_value_as_var.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_negative_integer_value_as_var.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_nil_value_as_foo.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__inject_value__test__inject_true_value_as_foo.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__method_def__test__default_remove_method_definition.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__no_local_function__test__default_convert_local_function_to_assign.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_assertions__test__default_remove_assertions.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_assertions__test__remove_assertions_without_side_effects.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_comments__test__default_remove_comments.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_comments__test__remove_comments_configure_with_invalid_regex_error.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_compound_assign__test__default_remove_compound_assignment.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_continue__test__default_remove_continue.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__default_remove_debug_profiling.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__remove_debug_profiling_without_side_effects.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_floor_division__test__default_remove_floor_division.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_if_expression__test__default_remove_if_expression.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__default_remove_interpolated_string.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__remove_interpolated_string_tostring_strategy.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_method_call__test__default_remove_method_call.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_nil_declarations__test__default_remove_nil_declaration.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_spaces__test__default_remove_spaces.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_types__test__default_remove_types.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__remove_unused_variable__test__default_remove_unused_variable.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__shift_token_line__test__default_replace_referenced_tokens.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__unused_if_branch__test__default_remove_unused_if_branch.snap delete mode 100644 src/rules/snapshots/darklua_core__rules__unused_while__test__default_remove_unused_while.snap diff --git a/CHANGELOG.md b/CHANGELOG.md index 979a86d8..906e29bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Unreleased + +* add support for property modifiers in table types (like `read` in a type like `{ read name: string }`) ([#332](https://github.com/seaofvoices/darklua/pull/332)) + +## 0.17.3 + +* fix `inject_global_value` rule to not override environment values with the default value when they're defined ([#324](https://github.com/seaofvoices/darklua/pull/324)) + ## 0.17.2 * add `convert_function_to_assignment` rule ([#317](https://github.com/seaofvoices/darklua/pull/317)) diff --git a/Cargo.lock b/Cargo.lock index ca9e8303..1c272849 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,21 @@ version = 4 [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] -name = "allocator-api2" -version = "0.2.21" +name = "alloca" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] [[package]] name = "anes" @@ -25,9 +28,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -40,47 +43,47 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", - "windows-sys 0.59.0", + "once_cell_polyfill", + "windows-sys 0.61.2", ] [[package]] name = "assert_cmd" -version = "2.0.17" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66" +checksum = "bcbb6924530aa9e0432442af08bbcafdad182db80d2e560da42a6d442535bf85" dependencies = [ "anstyle", "bstr", - "doc-comment", "libc", "predicates", "predicates-core", @@ -90,9 +93,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "bitflags" @@ -102,33 +105,33 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "block2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "generic-array", + "objc2", ] [[package]] name = "borsh" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" dependencies = [ "cfg_aliases", ] [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "regex-automata", @@ -137,21 +140,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "bytecount" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "cast" @@ -161,18 +158,19 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.5" +version = "1.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" dependencies = [ + "find-msvc-tools", "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -209,9 +207,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -219,9 +217,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -231,33 +229,33 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", @@ -267,9 +265,9 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -285,36 +283,26 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "cpufeatures" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" -dependencies = [ - "libc", -] - [[package]] name = "criterion" -version = "0.5.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "4d883447757bb0ee46f233e9dc22eb84d93a9508c9b868687b274fc431d886bf" dependencies = [ + "alloca", "anes", "cast", "ciborium", "clap", "criterion-plot", - "is-terminal", - "itertools 0.10.5", + "itertools 0.13.0", "num-traits", - "once_cell", "oorandom", + "page_size", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -322,12 +310,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "ed943f81ea2faa8dcecbbfa50164acf95d555afec96a27871663b300e387b2e4" dependencies = [ "cast", - "itertools 0.10.5", + "itertools 0.13.0", ] [[package]] @@ -357,34 +345,24 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-common" -version = "0.1.6" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "ctrlc" -version = "3.5.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" +checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" dependencies = [ - "dispatch", + "dispatch2", "nix", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] name = "darklua" -version = "0.17.2" +version = "0.17.3" dependencies = [ "anstyle", "assert_cmd", @@ -397,7 +375,7 @@ dependencies = [ "env_logger", "full_moon", "include_dir", - "indexmap 2.11.4", + "indexmap 2.12.1", "insta", "json5", "log", @@ -419,7 +397,6 @@ dependencies = [ "toml", "tracing", "tracing-subscriber", - "tracing-tracy", "wax", "web-time", "xxhash-rust", @@ -442,7 +419,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", "unicode-xid", ] @@ -459,27 +436,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "digest" -version = "0.10.7" +name = "dispatch2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "block-buffer", - "crypto-common", + "bitflags 2.10.0", + "block2", + "libc", + "objc2", ] -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "doc-comment" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" - [[package]] name = "durationfmt" version = "0.1.1" @@ -488,9 +455,9 @@ checksum = "232860130f75128af6852aef5105ee3813539258f2ce74d0f0ec2dca9b69e22d" [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elsa" @@ -509,9 +476,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -532,18 +499,18 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -561,6 +528,12 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -584,9 +557,9 @@ dependencies = [ [[package]] name = "full_moon" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5544e0a9eb14156c6bdc12bfd3bdc35bef1a927e7376eb17626e5d8baec3a3" +checksum = "bf70c2c95177070b4175acd36570d8f35ddfa92e418701bb6e1217f9e2d141b9" dependencies = [ "bytecount", "cfg-if", @@ -609,49 +582,27 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "generator" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" -dependencies = [ - "cfg-if", - "libc", - "log", - "rustversion", - "windows", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", ] [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -662,26 +613,24 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", "foldhash", ] [[package]] -name = "heck" -version = "0.5.0" +name = "hashbrown" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] -name = "hermit-abi" -version = "0.4.0" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "include_dir" @@ -714,12 +663,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.1", ] [[package]] @@ -728,7 +677,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "inotify-sys", "libc", ] @@ -744,87 +693,77 @@ dependencies = [ [[package]] name = "insta" -version = "1.43.2" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fdb647ebde000f43b5b53f773c30cf9b0cb4300453208713fa38b2c70935a0" +checksum = "b76866be74d68b1595eb8060cb9191dca9c021db2316558e52ddc5d55d41b66c" dependencies = [ "console", "once_cell", "regex", "serde", "similar", -] - -[[package]] -name = "is-terminal" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.52.0", + "tempfile", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.10.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" [[package]] name = "jiff" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" dependencies = [ "jiff-static", "log", "portable-atomic", "portable-atomic-util", - "serde", + "serde_core", ] [[package]] name = "jiff-static" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -832,13 +771,12 @@ dependencies = [ [[package]] name = "json5" -version = "0.4.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +checksum = "56c86c72f9e1d3fe29baa32cab8896548eef9aae271fce4e796d16b583fdf6d5" dependencies = [ - "pest", - "pest_derive", "serde", + "ucd-trie", ] [[package]] @@ -869,15 +807,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "linux-raw-sys" @@ -887,37 +825,15 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" - -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "matchers" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" -dependencies = [ - "regex-automata", -] +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "minimal-lexical" @@ -927,14 +843,14 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "1.0.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -943,7 +859,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -965,7 +881,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "fsevent-sys", "inotify", "kqueue", @@ -998,11 +914,11 @@ checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1016,91 +932,77 @@ dependencies = [ ] [[package]] -name = "once_cell" -version = "1.20.2" +name = "objc2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] [[package]] -name = "oorandom" -version = "11.1.4" +name = "objc2-encode" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" [[package]] -name = "paste" -version = "1.0.15" +name = "once_cell" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] -name = "pathdiff" -version = "0.2.3" +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] -name = "pest" -version = "2.7.15" +name = "oorandom" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" -dependencies = [ - "memchr", - "thiserror 2.0.9", - "ucd-trie", -] +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] -name = "pest_derive" -version = "2.7.15" +name = "page_size" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" dependencies = [ - "pest", - "pest_generator", + "libc", + "winapi", ] [[package]] -name = "pest_generator" -version = "2.7.15" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.106", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "pest_meta" -version = "2.7.15" +name = "pathdiff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" -dependencies = [ - "once_cell", - "pest", - "sha2", -] +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "petgraph" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", - "hashbrown 0.15.2", - "indexmap 2.11.4", + "hashbrown 0.15.5", + "indexmap 2.12.1", "serde", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "plotters" @@ -1141,9 +1043,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" [[package]] name = "portable-atomic-util" @@ -1156,9 +1058,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -1202,18 +1104,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -1265,9 +1167,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -1275,9 +1177,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1285,9 +1187,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -1297,9 +1199,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -1308,9 +1210,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rustix" @@ -1318,24 +1220,24 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" [[package]] name = "same-file" @@ -1346,17 +1248,11 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "serde" -version = "1.0.227" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80ece43fc6fbed4eb5392ab50c07334d3e577cbf40997ee896fe7af40bba4245" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -1374,22 +1270,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.227" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a576275b607a2c86ea29e410193df32bc680303c82f31e275bbfcafe8b33be5" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.227" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e694923b8824cf0e9b382adf0f60d4e05f348f357b38833a3fa5ed7c2ede04" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] @@ -1407,9 +1303,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -1420,24 +1316,13 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "itoa", "ryu", "serde", "unsafe-libyaml", ] -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -1455,31 +1340,31 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smol_str" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +checksum = "3498b0a27f93ef1402f20eefacfaa1691272ac4eca1cdc8c596cb0a245d6cbf5" dependencies = [ "borsh", - "serde", + "serde_core", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "strsim" @@ -1500,9 +1385,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -1519,7 +1404,7 @@ dependencies = [ "getrandom", "once_cell", "rustix", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -1534,16 +1419,7 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" -dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl", ] [[package]] @@ -1554,28 +1430,16 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -1590,11 +1454,11 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.7" +version = "0.9.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" +checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.1", "serde_core", "serde_spanned", "toml_datetime", @@ -1605,33 +1469,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.3" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -1640,20 +1504,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -1672,60 +1536,18 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ - "matchers", "nu-ansi-term", - "once_cell", - "regex-automata", "sharded-slab", "smallvec", "thread_local", - "tracing", "tracing-core", "tracing-log", ] -[[package]] -name = "tracing-tracy" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" -dependencies = [ - "tracing-core", - "tracing-subscriber", - "tracy-client", -] - -[[package]] -name = "tracy-client" -version = "0.17.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73202d787346a5418f8222eddb5a00f29ea47caf3c7d38a8f2f69f8455fa7c7e" -dependencies = [ - "loom", - "once_cell", - "tracy-client-sys", -] - -[[package]] -name = "tracy-client-sys" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fff37da548239c3bf9e64a12193d261e8b22b660991c6fd2df057c168f435f" -dependencies = [ - "cc", - "windows-targets 0.52.6", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - [[package]] name = "ucd-trie" version = "0.1.7" @@ -1734,9 +1556,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-xid" @@ -1758,21 +1580,15 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version_check" -version = "0.9.5" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -1789,18 +1605,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" @@ -1813,34 +1620,22 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1848,22 +1643,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] [[package]] name = "wax" @@ -1876,15 +1674,15 @@ dependencies = [ "nom", "pori", "regex", - "thiserror 1.0.69", + "thiserror", "walkdir", ] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -1901,92 +1699,41 @@ dependencies = [ ] [[package]] -name = "winapi-util" -version = "0.1.9" +name = "winapi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ - "windows-sys 0.59.0", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "windows-implement" -version = "0.58.0" +name = "winapi-util" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "windows-sys 0.61.2", ] [[package]] -name = "windows-interface" -version = "0.58.0" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-link" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" @@ -2003,14 +1750,14 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.4", + "windows-targets 0.53.5", ] [[package]] name = "windows-sys" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] @@ -2033,19 +1780,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.4" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ "windows-link", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -2056,9 +1803,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -2068,9 +1815,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -2080,9 +1827,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -2092,9 +1839,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -2104,9 +1851,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -2116,9 +1863,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -2128,9 +1875,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -2140,15 +1887,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" [[package]] name = "wit-bindgen" @@ -2170,21 +1917,20 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.111", ] diff --git a/Cargo.toml b/Cargo.toml index 970175e4..588f19af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "darklua" -version = "0.17.2" +version = "0.17.3" authors = ["jeparlefrancais "] edition = "2018" readme = "README.md" @@ -26,31 +26,31 @@ path = "src/bin.rs" tracing = ["dep:tracing"] [dependencies] -anstyle = "1.0.11" -bstr = "1.12.0" -clap = { version = "4.5.48", features = ["derive"] } +anstyle = "1.0.13" +bstr = "1.12.1" +clap = { version = "4.5.53", features = ["derive"] } durationfmt = "0.1.1" elsa = "1.11.2" env_logger = "0.11.8" -full_moon = { version = "2.0.0", features = ["roblox"] } -indexmap = "2.11.4" -json5 = "0.4.1" -log = "0.4.28" +full_moon = { version = "2.1.0", features = ["roblox"] } +indexmap = "2.12.1" +json5 = "1.3.0" +log = "0.4.29" num-traits = "0.2.19" pathdiff = "0.2.3" -petgraph = "0.8.2" -regex = "1.11.3" +petgraph = "0.8.3" +regex = "1.12.2" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.145" serde_yaml = "0.9.33" -toml = "0.9.7" +toml = "0.9.8" tracing = { version = "0.1", optional = true } wax = "0.6.0" xxhash-rust = { version = "0.8.15", features = ["xxh3"] } [dev-dependencies] assert_cmd = "2.0.17" -criterion = { version = "0.5.1", features = ["html_reports"] } +criterion = { version = "0.8.1", features = ["html_reports"] } include_dir = "0.7.4" insta = { version = "1.43.2", features = ["json", "filters"] } paste = "1.0.15" @@ -59,14 +59,13 @@ rand = "0.9.2" rand_distr = "0.5.1" serde_bytes = "0.11.19" tempfile = "3.23.0" -tracing-subscriber = "0.3.20" -tracing-tracy = "0.11.4" +tracing-subscriber = "0.3.22" [target.'cfg(target_arch = "wasm32")'.dependencies] web-time = "1.1.0" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -ctrlc = { version = "3.5.0", features = ["termination"] } +ctrlc = { version = "3.5.1", features = ["termination"] } notify = "8.2.0" notify-debouncer-full = "0.6.0" diff --git a/README.md b/README.md index 8fb411be..0a7830b5 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ rokit add seaofvoices/darklua If you are already using Foreman, then installing darklua is as simple as adding this line in the `foreman.toml` file: ```toml -darklua = { github = "seaofvoices/darklua", version = "=0.17.2" } +darklua = { github = "seaofvoices/darklua", version = "=0.17.3" } ``` # License diff --git a/site/content/docs/bundle/index.md b/site/content/docs/bundle/index.md index 1e7e6d48..4f83f9a4 100644 --- a/site/content/docs/bundle/index.md +++ b/site/content/docs/bundle/index.md @@ -225,7 +225,7 @@ jobs: [package] name = "darklua" -version = "0.17.2" +version = "0.17.3" edition = "2018" readme = "README.md" description = "Transform Lua scripts" @@ -350,7 +350,7 @@ harness = false name = "darklua", readme = "README.md", repository = "https://github.com/seaofvoices/darklua", - version = "0.17.2", + version = "0.17.3", }, profile = { dev = { diff --git a/site/content/docs/installation/index.md b/site/content/docs/installation/index.md index 846c92cc..0bc8f60d 100644 --- a/site/content/docs/installation/index.md +++ b/site/content/docs/installation/index.md @@ -18,7 +18,7 @@ rokit add seaofvoices/darklua If you are already using [Foreman](https://github.com/Roblox/foreman), then installing darklua is as simple as adding this line in the `foreman.toml` file: ```toml -darklua = { github = "seaofvoices/darklua", version = "=0.17.2" } +darklua = { github = "seaofvoices/darklua", version = "=0.17.3" } ``` ## Download a Release diff --git a/site/darklua-wasm/javascript-tests/package-lock.json b/site/darklua-wasm/javascript-tests/package-lock.json index 3c82767f..a9f37516 100644 --- a/site/darklua-wasm/javascript-tests/package-lock.json +++ b/site/darklua-wasm/javascript-tests/package-lock.json @@ -14,101 +14,26 @@ "jest": "^29.7.0" } }, - "../pkg": { - "name": "darklua-wasm", - "version": "0.1.0", - "license": "MIT" - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, + "../pkg": {}, "node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.5", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, "license": "MIT", "engines": { @@ -116,20 +41,22 @@ } }, "node_modules/@babel/core": { - "version": "7.23.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -145,27 +72,32 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -173,58 +105,40 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -234,37 +148,19 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -272,7 +168,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -280,7 +178,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -288,99 +188,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@babel/types": "^7.28.5" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -390,6 +219,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { @@ -401,6 +232,8 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", "dependencies": { @@ -412,6 +245,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { @@ -421,8 +256,42 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { @@ -434,6 +303,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { @@ -444,11 +315,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -459,6 +332,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { @@ -470,6 +345,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -481,6 +358,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { @@ -492,6 +371,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { @@ -503,6 +384,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -514,6 +397,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { @@ -523,8 +408,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { @@ -538,11 +441,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -552,46 +457,48 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.23.9", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -599,11 +506,15 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", "dependencies": { @@ -619,6 +530,8 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { @@ -627,6 +540,8 @@ }, "node_modules/@jest/console": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", "dependencies": { @@ -643,6 +558,8 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", "dependencies": { @@ -689,6 +606,8 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", "dependencies": { @@ -703,6 +622,8 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { @@ -715,6 +636,8 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { @@ -726,6 +649,8 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -742,6 +667,8 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -756,6 +683,8 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { @@ -798,6 +727,8 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { @@ -809,6 +740,8 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { @@ -822,6 +755,8 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", "dependencies": { @@ -836,6 +771,8 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", "dependencies": { @@ -850,6 +787,8 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { @@ -875,6 +814,8 @@ }, "node_modules/@jest/types": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { @@ -890,28 +831,31 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -919,12 +863,16 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -934,11 +882,15 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -947,6 +899,8 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -955,6 +909,8 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { @@ -966,7 +922,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -975,6 +933,8 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { @@ -983,15 +943,19 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.5", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, "node_modules/@types/graceful-fs": { "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1000,11 +964,15 @@ }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { @@ -1013,6 +981,8 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1020,20 +990,26 @@ } }, "node_modules/@types/node": { - "version": "20.11.20", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "node_modules/@types/stack-utils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.32", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -1042,11 +1018,15 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1061,6 +1041,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -1069,6 +1051,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -1083,6 +1067,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -1095,6 +1081,8 @@ }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -1103,6 +1091,8 @@ }, "node_modules/babel-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { @@ -1123,6 +1113,8 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1138,6 +1130,8 @@ }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1153,6 +1147,8 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1166,29 +1162,36 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { @@ -1204,11 +1207,25 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1230,7 +1247,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -1248,10 +1267,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -1262,6 +1282,8 @@ }, "node_modules/bser": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1270,11 +1292,15 @@ }, "node_modules/buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -1283,6 +1309,8 @@ }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { @@ -1290,7 +1318,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001589", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "dev": true, "funding": [ { @@ -1310,6 +1340,8 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1325,6 +1357,8 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", "engines": { @@ -1333,6 +1367,8 @@ }, "node_modules/ci-info": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -1346,12 +1382,16 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, "license": "MIT" }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -1365,6 +1405,8 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { @@ -1373,12 +1415,16 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1390,21 +1436,29 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/create-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1443,11 +1497,13 @@ "link": true }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1459,7 +1515,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1473,6 +1531,8 @@ }, "node_modules/deepmerge": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", "engines": { @@ -1481,6 +1541,8 @@ }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { @@ -1489,6 +1551,8 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { @@ -1496,12 +1560,16 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.681", + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { @@ -1513,11 +1581,15 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/error-ex": { - "version": "1.3.2", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1525,7 +1597,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -1534,6 +1608,8 @@ }, "node_modules/escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", "engines": { @@ -1542,6 +1618,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { @@ -1554,6 +1632,8 @@ }, "node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { @@ -1576,6 +1656,8 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -1583,6 +1665,8 @@ }, "node_modules/expect": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1598,11 +1682,15 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fb-watchman": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1624,6 +1712,8 @@ }, "node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -1636,6 +1726,8 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, @@ -1656,6 +1748,8 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -1664,6 +1758,8 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -1672,6 +1768,8 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -1680,6 +1778,8 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", "engines": { @@ -1688,6 +1788,8 @@ }, "node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { @@ -1699,6 +1801,9 @@ }, "node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -1716,21 +1821,17 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -1738,7 +1839,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1750,11 +1853,15 @@ }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1762,7 +1869,9 @@ } }, "node_modules/import-local": { - "version": "3.1.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { @@ -1781,6 +1890,8 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -1789,6 +1900,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -1798,20 +1912,29 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-core-module": { - "version": "2.13.1", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1819,6 +1942,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -1827,6 +1952,8 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { @@ -1845,6 +1972,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { @@ -1856,11 +1985,15 @@ }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1868,7 +2001,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1882,24 +2017,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.0", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -1907,13 +2030,10 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1927,6 +2047,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1939,7 +2061,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1952,6 +2076,8 @@ }, "node_modules/jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", "dependencies": { @@ -1977,6 +2103,8 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", "dependencies": { @@ -1990,6 +2118,8 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { @@ -2020,6 +2150,8 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { @@ -2052,6 +2184,8 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2096,6 +2230,8 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { @@ -2110,6 +2246,8 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2121,6 +2259,8 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2136,6 +2276,8 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", "dependencies": { @@ -2152,6 +2294,8 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", "engines": { @@ -2160,6 +2304,8 @@ }, "node_modules/jest-haste-map": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", "dependencies": { @@ -2184,6 +2330,8 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", "dependencies": { @@ -2196,6 +2344,8 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { @@ -2210,6 +2360,8 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { @@ -2229,6 +2381,8 @@ }, "node_modules/jest-mock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", "dependencies": { @@ -2242,6 +2396,8 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", "engines": { @@ -2258,6 +2414,8 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", "engines": { @@ -2266,6 +2424,8 @@ }, "node_modules/jest-resolve": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { @@ -2285,6 +2445,8 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", "dependencies": { @@ -2297,6 +2459,8 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2328,6 +2492,8 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2360,6 +2526,8 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { @@ -2388,24 +2556,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.0", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2413,13 +2569,10 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/jest-util": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { @@ -2436,6 +2589,8 @@ }, "node_modules/jest-validate": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", "dependencies": { @@ -2452,6 +2607,8 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -2463,6 +2620,8 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { @@ -2481,6 +2640,8 @@ }, "node_modules/jest-worker": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { @@ -2495,6 +2656,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2509,11 +2672,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -2525,23 +2692,29 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -2553,6 +2726,8 @@ }, "node_modules/kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "license": "MIT", "engines": { @@ -2561,6 +2736,8 @@ }, "node_modules/leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", "engines": { @@ -2569,11 +2746,15 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -2585,6 +2766,8 @@ }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -2593,6 +2776,8 @@ }, "node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -2605,24 +2790,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.0", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2630,13 +2803,10 @@ "node": ">=10" } }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2645,6 +2815,8 @@ }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, @@ -2664,6 +2836,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -2672,6 +2846,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -2682,27 +2858,37 @@ } }, "node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/node-int64": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.14", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -2711,6 +2897,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -2722,6 +2910,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -2730,6 +2920,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -2744,6 +2936,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2758,6 +2952,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -2769,6 +2965,8 @@ }, "node_modules/p-locate/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -2783,6 +2981,8 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -2791,6 +2991,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -2808,6 +3010,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -2816,6 +3020,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -2824,6 +3030,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -2832,16 +3040,22 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -2852,7 +3066,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -2861,6 +3077,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2872,6 +3090,8 @@ }, "node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2885,6 +3105,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -2896,6 +3118,8 @@ }, "node_modules/prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2907,7 +3131,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -2922,12 +3148,16 @@ "license": "MIT" }, "node_modules/react-is": { - "version": "18.2.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -2935,23 +3165,30 @@ } }, "node_modules/resolve": { - "version": "1.22.8", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { @@ -2963,6 +3200,8 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { @@ -2970,7 +3209,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { @@ -2979,6 +3220,8 @@ }, "node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -2987,6 +3230,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -2998,6 +3243,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -3006,16 +3253,22 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -3024,6 +3277,8 @@ }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3032,6 +3287,8 @@ }, "node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { @@ -3041,11 +3298,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3057,6 +3318,8 @@ }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3069,6 +3332,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -3082,6 +3347,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -3093,6 +3360,8 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { @@ -3101,6 +3370,8 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { @@ -3109,6 +3380,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -3120,6 +3393,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -3131,6 +3406,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -3142,6 +3419,8 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { @@ -3155,17 +3434,11 @@ }, "node_modules/tmpl": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3181,6 +3454,8 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { @@ -3189,6 +3464,8 @@ }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -3199,12 +3476,16 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.0.13", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "dev": true, "funding": [ { @@ -3222,8 +3503,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -3233,7 +3514,9 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.2.0", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -3247,6 +3530,8 @@ }, "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3255,6 +3540,8 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -3269,6 +3556,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3285,11 +3574,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", "dependencies": { @@ -3302,6 +3595,8 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -3310,11 +3605,15 @@ }, "node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -3332,6 +3631,8 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -3340,6 +3641,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { diff --git a/site/package-lock.json b/site/package-lock.json index 6b3c55a5..72165b2b 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@babel/eslint-parser": "^7.28.4", + "@babel/eslint-parser": "^7.28.5", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@fontsource-variable/open-sans": "^5.2.7", @@ -34,15 +34,15 @@ "joi": "^17.13.3", "json5": "^2.2.3", "mdast-util-from-markdown": "^2.0.2", - "mdast-util-to-hast": "^13.2.0", - "monaco-editor": "^0.53.0", - "monaco-editor-webpack-plugin": "^7.1.0", + "mdast-util-to-hast": "^13.2.1", + "monaco-editor": "^0.55.1", + "monaco-editor-webpack-plugin": "^7.1.1", "prismjs": "^1.30.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-use-ref-effect": "^1.3.0", "rehype-react": "^8.0.0", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "unified": "^11.0.5" }, "devDependencies": { @@ -131,7 +131,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.4", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", + "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -3858,8 +3860,11 @@ "license": "MIT" }, "node_modules/@types/trusted-types": { - "version": "1.0.6", - "license": "MIT" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true }, "node_modules/@types/unist": { "version": "2.0.11", @@ -6730,6 +6735,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "3.2.2", "license": "BSD-2-Clause", @@ -11494,6 +11508,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "license": "MIT", @@ -12383,7 +12409,9 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.2.0", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -13853,14 +13881,19 @@ } }, "node_modules/monaco-editor": { - "version": "0.53.0", + "version": "0.55.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.55.1.tgz", + "integrity": "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==", "license": "MIT", "dependencies": { - "@types/trusted-types": "^1.0.6" + "dompurify": "3.2.7", + "marked": "14.0.0" } }, "node_modules/monaco-editor-webpack-plugin": { - "version": "7.1.0", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.1.1.tgz", + "integrity": "sha512-WxdbFHS3Wtz4V9hzhe/Xog5hQRSMxmDLkEEYZwqMDHgJlkZo00HVFZR0j5d0nKypjTUkkygH3dDSXERLG4757A==", "license": "MIT", "dependencies": { "loader-utils": "^2.0.2" @@ -18699,7 +18732,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/site/package.json b/site/package.json index 06297861..f8ebd09f 100644 --- a/site/package.json +++ b/site/package.json @@ -8,7 +8,7 @@ "url": "https://github.com/seaofvoices/darklua/issues" }, "dependencies": { - "@babel/eslint-parser": "^7.28.4", + "@babel/eslint-parser": "^7.28.5", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@fontsource-variable/open-sans": "^5.2.7", @@ -33,15 +33,15 @@ "joi": "^17.13.3", "json5": "^2.2.3", "mdast-util-from-markdown": "^2.0.2", - "mdast-util-to-hast": "^13.2.0", - "monaco-editor": "^0.53.0", - "monaco-editor-webpack-plugin": "^7.1.0", + "mdast-util-to-hast": "^13.2.1", + "monaco-editor": "^0.55.1", + "monaco-editor-webpack-plugin": "^7.1.1", "prismjs": "^1.30.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-use-ref-effect": "^1.3.0", "rehype-react": "^8.0.0", - "typescript": "^5.9.2", + "typescript": "^5.9.3", "unified": "^11.0.5" }, "devDependencies": { diff --git a/src/ast_converter.rs b/src/ast_converter.rs index 7bb10938..9a1ae8fe 100644 --- a/src/ast_converter.rs +++ b/src/ast_converter.rs @@ -1088,6 +1088,22 @@ impl<'a> AstConverter<'a> { for field in fields { use ast::luau::TypeFieldKey; + let modifier = field.access().and_then(|token| { + match token.token().to_string().as_str() { + "read" => Some(TablePropertyModifier::Read), + "write" => Some(TablePropertyModifier::Write), + modifier => { + log::warn!("Unknown access modifier: {}", modifier); + None + } + } + }); + let modifier_token = self + .hold_token_data + .then_some(()) + .and_then(|()| field.access().map(|token| self.convert_token(token))) + .transpose()?; + match field.key() { TypeFieldKey::Name(property_name) => { let mut property_type = TablePropertyType::new( @@ -1095,9 +1111,15 @@ impl<'a> AstConverter<'a> { self.pop_type()?, ); + if let Some(modifier) = modifier { + property_type.set_modifier(modifier); + } + if self.hold_token_data { - property_type - .set_token(self.convert_token(field.colon_token())?); + property_type.set_tokens(TablePropertyTypeTokens { + colon: self.convert_token(field.colon_token())?, + modifier: modifier_token, + }); } table_type.push_property(property_type); @@ -1106,6 +1128,10 @@ impl<'a> AstConverter<'a> { let mut indexer_type = TableIndexerType::new(self.pop_type()?, self.pop_type()?); + if let Some(modifier) = modifier { + indexer_type.set_modifier(modifier); + } + if self.hold_token_data { let (opening_bracket, closing_bracket) = self.extract_contained_span_tokens(brackets)?; @@ -1114,6 +1140,7 @@ impl<'a> AstConverter<'a> { opening_bracket, closing_bracket, colon: self.convert_token(field.colon_token())?, + modifier: modifier_token, }) } diff --git a/src/frontend/configuration.rs b/src/frontend/configuration.rs index 824a5829..10e5d12a 100644 --- a/src/frontend/configuration.rs +++ b/src/frontend/configuration.rs @@ -163,11 +163,12 @@ impl std::fmt::Debug for Configuration { /// /// This enum defines different modes for generating Lua code, each with its own /// formatting characteristics. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)] #[serde(deny_unknown_fields, rename_all = "snake_case", tag = "name")] pub enum GeneratorParameters { /// Retains the original line structure of the input code. #[serde(alias = "retain-lines")] + #[default] RetainLines, /// Generates dense, compact code with a specified column span. Dense { @@ -183,12 +184,6 @@ pub enum GeneratorParameters { }, } -impl Default for GeneratorParameters { - fn default() -> Self { - Self::RetainLines - } -} - impl GeneratorParameters { /// Creates a new dense generator with default column span. pub fn default_dense() -> Self { @@ -408,9 +403,9 @@ mod test { fn deserialize_unknown_generator_name() { let result: Result = json5::from_str("{generator: 'oops'}"); - pretty_assertions::assert_eq!( + insta::assert_snapshot!( result.expect_err("deserialization should fail").to_string(), - "invalid generator name `oops`" + @"invalid generator name `oops` at line 1 column 13" ); } } @@ -501,9 +496,9 @@ mod test { let result: Result = json5::from_str("{bundle: { require_mode: 'oops' } }"); - pretty_assertions::assert_eq!( + insta::assert_snapshot!( result.expect_err("deserialization should fail").to_string(), - "invalid require mode `oops`" + @"invalid require mode `oops` at line 1 column 26" ); } } diff --git a/src/frontend/work_item.rs b/src/frontend/work_item.rs index 91566dd8..1293a841 100644 --- a/src/frontend/work_item.rs +++ b/src/frontend/work_item.rs @@ -69,8 +69,9 @@ impl WorkProgress { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Default)] pub(crate) enum WorkStatus { + #[default] NotStarted, InProgress(Box), Done(DarkluaResult<()>), @@ -90,12 +91,6 @@ impl WorkStatus { } } -impl Default for WorkStatus { - fn default() -> Self { - Self::NotStarted - } -} - impl From for WorkStatus { fn from(progress: WorkProgress) -> Self { Self::InProgress(Box::new(progress)) diff --git a/src/generator/dense.rs b/src/generator/dense.rs index 14c9eac4..f0d48ef4 100644 --- a/src/generator/dense.rs +++ b/src/generator/dense.rs @@ -993,6 +993,13 @@ impl LuaGenerator for DenseLuaGenerator { let last_index = table_type.len().saturating_sub(1); for (index, property) in table_type.iter_entries().enumerate() { + if let Some(modifier) = property.get_modifier() { + match modifier { + nodes::TablePropertyModifier::Read => self.push_str("read"), + nodes::TablePropertyModifier::Write => self.push_str("write"), + } + } + match property { nodes::TableEntryType::Property(property) => { self.write_identifier(property.get_identifier()); diff --git a/src/generator/mod.rs b/src/generator/mod.rs index 89366a3f..31383483 100644 --- a/src/generator/mod.rs +++ b/src/generator/mod.rs @@ -803,11 +803,26 @@ mod $mod_name { TableType::default() .with_property(TablePropertyType::new("name", TypeName::new("string"))) ), + table_with_one_read_property => TypeDeclarationStatement::new( + "Obj", + TableType::default() + .with_property(TablePropertyType::new("name", TypeName::new("string")).with_modifier(TablePropertyModifier::Read)) + ), + table_with_one_write_property => TypeDeclarationStatement::new( + "Obj", + TableType::default() + .with_property(TablePropertyType::new("name", TypeName::new("string")).with_modifier(TablePropertyModifier::Write)) + ), table_with_indexer_type => TypeDeclarationStatement::new( "StringArray", TableType::default() .with_indexer_type(TableIndexerType::new(TypeName::new("number"), TypeName::new("string"))) ), + table_with_read_indexer_type => TypeDeclarationStatement::new( + "StringArray", + TableType::default() + .with_indexer_type(TableIndexerType::new(TypeName::new("number"), TypeName::new("string")).with_modifier(TablePropertyModifier::Read)) + ), table_with_one_property_and_indexer_type => TypeDeclarationStatement::new( "PackedArray", TableType::default() diff --git a/src/generator/readable.rs b/src/generator/readable.rs index 5dd4c7b5..c7e9a6fc 100644 --- a/src/generator/readable.rs +++ b/src/generator/readable.rs @@ -1243,6 +1243,14 @@ impl LuaGenerator for ReadableLuaGenerator { let last_index = table_type.len().saturating_sub(1); for (index, property) in table_type.iter_entries().enumerate() { + if let Some(modifier) = property.get_modifier() { + match modifier { + nodes::TablePropertyModifier::Read => self.push_str("read"), + nodes::TablePropertyModifier::Write => self.push_str("write"), + } + self.push_char(' '); + } + match property { nodes::TableEntryType::Property(property) => { self.write_identifier(property.get_identifier()); diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_empty_tuple.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_empty_tuple.snap index 078da893..0da2ca55 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_empty_tuple.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_empty_tuple.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- () diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_one_value.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_two_values.snap index 6340a7a7..7ca47a35 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__arguments__dense_arguments_tuple_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true,false) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_one_value.snap index bffe57a5..04154e52 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo,var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_two_values.snap index 72d88da1..9e0e4c35 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_two_variables_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo,var=nil,false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_variable_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_variable_with_one_value.snap index 62b44b80..efe87089 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_variable_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__assign__dense_assign_variable_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_and_false.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_and_false.snap index bba10f62..a9a75f15 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_and_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_and_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true and false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_equal_false.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_equal_false.snap index 2a5314b0..5499d0fa 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_equal_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__binary__dense_binary_true_equal_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true==false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__compound_assign_statement__dense_compound_assign_statement_increment_var_by_one.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__compound_assign_statement__dense_compound_assign_statement_increment_var_by_one.snap index a7992614..4e65991b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__compound_assign_statement__dense_compound_assign_statement_increment_var_by_one.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__compound_assign_statement__dense_compound_assign_statement_increment_var_by_one.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var+=1 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_empty.snap index c4484117..5c46a525 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_nested_do.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_nested_do.snap index 377b9f47..bc9b391a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_nested_do.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__do_statement__dense_do_statement_nested_do.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do do end end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_false_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_false_value.snap index d48dfc6e..27aa2cad 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_false_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_false_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_nil_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_nil_value.snap index c39d6773..54252c1e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_nil_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_nil_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- nil diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_in_parenthese.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_value.snap index c9f6b7c9..739005bc 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_true_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_variable_arguments.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_variable_arguments.snap index f4c0c16c..302d6af4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_variable_arguments.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__expression__dense_expression_variable_arguments.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- ... diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__field__dense_field_identifier_prefix.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__field__dense_field_identifier_prefix.snap index e494d4e6..a228a5f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__field__dense_field_identifier_prefix.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__field__dense_field_identifier_prefix.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo.bar diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty.snap index a8cb6880..6ea47194 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function()end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic.snap index c2fdf94e..f9871a52 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_one_parameter.snap index 1157bbc7..3c9456ab 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a,...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_two_parameter.snap index ae95cd0e..f77469f1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_variadic_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a,b,...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_with_two_parameter.snap index c6a44cf9..5f06e86b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_expr__dense_function_expr_empty_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a,b)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty.snap index ba72e293..ee4fbcc8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo()end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_field.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_field.snap index 5d23623e..13b28ed1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_field.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_field.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo.bar()end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_method.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_method.snap index 7ffffcb3..d83fc359 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_method.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__function_statement__dense_function_statement_empty_with_method.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo:bar()end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__generic_for__dense_generic_for_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__generic_for__dense_generic_for_empty.snap index ab1095ae..e130b900 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__generic_for__dense_generic_for_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__generic_for__dense_generic_for_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for var in true do end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty.snap index 2c836f57..f7107532 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_else.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_else.snap index 7c2dc22b..15b39817 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_else.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_else.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then else end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_multiple_branch.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_multiple_branch.snap index 58ada28b..b697aa94 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_multiple_branch.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__if_statement__dense_if_statement_empty_with_empty_multiple_branch.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then elseif nil then elseif false then end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__index__dense_index_identifier_prefix_with_identifier_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__index__dense_index_identifier_prefix_with_identifier_value.snap index 660c4843..5a828708 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__index__dense_index_identifier_prefix_with_identifier_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__index__dense_index_identifier_prefix_with_identifier_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo[bar] diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_break_statement.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_break_statement.snap index 920bad51..830d7831 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_break_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_break_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- break diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_continue_statement.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_continue_statement.snap index 2916ff53..13fc10b1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_continue_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_continue_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- continue diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_one_expression.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_one_expression.snap index 9099df86..37f7bc82 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_one_expression.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_one_expression.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_parentheses.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_parentheses.snap index 0be6febe..068ad98a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_parentheses.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_parentheses.snap @@ -1,7 +1,5 @@ --- source: src/generator/mod.rs -assertion_line: 689 expression: generator.into_string() - --- return(true) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_two_expressions.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_two_expressions.snap index d91d6bda..8115d09a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_two_expressions.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_two_expressions.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true,nil diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_without_values.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_without_values.snap index 9777b228..5470e795 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_without_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__last__dense_last_return_without_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_and_bar_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_and_bar_unassigned.snap index b4f1aa42..7a3b4bc9 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_and_bar_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_and_bar_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo,bar diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_unassigned.snap index 8e2df738..06116639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_foo_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_var_assign_to_false.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_var_assign_to_false.snap index 525588e1..8e2b5204 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_var_assign_to_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_assign__dense_local_assign_var_assign_to_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty.snap index 9f50bdee..b4dbb480 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo()end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic.snap index c7263030..6f042898 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic_with_one_parameter.snap index 34a883ed..76264c9d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar,...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_one_parameter.snap index 2a343754..56292512 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_two_parameters.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_two_parameters.snap index 60df94c8..5d624d08 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_two_parameters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__local_function__dense_local_function_empty_with_two_parameters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar,baz)end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_binary_0b10101.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_binary_0b10101.snap index febbb4f6..2d3784f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_binary_0b10101.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_binary_0b10101.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0b10101 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_005.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_005.snap index c9241c1d..b45c8e91 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_005.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_005.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 5E-3 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_5.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_5.snap index da26f93d..4c1a33f2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_5.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_0_5.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0.5 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1.snap index 01d38550..eef1cd14 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_100_25.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_100_25.snap index 8f1650c3..dfeab263 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_100_25.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_100_25.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 100.25 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_123.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_123.snap index e0361d1b..d12044f4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_123.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_123.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 123 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e50.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e50.snap index 7fddff2c..4f5b67b0 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 12345E46 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e_minus50.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e_minus50.snap index c2157790..a67237b8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e_minus50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_1_2345e_minus50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1.2345E-50 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_2000_05.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_2000_05.snap index b4e19bb8..5290514d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_2000_05.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_2000_05.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 2000.05 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_nan.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_nan.snap index e6a76f17..6a87bec5 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_nan.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_nan.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (0/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_negative_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_negative_infinity.snap index c36a2120..b7b54e4d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_negative_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_negative_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (-1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_positive_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_positive_infinity.snap index 8f80f8ec..9ea0b8ee 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_positive_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_positive_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_thousand.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_thousand.snap index 8a28323f..0868cf47 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_thousand.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__number__dense_number_number_thousand.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1E3 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_with_step.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_with_step.snap index 787ec345..e546b439 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_with_step.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_with_step.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for i=start,max,step do end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_without_step.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_without_step.snap index be2cf895..46e8e4c3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_without_step.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__numeric_for__dense_numeric_for_empty_without_step.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for i=start,max do end diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier.snap index 136d9153..a89a83e4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier_in_parenthese.snap index 282edf68..bd147987 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__prefix__dense_prefix_identifier_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (foo) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__repeat__dense_repeat_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__repeat__dense_repeat_empty.snap index b4c1df86..9351310e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__repeat__dense_repeat_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__repeat__dense_repeat_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- repeat until false diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_only_letters.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_only_letters.snap index e5cc04f2..8d492c67 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_only_letters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_only_letters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'hello' diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_double_quotes.snap index 85b73752..5eb62398 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Hi"' diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_and_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_and_double_quotes.snap index 852a30e1..c274377f 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_and_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_and_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Don\'t"' diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_quotes.snap index 6d278fda..d866a639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__string__dense_string_with_single_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- "I'm cool" diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_empty.snap index 5ad851e2..dc89c148 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_single_value.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_single_value.snap index a1c6f50a..712758b2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_single_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_single_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_two_values.snap index cc5f158f..0f2a75cf 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_list_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true,false} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_mixed_table.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_mixed_table.snap index 8f3a6255..ff680010 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_mixed_table.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_mixed_table.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true,field=true,[false]=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_field_entry.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_field_entry.snap index 7bfe7fa5..0c5113c7 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_field_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_field_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {field=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_index_entry.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_index_entry.snap index ddd0579a..b0934453 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_index_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__table__dense_table_with_index_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {[false]=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_read_property.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_read_property.snap new file mode 100644 index 00000000..407c3080 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_read_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj={read name:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_write_property.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_write_property.snap new file mode 100644 index 00000000..5e6cb559 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_one_write_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj={write name:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_read_indexer_type.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_read_indexer_type.snap new file mode 100644 index 00000000..edd8a4b3 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__type_declaration__dense_type_declaration_table_with_read_indexer_type.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type StringArray={read[number]:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap index cba0a29c..fb93ac7b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- -2^2 diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_not_true.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_not_true.snap index dbab3ffa..b7d26567 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_not_true.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_not_true.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not true diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_two_unary_minus_breaks_between_them.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_two_unary_minus_breaks_between_them.snap index 300c3ecf..579d9168 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_two_unary_minus_breaks_between_them.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_two_unary_minus_breaks_between_them.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- - -a diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap index cd35c083..6d581de8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__unary__dense_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not(false or true) diff --git a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__while_statement__dense_while_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__while_statement__dense_while_statement_empty.snap index a77366b8..796ac55b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__while_statement__dense_while_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__dense__snapshots__while_statement__dense_while_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- while false do end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_empty_tuple.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_empty_tuple.snap index 078da893..0da2ca55 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_empty_tuple.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_empty_tuple.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- () diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_one_value.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_two_values.snap index 66a034d8..99976240 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__arguments__readable_arguments_tuple_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true, false) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_one_value.snap index f9724ffb..eac78db0 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo, var = false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_two_values.snap index 7d0962df..c7d6ee28 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_two_variables_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo, var = nil, false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_variable_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_variable_with_one_value.snap index 5741d614..03106479 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_variable_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__assign__readable_assign_variable_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var = false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_and_false.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_and_false.snap index bba10f62..a9a75f15 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_and_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_and_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true and false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_equal_false.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_equal_false.snap index 804f02ba..1d6cd97f 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_equal_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__binary__readable_binary_true_equal_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true == false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_assign.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_assign.snap index 73bdc599..de47f757 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_assign.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_assign.snap @@ -4,4 +4,3 @@ expression: generator.into_string() --- name = variable; (t).field = false - diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_compound_assign.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_compound_assign.snap index e39d2e37..0461fb4f 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_compound_assign.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_compound_assign.snap @@ -5,4 +5,3 @@ expression: generator.into_string() name += variable + value; (t)[field] = false - diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_function_call.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_function_call.snap index a2dfd15d..2eda132e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_function_call.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_function_call.snap @@ -5,4 +5,3 @@ expression: generator.into_string() fn(); (t)[field] += 1 - diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_local_assign.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_local_assign.snap index 93fab241..4105a49a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_local_assign.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_local_assign.snap @@ -5,4 +5,3 @@ expression: generator.into_string() local name = if condition then true else fn(); (fn)() - diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_repeat.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_repeat.snap index bffc94fc..45644a90 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_repeat.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__block__readable_block_ambiguous_function_call_from_repeat.snap @@ -5,4 +5,3 @@ expression: generator.into_string() repeat until not variable; (t).field += 1 - diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__compound_assign_statement__readable_compound_assign_statement_increment_var_by_one.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__compound_assign_statement__readable_compound_assign_statement_increment_var_by_one.snap index ad8c1d5d..2ea822db 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__compound_assign_statement__readable_compound_assign_statement_increment_var_by_one.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__compound_assign_statement__readable_compound_assign_statement_increment_var_by_one.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var += 1 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_empty.snap index c4484117..5c46a525 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_nested_do.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_nested_do.snap index e3f086e7..7e24ecb3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_nested_do.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__do_statement__readable_do_statement_nested_do.snap @@ -1,7 +1,6 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do do end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_false_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_false_value.snap index d48dfc6e..27aa2cad 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_false_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_false_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_nil_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_nil_value.snap index c39d6773..54252c1e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_nil_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_nil_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- nil diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_in_parenthese.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_value.snap index c9f6b7c9..739005bc 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_true_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_variable_arguments.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_variable_arguments.snap index f4c0c16c..302d6af4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_variable_arguments.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__expression__readable_expression_variable_arguments.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- ... diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__field__readable_field_identifier_prefix.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__field__readable_field_identifier_prefix.snap index e494d4e6..a228a5f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__field__readable_field_identifier_prefix.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__field__readable_field_identifier_prefix.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo.bar diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty.snap index b3bbfd5e..a8ffa295 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function() end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic.snap index 5019a0bb..15ab777a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(...) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_one_parameter.snap index 574cabf9..b7ae72c2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, ...) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_two_parameter.snap index 4e08bb70..1a5847a5 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_variadic_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, b, ...) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_with_two_parameter.snap index 2384f153..ed2420a2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_expr__readable_function_expr_empty_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, b) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty.snap index df583feb..d75268ad 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo() end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_field.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_field.snap index dd6bb97f..545856c9 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_field.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_field.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo.bar() end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_method.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_method.snap index e6e3ea78..71246a15 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_method.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__function_statement__readable_function_statement_empty_with_method.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo:bar() end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__generic_for__readable_generic_for_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__generic_for__readable_generic_for_empty.snap index ab1095ae..e130b900 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__generic_for__readable_generic_for_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__generic_for__readable_generic_for_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for var in true do end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty.snap index 11813e0e..5cdc124d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty.snap @@ -1,7 +1,6 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_else.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_else.snap index f3411c3a..04bc0c0d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_else.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_else.snap @@ -1,7 +1,6 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then else diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_multiple_branch.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_multiple_branch.snap index dc587353..351ffb48 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_multiple_branch.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__if_statement__readable_if_statement_empty_with_empty_multiple_branch.snap @@ -1,7 +1,6 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then elseif nil then diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__index__readable_index_identifier_prefix_with_identifier_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__index__readable_index_identifier_prefix_with_identifier_value.snap index 660c4843..5a828708 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__index__readable_index_identifier_prefix_with_identifier_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__index__readable_index_identifier_prefix_with_identifier_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo[bar] diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_break_statement.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_break_statement.snap index 920bad51..830d7831 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_break_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_break_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- break diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_continue_statement.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_continue_statement.snap index 2916ff53..13fc10b1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_continue_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_continue_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- continue diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_one_expression.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_one_expression.snap index 9099df86..37f7bc82 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_one_expression.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_one_expression.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_parentheses.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_parentheses.snap index d9880934..9289e26d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_parentheses.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_parentheses.snap @@ -1,7 +1,5 @@ --- source: src/generator/mod.rs -assertion_line: 690 expression: generator.into_string() - --- return (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_two_expressions.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_two_expressions.snap index b3f691e7..eb9c13de 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_two_expressions.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_two_expressions.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true, nil diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_without_values.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_without_values.snap index 9777b228..5470e795 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_without_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__last__readable_last_return_without_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_and_bar_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_and_bar_unassigned.snap index b53d4924..97e7ff18 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_and_bar_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_and_bar_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo, bar diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_unassigned.snap index 8e2df738..06116639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_foo_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_var_assign_to_false.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_var_assign_to_false.snap index 5d09f8e7..271ae877 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_var_assign_to_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_assign__readable_local_assign_var_assign_to_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local var = false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty.snap index a82fccf5..b0cec595 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo() end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic.snap index c37a73bf..9b1978d3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(...) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic_with_one_parameter.snap index cb325750..fe5b1cd8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar, ...) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_one_parameter.snap index 3dc50d8e..2daae732 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_two_parameters.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_two_parameters.snap index e92f22f0..41d8ba4e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_two_parameters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__local_function__readable_local_function_empty_with_two_parameters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar, baz) end diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_binary_0b10101.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_binary_0b10101.snap index febbb4f6..2d3784f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_binary_0b10101.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_binary_0b10101.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0b10101 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_005.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_005.snap index c9241c1d..b45c8e91 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_005.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_005.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 5E-3 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_5.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_5.snap index da26f93d..4c1a33f2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_5.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_0_5.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0.5 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1.snap index 01d38550..eef1cd14 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_100_25.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_100_25.snap index 8f1650c3..dfeab263 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_100_25.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_100_25.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 100.25 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_123.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_123.snap index e0361d1b..d12044f4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_123.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_123.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 123 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e50.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e50.snap index 7fddff2c..4f5b67b0 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 12345E46 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e_minus50.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e_minus50.snap index c2157790..a67237b8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e_minus50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_1_2345e_minus50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1.2345E-50 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_2000_05.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_2000_05.snap index b4e19bb8..5290514d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_2000_05.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_2000_05.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 2000.05 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_nan.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_nan.snap index e6a76f17..6a87bec5 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_nan.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_nan.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (0/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_negative_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_negative_infinity.snap index c36a2120..b7b54e4d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_negative_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_negative_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (-1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_positive_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_positive_infinity.snap index 8f80f8ec..9ea0b8ee 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_positive_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_positive_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_thousand.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_thousand.snap index 8a28323f..0868cf47 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_thousand.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__number__readable_number_number_thousand.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1E3 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier.snap index 136d9153..a89a83e4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier_in_parenthese.snap index 282edf68..bd147987 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__prefix__readable_prefix_identifier_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (foo) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__repeat__readable_repeat_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__repeat__readable_repeat_empty.snap index b4c1df86..9351310e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__repeat__readable_repeat_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__repeat__readable_repeat_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- repeat until false diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_only_letters.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_only_letters.snap index e5cc04f2..8d492c67 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_only_letters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_only_letters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'hello' diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_double_quotes.snap index 85b73752..5eb62398 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Hi"' diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_and_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_and_double_quotes.snap index 852a30e1..c274377f 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_and_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_and_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Don\'t"' diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_quotes.snap index 6d278fda..d866a639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__string__readable_string_with_single_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- "I'm cool" diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_empty.snap index 5ad851e2..dc89c148 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_single_value.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_single_value.snap index a1c6f50a..712758b2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_single_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_single_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_two_values.snap index 2f293e50..a14331d2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_list_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true, false} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_mixed_table.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_mixed_table.snap index 78faa311..a358d1aa 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_mixed_table.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_mixed_table.snap @@ -1,7 +1,6 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- { true, diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_field_entry.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_field_entry.snap index 4d5cbb26..1cb0d3fb 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_field_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_field_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {field = true} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_index_entry.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_index_entry.snap index c914c1b1..713d9276 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_index_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__table__readable_table_with_index_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {[false] = true} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_read_property.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_read_property.snap new file mode 100644 index 00000000..47733563 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_read_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj = {read name: string} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_write_property.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_write_property.snap new file mode 100644 index 00000000..67933dbb --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_one_write_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj = {write name: string} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_read_indexer_type.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_read_indexer_type.snap new file mode 100644 index 00000000..8d42c184 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__type_declaration__readable_type_declaration_table_with_read_indexer_type.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type StringArray = {read [number]: string} diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap index f8306fd8..6da8c945 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- -2 ^ 2 diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_not_true.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_not_true.snap index dbab3ffa..b7d26567 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_not_true.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_not_true.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not true diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_two_unary_minus_breaks_between_them.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_two_unary_minus_breaks_between_them.snap index 300c3ecf..579d9168 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_two_unary_minus_breaks_between_them.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_two_unary_minus_breaks_between_them.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- - -a diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap index 86e3f9fc..fb3dfcb3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__unary__readable_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not (false or true) diff --git a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__while_statement__readable_while_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__while_statement__readable_while_statement_empty.snap index a77366b8..796ac55b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__while_statement__readable_while_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__readable__snapshots__while_statement__readable_while_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- while false do end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_empty_tuple.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_empty_tuple.snap index 078da893..0da2ca55 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_empty_tuple.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_empty_tuple.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- () diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_one_value.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_two_values.snap index 66a034d8..99976240 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__arguments__token_based_arguments_tuple_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true, false) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_one_value.snap index 3dce1cd7..2eb998c4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo, var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_two_values.snap index c9dacb1d..d0666705 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_two_variables_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo, var=nil, false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_variable_with_one_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_variable_with_one_value.snap index 62b44b80..efe87089 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_variable_with_one_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__assign__token_based_assign_variable_with_one_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_and_false.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_and_false.snap index bba10f62..a9a75f15 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_and_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_and_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true and false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_equal_false.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_equal_false.snap index 2a5314b0..5499d0fa 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_equal_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__binary__token_based_binary_true_equal_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true==false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__compound_assign_statement__token_based_compound_assign_statement_increment_var_by_one.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__compound_assign_statement__token_based_compound_assign_statement_increment_var_by_one.snap index a7992614..4e65991b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__compound_assign_statement__token_based_compound_assign_statement_increment_var_by_one.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__compound_assign_statement__token_based_compound_assign_statement_increment_var_by_one.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- var+=1 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_empty.snap index c4484117..5c46a525 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_nested_do.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_nested_do.snap index 377b9f47..bc9b391a 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_nested_do.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__do_statement__token_based_do_statement_nested_do.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- do do end end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_false_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_false_value.snap index d48dfc6e..27aa2cad 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_false_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_false_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_nil_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_nil_value.snap index c39d6773..54252c1e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_nil_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_nil_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- nil diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_in_parenthese.snap index df122822..ea4137ec 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_value.snap index c9f6b7c9..739005bc 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_true_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- true diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_variable_arguments.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_variable_arguments.snap index f4c0c16c..302d6af4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_variable_arguments.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__expression__token_based_expression_variable_arguments.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- ... diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__field__token_based_field_identifier_prefix.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__field__token_based_field_identifier_prefix.snap index e494d4e6..a228a5f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__field__token_based_field_identifier_prefix.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__field__token_based_field_identifier_prefix.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo.bar diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty.snap index a8cb6880..6ea47194 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function()end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic.snap index c2fdf94e..f9871a52 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_one_parameter.snap index 557ef4de..a1ea7b88 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, ...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_two_parameter.snap index 36114ae3..1f0c5185 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_variadic_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, b, ...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_with_two_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_with_two_parameter.snap index a1b760f4..de31d9f8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_with_two_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_expr__token_based_function_expr_empty_with_two_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function(a, b)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty.snap index ba72e293..ee4fbcc8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo()end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_field.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_field.snap index 5d23623e..13b28ed1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_field.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_field.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo.bar()end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_method.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_method.snap index 7ffffcb3..d83fc359 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_method.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__function_statement__token_based_function_statement_empty_with_method.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- function foo:bar()end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__generic_for__token_based_generic_for_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__generic_for__token_based_generic_for_empty.snap index ab1095ae..e130b900 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__generic_for__token_based_generic_for_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__generic_for__token_based_generic_for_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for var in true do end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty.snap index 2c836f57..f7107532 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_else.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_else.snap index 7c2dc22b..15b39817 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_else.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_else.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then else end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_multiple_branch.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_multiple_branch.snap index 58ada28b..b697aa94 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_multiple_branch.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__if_statement__token_based_if_statement_empty_with_empty_multiple_branch.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- if false then elseif nil then elseif false then end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__index__token_based_index_identifier_prefix_with_identifier_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__index__token_based_index_identifier_prefix_with_identifier_value.snap index 660c4843..5a828708 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__index__token_based_index_identifier_prefix_with_identifier_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__index__token_based_index_identifier_prefix_with_identifier_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo[bar] diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_break_statement.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_break_statement.snap index 920bad51..830d7831 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_break_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_break_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- break diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_continue_statement.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_continue_statement.snap index 2916ff53..13fc10b1 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_continue_statement.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_continue_statement.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- continue diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_one_expression.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_one_expression.snap index 9099df86..37f7bc82 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_one_expression.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_one_expression.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_parentheses.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_parentheses.snap index 8136ab98..9289e26d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_parentheses.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_parentheses.snap @@ -1,7 +1,5 @@ --- source: src/generator/mod.rs -assertion_line: 691 expression: generator.into_string() - --- return (true) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_two_expressions.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_two_expressions.snap index b3f691e7..eb9c13de 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_two_expressions.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_two_expressions.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- return true, nil diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_without_values.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_without_values.snap index d217b92b..5470e795 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_without_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__last__token_based_last_return_without_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- -return +return diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_and_bar_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_and_bar_unassigned.snap index b53d4924..97e7ff18 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_and_bar_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_and_bar_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo, bar diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_unassigned.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_unassigned.snap index 8e2df738..06116639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_unassigned.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_foo_unassigned.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local foo diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_var_assign_to_false.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_var_assign_to_false.snap index 525588e1..8e2b5204 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_var_assign_to_false.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_assign__token_based_local_assign_var_assign_to_false.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local var=false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty.snap index 9f50bdee..b4dbb480 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo()end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic.snap index c7263030..6f042898 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic_with_one_parameter.snap index 398170d9..12b68ad7 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_variadic_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar, ...)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_one_parameter.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_one_parameter.snap index 2a343754..56292512 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_one_parameter.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_one_parameter.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_two_parameters.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_two_parameters.snap index 2d39c8ee..ab37f1ac 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_two_parameters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__local_function__token_based_local_function_empty_with_two_parameters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- local function foo(bar, baz)end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_binary_0b10101.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_binary_0b10101.snap index febbb4f6..2d3784f3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_binary_0b10101.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_binary_0b10101.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0b10101 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_005.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_005.snap index c9241c1d..b45c8e91 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_005.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_005.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 5E-3 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_5.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_5.snap index da26f93d..4c1a33f2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_5.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_0_5.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 0.5 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1.snap index 01d38550..eef1cd14 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_100_25.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_100_25.snap index 8f1650c3..dfeab263 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_100_25.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_100_25.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 100.25 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_123.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_123.snap index e0361d1b..d12044f4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_123.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_123.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 123 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e50.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e50.snap index 7fddff2c..4f5b67b0 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 12345E46 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e_minus50.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e_minus50.snap index c2157790..a67237b8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e_minus50.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_1_2345e_minus50.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1.2345E-50 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_2000_05.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_2000_05.snap index b4e19bb8..5290514d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_2000_05.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_2000_05.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 2000.05 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_nan.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_nan.snap index e6a76f17..6a87bec5 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_nan.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_nan.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (0/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_negative_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_negative_infinity.snap index c36a2120..b7b54e4d 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_negative_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_negative_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (-1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_positive_infinity.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_positive_infinity.snap index 8f80f8ec..9ea0b8ee 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_positive_infinity.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_positive_infinity.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (1/0) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_thousand.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_thousand.snap index 8a28323f..0868cf47 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_thousand.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__number__token_based_number_number_thousand.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 1E3 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_with_step.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_with_step.snap index 787ec345..e546b439 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_with_step.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_with_step.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for i=start,max,step do end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_without_step.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_without_step.snap index be2cf895..46e8e4c3 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_without_step.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__numeric_for__token_based_numeric_for_empty_without_step.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- for i=start,max do end diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier.snap index 136d9153..a89a83e4 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- foo diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier_in_parenthese.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier_in_parenthese.snap index 282edf68..bd147987 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier_in_parenthese.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__prefix__token_based_prefix_identifier_in_parenthese.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- (foo) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__repeat__token_based_repeat_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__repeat__token_based_repeat_empty.snap index b4c1df86..9351310e 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__repeat__token_based_repeat_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__repeat__token_based_repeat_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- repeat until false diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_only_letters.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_only_letters.snap index e5cc04f2..8d492c67 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_only_letters.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_only_letters.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'hello' diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_double_quotes.snap index 85b73752..5eb62398 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Hi"' diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_and_double_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_and_double_quotes.snap index 852a30e1..c274377f 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_and_double_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_and_double_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- 'Say: "Don\'t"' diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_quotes.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_quotes.snap index 6d278fda..d866a639 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_quotes.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__string__token_based_string_with_single_quotes.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- "I'm cool" diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_empty.snap index 5ad851e2..dc89c148 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_single_value.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_single_value.snap index a1c6f50a..712758b2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_single_value.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_single_value.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_two_values.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_two_values.snap index 2f293e50..a14331d2 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_two_values.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_list_with_two_values.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true, false} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_mixed_table.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_mixed_table.snap index 9a0b465e..44778864 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_mixed_table.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_mixed_table.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {true, field=true, [false]=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_field_entry.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_field_entry.snap index 7bfe7fa5..0c5113c7 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_field_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_field_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {field=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_index_entry.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_index_entry.snap index ddd0579a..b0934453 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_index_entry.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__table__token_based_table_with_index_entry.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- {[false]=true} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_read_property.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_read_property.snap new file mode 100644 index 00000000..407c3080 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_read_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj={read name:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_write_property.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_write_property.snap new file mode 100644 index 00000000..5e6cb559 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_one_write_property.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type Obj={write name:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_read_indexer_type.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_read_indexer_type.snap new file mode 100644 index 00000000..edd8a4b3 --- /dev/null +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__type_declaration__token_based_type_declaration_table_with_read_indexer_type.snap @@ -0,0 +1,5 @@ +--- +source: src/generator/mod.rs +expression: generator.into_string() +--- +type StringArray={read[number]:string} diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap index cba0a29c..fb93ac7b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_does_not_wrap_in_parens_if_an_inner_binary_has_higher_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- -2^2 diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_not_true.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_not_true.snap index dbab3ffa..b7d26567 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_not_true.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_not_true.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not true diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_two_unary_minus_breaks_between_them.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_two_unary_minus_breaks_between_them.snap index 300c3ecf..579d9168 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_two_unary_minus_breaks_between_them.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_two_unary_minus_breaks_between_them.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- - -a diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap index cd35c083..6d581de8 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__unary__token_based_unary_wraps_in_parens_if_an_inner_binary_has_lower_precedence.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- not(false or true) diff --git a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__while_statement__token_based_while_statement_empty.snap b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__while_statement__token_based_while_statement_empty.snap index a77366b8..796ac55b 100644 --- a/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__while_statement__token_based_while_statement_empty.snap +++ b/src/generator/snapshots/darklua_core__generator__test__token_based__snapshots__while_statement__token_based_while_statement_empty.snap @@ -1,6 +1,5 @@ --- source: src/generator/mod.rs expression: generator.into_string() - --- while false do end diff --git a/src/generator/snapshots/darklua_core__generator__token_based__test__inserts_a_new_line_after_custom_added_comments.snap b/src/generator/snapshots/darklua_core__generator__token_based__test__inserts_a_new_line_after_custom_added_comments.snap index fcb96504..30bf4a8d 100644 --- a/src/generator/snapshots/darklua_core__generator__token_based__test__inserts_a_new_line_after_custom_added_comments.snap +++ b/src/generator/snapshots/darklua_core__generator__token_based__test__inserts_a_new_line_after_custom_added_comments.snap @@ -1,7 +1,6 @@ --- source: src/generator/token_based.rs expression: output - --- call(a--new comment ,b--new comment diff --git a/src/generator/token_based.rs b/src/generator/token_based.rs index d57f9409..ecc8e325 100644 --- a/src/generator/token_based.rs +++ b/src/generator/token_based.rs @@ -800,10 +800,17 @@ impl<'a> TokenBasedLuaGenerator<'a> { for (i, property) in table_type.iter_entries().enumerate() { match property { TableEntryType::Property(property) => { + self.write_table_property_modifier( + property.get_modifier(), + property + .get_tokens() + .and_then(|tokens| tokens.modifier.as_ref()), + ); + self.write_identifier(property.get_identifier()); - if let Some(colon) = property.get_token() { - self.write_token(colon); + if let Some(tokens) = property.get_tokens() { + self.write_token(&tokens.colon); } else { self.write_symbol(":"); } @@ -842,11 +849,35 @@ impl<'a> TokenBasedLuaGenerator<'a> { self.write_token(&tokens.closing_brace); } + fn write_table_property_modifier( + &mut self, + modifier: Option<&TablePropertyModifier>, + token: Option<&Token>, + ) { + if let Some(modifier) = modifier { + if let Some(token) = token { + self.write_token(token); + } else { + match modifier { + TablePropertyModifier::Read => self.write_symbol("read"), + TablePropertyModifier::Write => self.write_symbol("write"), + } + } + } + } + fn write_table_indexer_type_with_tokens( &mut self, indexer_type: &TableIndexerType, tokens: &TableIndexTypeTokens, ) { + self.write_table_property_modifier( + indexer_type.get_modifier(), + indexer_type + .get_tokens() + .and_then(|tokens| tokens.modifier.as_ref()), + ); + self.write_token(&tokens.opening_bracket); let key_type = indexer_type.get_key_type(); @@ -874,6 +905,13 @@ impl<'a> TokenBasedLuaGenerator<'a> { property: &TableLiteralPropertyType, tokens: &TableIndexTypeTokens, ) { + self.write_table_property_modifier( + property.get_modifier(), + property + .get_tokens() + .and_then(|tokens| tokens.modifier.as_ref()), + ); + self.write_token(&tokens.opening_bracket); self.write_string_type(property.get_string()); self.write_token(&tokens.closing_bracket); @@ -1501,6 +1539,7 @@ impl<'a> TokenBasedLuaGenerator<'a> { opening_bracket: Token::from_content("["), closing_bracket: Token::from_content("]"), colon: Token::from_content(":"), + modifier: None, } } diff --git a/src/lib.rs b/src/lib.rs index 8793b6c3..d469338c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,7 +13,7 @@ //! //! ```toml //! [dependencies] -//! darklua = "0.17.2" +//! darklua = "0.17.3" //! ``` //! //! This library is designed for developers who want to integrate Lua/Luau transformation capabilities diff --git a/src/nodes/expressions/snapshots/darklua_core__nodes__expressions__test__expression_from_floats__f64_0.snap b/src/nodes/expressions/snapshots/darklua_core__nodes__expressions__test__expression_from_floats__f64_0.snap index 2ecd1a16..35e606e4 100644 --- a/src/nodes/expressions/snapshots/darklua_core__nodes__expressions__test__expression_from_floats__f64_0.snap +++ b/src/nodes/expressions/snapshots/darklua_core__nodes__expressions__test__expression_from_floats__f64_0.snap @@ -1,6 +1,5 @@ --- source: src/nodes/expressions/mod.rs -assertion_line: 332 expression: result --- Number( diff --git a/src/nodes/types/table.rs b/src/nodes/types/table.rs index b80b13da..16fe6ffc 100644 --- a/src/nodes/types/table.rs +++ b/src/nodes/types/table.rs @@ -7,6 +7,7 @@ use super::{StringType, Type}; pub struct TableIndexerType { key_type: Box, value_type: Box, + modifier: Option, tokens: Option, } @@ -16,10 +17,42 @@ impl TableIndexerType { Self { key_type: Box::new(key_type.into()), value_type: Box::new(value_type.into()), + modifier: None, tokens: None, } } + /// Associates a modifier with this property. + pub fn with_modifier(mut self, modifier: TablePropertyModifier) -> Self { + self.set_modifier(modifier); + self + } + + /// Sets the modifier for this property. + pub fn set_modifier(&mut self, modifier: TablePropertyModifier) { + if self.modifier.as_ref() == Some(&modifier) { + return; + } + + self.modifier = Some(modifier); + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; + } + } + + /// Removes the modifier for this property. + pub fn remove_modifier(&mut self) { + self.modifier = None; + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; + } + } + + /// Returns the modifier for this property, if any. + pub fn get_modifier(&self) -> Option<&TablePropertyModifier> { + self.modifier.as_ref() + } + /// Returns the key type of this indexer. #[inline] pub fn get_key_type(&self) -> &Type { @@ -74,10 +107,15 @@ pub struct TableIndexTypeTokens { pub closing_bracket: Token, /// The colon token. pub colon: Token, + /// The modifier token. + pub modifier: Option, } impl TableIndexTypeTokens { - super::impl_token_fns!(target = [opening_bracket, closing_bracket, colon]); + super::impl_token_fns!( + target = [opening_bracket, closing_bracket, colon] + iter = [modifier] + ); } /// Represents a named property in a table type annotation (i.e. `name: Type`). @@ -85,7 +123,24 @@ impl TableIndexTypeTokens { pub struct TablePropertyType { property: Identifier, r#type: Box, - token: Option, + modifier: Option, + tokens: Option, +} + +/// Contains the tokens that define a property's syntax. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct TablePropertyTypeTokens { + /// The colon token. + pub colon: Token, + /// The modifier token. + pub modifier: Option, +} + +impl TablePropertyTypeTokens { + super::impl_token_fns!( + target = [colon] + iter = [modifier] + ); } impl TablePropertyType { @@ -94,10 +149,42 @@ impl TablePropertyType { Self { property: property.into(), r#type: Box::new(r#type.into()), - token: None, + modifier: None, + tokens: None, + } + } + + /// Associates a modifier with this property. + pub fn with_modifier(mut self, modifier: TablePropertyModifier) -> Self { + self.set_modifier(modifier); + self + } + + /// Sets the modifier for this property. + pub fn set_modifier(&mut self, modifier: TablePropertyModifier) { + if self.modifier.as_ref() == Some(&modifier) { + return; + } + + self.modifier = Some(modifier); + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; } } + /// Removes the modifier for this property. + pub fn remove_modifier(&mut self) { + self.modifier = None; + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; + } + } + + /// Returns the modifier for this property, if any. + pub fn get_modifier(&self) -> Option<&TablePropertyModifier> { + self.modifier.as_ref() + } + /// Returns the identifier of this property. #[inline] pub fn get_identifier(&self) -> &Identifier { @@ -123,24 +210,24 @@ impl TablePropertyType { } /// Associates a token for the colon with this property. - pub fn with_token(mut self, token: Token) -> Self { - self.token = Some(token); + pub fn with_tokens(mut self, tokens: TablePropertyTypeTokens) -> Self { + self.tokens = Some(tokens); self } /// Sets the token for the colon associated with this property. #[inline] - pub fn set_token(&mut self, token: Token) { - self.token = Some(token); + pub fn set_tokens(&mut self, tokens: TablePropertyTypeTokens) { + self.tokens = Some(tokens); } /// Returns the token for the colon associated with this property, if any. #[inline] - pub fn get_token(&self) -> Option<&Token> { - self.token.as_ref() + pub fn get_tokens(&self) -> Option<&TablePropertyTypeTokens> { + self.tokens.as_ref() } - super::impl_token_fns!(target = [property] iter = [token]); + super::impl_token_fns!(target = [property] iter = [tokens]); } /// Represents a string literal property in a table type annotation (i.e. `["key"]: Type`). @@ -148,6 +235,7 @@ impl TablePropertyType { pub struct TableLiteralPropertyType { string: StringType, r#type: Box, + modifier: Option, tokens: Option, } @@ -157,10 +245,42 @@ impl TableLiteralPropertyType { Self { string, r#type: Box::new(r#type.into()), + modifier: None, tokens: None, } } + /// Associates a modifier with this property. + pub fn with_modifier(mut self, modifier: TablePropertyModifier) -> Self { + self.set_modifier(modifier); + self + } + + /// Sets the modifier for this property. + pub fn set_modifier(&mut self, modifier: TablePropertyModifier) { + if self.modifier.as_ref() == Some(&modifier) { + return; + } + + self.modifier = Some(modifier); + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; + } + } + + /// Removes the modifier for this property. + pub fn remove_modifier(&mut self) { + self.modifier = None; + if let Some(tokens) = self.tokens.as_mut() { + tokens.modifier = None; + } + } + + /// Returns the modifier for this property, if any. + pub fn get_modifier(&self) -> Option<&TablePropertyModifier> { + self.modifier.as_ref() + } + /// Returns the string key of this property. #[inline] pub fn get_string(&self) -> &StringType { @@ -206,6 +326,13 @@ impl TableLiteralPropertyType { super::impl_token_fns!(target = [string] iter = [tokens]); } +/// Represents an entry in a table type annotation. +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum TablePropertyModifier { + Read, + Write, +} + /// Represents an entry in a table type annotation. #[derive(Clone, Debug, PartialEq, Eq)] pub enum TableEntryType { @@ -218,6 +345,43 @@ pub enum TableEntryType { } impl TableEntryType { + /// Associates a modifier with this property. + pub fn with_modifier(mut self, modifier: TablePropertyModifier) -> Self { + match &mut self { + Self::Property(property) => property.set_modifier(modifier), + Self::Literal(literal) => literal.set_modifier(modifier), + Self::Indexer(indexer) => indexer.set_modifier(modifier), + } + self + } + + /// Sets the modifier for this property. + pub fn set_modifier(&mut self, modifier: TablePropertyModifier) { + match self { + Self::Property(property) => property.set_modifier(modifier), + Self::Literal(literal) => literal.set_modifier(modifier), + Self::Indexer(indexer) => indexer.set_modifier(modifier), + } + } + + /// Removes the modifier for this property. + pub fn remove_modifier(&mut self) { + match self { + Self::Property(property) => property.remove_modifier(), + Self::Literal(literal) => literal.remove_modifier(), + Self::Indexer(indexer) => indexer.remove_modifier(), + } + } + + /// Returns the modifier for this property, if any. + pub fn get_modifier(&self) -> Option<&TablePropertyModifier> { + match self { + Self::Property(property) => property.get_modifier(), + Self::Literal(literal) => literal.get_modifier(), + Self::Indexer(indexer) => indexer.get_modifier(), + } + } + /// Removes all comments from this table entry. pub fn clear_comments(&mut self) { match self { @@ -335,6 +499,7 @@ impl TableType { .push(TableEntryType::Literal(TableLiteralPropertyType { string: string_type, r#type: indexer_type.value_type, + modifier: indexer_type.modifier, tokens: indexer_type.tokens, })); None diff --git a/src/parser.rs b/src/parser.rs index 0e626b48..0d75c15b 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -2218,7 +2218,10 @@ mod test { create_identifier("key", 11, 0), TypeName::new(create_identifier("string", 16, 1)), ) - .with_token(spaced_token(14, 15)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(14, 15), + modifier: None, + }) ) .with_tokens(TableTypeTokens { opening_brace: spaced_token(9, 10), @@ -2230,6 +2233,54 @@ mod test { equal: spaced_token(7, 8), export: None, }), + type_declaration_to_table_with_one_read_prop("type T = { read key: string }") => TypeDeclarationStatement::new( + create_identifier("T", 5, 1), + TableType::default() + .with_property( + TablePropertyType::new( + create_identifier("key", 16, 0), + TypeName::new(create_identifier("string", 21, 1)), + ) + .with_modifier(TablePropertyModifier::Read) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(19, 20), + modifier: Some(spaced_token(11, 15)), + }) + ) + .with_tokens(TableTypeTokens { + opening_brace: spaced_token(9, 10), + closing_brace: token_at_first_line(28, 29), + separators: Vec::new(), + }) + ).with_tokens(TypeDeclarationTokens { + r#type: spaced_token(0, 4), + equal: spaced_token(7, 8), + export: None, + }), + type_declaration_to_table_with_one_write_prop("type T = { write key: string }") => TypeDeclarationStatement::new( + create_identifier("T", 5, 1), + TableType::default() + .with_property( + TablePropertyType::new( + create_identifier("key", 17, 0), + TypeName::new(create_identifier("string", 22, 1)), + ) + .with_modifier(TablePropertyModifier::Write) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(20, 21), + modifier: Some(spaced_token(11, 16)), + }) + ) + .with_tokens(TableTypeTokens { + opening_brace: spaced_token(9, 10), + closing_brace: token_at_first_line(29, 30), + separators: Vec::new(), + }) + ).with_tokens(TypeDeclarationTokens { + r#type: spaced_token(0, 4), + equal: spaced_token(7, 8), + export: None, + }), type_declaration_to_table_with_one_prop_and_separator("type T = { key: string, }") => TypeDeclarationStatement::new( create_identifier("T", 5, 1), TableType::default() @@ -2238,7 +2289,10 @@ mod test { create_identifier("key", 11, 0), TypeName::new(create_identifier("string", 16, 0)), ) - .with_token(spaced_token(14, 15)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(14, 15), + modifier: None, + }) ) .with_tokens(TableTypeTokens { opening_brace: spaced_token(9, 10), @@ -2258,14 +2312,20 @@ mod test { create_identifier("key", 11, 0), TypeName::new(create_identifier("string", 16, 0)), ) - .with_token(spaced_token(14, 15)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(14, 15), + modifier: None, + }) ) .with_property( TablePropertyType::new( create_identifier("key2", 24, 1), Type::Nil(Some(spaced_token(31, 34))) ) - .with_token(spaced_token(29, 30)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(29, 30), + modifier: None, + }) ) .with_tokens(TableTypeTokens { opening_brace: spaced_token(9, 10), @@ -2277,6 +2337,41 @@ mod test { equal: spaced_token(7, 8), export: None, }), + type_declaration_to_table_with_two_props_and_modifiers("type T = { read key: string, write key2 : nil }") => TypeDeclarationStatement::new( + create_identifier("T", 5, 1), + TableType::default() + .with_property( + TablePropertyType::new( + create_identifier("key", 16, 0), + TypeName::new(create_identifier("string", 21, 0)), + ) + .with_modifier(TablePropertyModifier::Read) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(19, 20), + modifier: Some(spaced_token(11, 15)), + }) + ) + .with_property( + TablePropertyType::new( + create_identifier("key2", 35, 1), + Type::Nil(Some(spaced_token(42, 45))) + ) + .with_modifier(TablePropertyModifier::Write) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(40, 41), + modifier: Some(spaced_token(29, 34)), + }) + ) + .with_tokens(TableTypeTokens { + opening_brace: spaced_token(9, 10), + closing_brace: token_at_first_line(46, 47), + separators: vec![spaced_token(27, 28)], + }) + ).with_tokens(TypeDeclarationTokens { + r#type: spaced_token(0, 4), + equal: spaced_token(7, 8), + export: None, + }), type_declaration_to_table_with_two_props_using_semicolon("type T = { key: string; key2 : nil }") => TypeDeclarationStatement::new( create_identifier("T", 5, 1), TableType::default() @@ -2285,14 +2380,20 @@ mod test { create_identifier("key", 11, 0), TypeName::new(create_identifier("string", 16, 0)), ) - .with_token(spaced_token(14, 15)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(14, 15), + modifier: None, + }) ) .with_property( TablePropertyType::new( create_identifier("key2", 24, 1), Type::Nil(Some(spaced_token(31, 34))) ) - .with_token(spaced_token(29, 30)) + .with_tokens(TablePropertyTypeTokens { + colon: spaced_token(29, 30), + modifier: None, + }) ) .with_tokens(TableTypeTokens { opening_brace: spaced_token(9, 10), @@ -2316,13 +2417,17 @@ mod test { opening_bracket: token_at_first_line(11, 12), closing_bracket: token_at_first_line(18, 19), colon: spaced_token(19, 20), + modifier: None, }) ) .with_property( TablePropertyType::new( create_identifier("n", 29, 0), TypeName::new(create_identifier("number", 32, 1)) - ).with_token(spaced_token(30, 31)) + ).with_tokens(TablePropertyTypeTokens { + colon: spaced_token(30, 31), + modifier: None, + }) ) .with_tokens(TableTypeTokens { opening_brace: spaced_token(9, 10), @@ -2341,7 +2446,10 @@ mod test { TablePropertyType::new( create_identifier("n", 11, 0), TypeName::new(create_identifier("number", 14, 0)) - ).with_token(spaced_token(12, 13)) + ).with_tokens(TablePropertyTypeTokens { + colon: spaced_token(12, 13), + modifier: None, + }) ) .with_indexer_type( TableIndexerType::new( @@ -2352,6 +2460,7 @@ mod test { opening_bracket: token_at_first_line(22, 23), closing_bracket: token_at_first_line(29, 30), colon: spaced_token(30, 31), + modifier: None, }) ) .with_tokens(TableTypeTokens { @@ -2377,6 +2486,7 @@ mod test { opening_bracket: token_at_first_line(11, 12), closing_bracket: token_at_first_line(17, 18), colon: spaced_token(18, 19), + modifier: None, }) ) .with_tokens(TableTypeTokens { @@ -2401,6 +2511,7 @@ mod test { opening_bracket: token_at_first_line(11, 12), closing_bracket: token_at_first_line(18, 19), colon: spaced_token(19, 20), + modifier: None, }) ) .with_tokens(TableTypeTokens { @@ -2413,6 +2524,58 @@ mod test { equal: spaced_token(7, 8), export: None, }), + type_declaration_to_table_with_read_indexer_type("type T = { read [string]: boolean }") => TypeDeclarationStatement::new( + create_identifier("T", 5, 1), + TableType::default() + .with_indexer_type( + TableIndexerType::new( + TypeName::new(create_identifier("string", 17, 0)), + TypeName::new(create_identifier("boolean", 26, 1)), + ) + .with_modifier(TablePropertyModifier::Read) + .with_tokens(TableIndexTypeTokens { + opening_bracket: token_at_first_line(16, 17), + closing_bracket: token_at_first_line(23, 24), + colon: spaced_token(24, 25), + modifier: Some(spaced_token(11, 15)), + }) + ) + .with_tokens(TableTypeTokens { + opening_brace: spaced_token(9, 10), + closing_brace: token_at_first_line(34, 35), + separators: Vec::new(), + }) + ).with_tokens(TypeDeclarationTokens { + r#type: spaced_token(0, 4), + equal: spaced_token(7, 8), + export: None, + }), + type_declaration_to_table_with_write_indexer_type("type T = { write [string]: boolean }") => TypeDeclarationStatement::new( + create_identifier("T", 5, 1), + TableType::default() + .with_indexer_type( + TableIndexerType::new( + TypeName::new(create_identifier("string", 18, 0)), + TypeName::new(create_identifier("boolean", 27, 1)), + ) + .with_modifier(TablePropertyModifier::Write) + .with_tokens(TableIndexTypeTokens { + opening_bracket: token_at_first_line(17, 18), + closing_bracket: token_at_first_line(24, 25), + colon: spaced_token(25, 26), + modifier: Some(spaced_token(11, 16)), + }) + ) + .with_tokens(TableTypeTokens { + opening_brace: spaced_token(9, 10), + closing_brace: token_at_first_line(35, 36), + separators: Vec::new(), + }) + ).with_tokens(TypeDeclarationTokens { + r#type: spaced_token(0, 4), + equal: spaced_token(7, 8), + export: None, + }), type_declaration_to_type_of_expression("type T = typeof( nil )") => TypeDeclarationStatement::new( create_identifier("T", 5, 1), ExpressionType::new(Expression::Nil(Some(spaced_token(17, 20)))) diff --git a/src/process/evaluator/lua_value.rs b/src/process/evaluator/lua_value.rs index e1ea935d..72af2abf 100644 --- a/src/process/evaluator/lua_value.rs +++ b/src/process/evaluator/lua_value.rs @@ -1,7 +1,7 @@ use crate::nodes::{Expression, NumberExpression, StringExpression}; /// Represents an evaluated Expression result. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, Default, PartialEq)] pub enum LuaValue { False, Function, @@ -10,6 +10,7 @@ pub enum LuaValue { String(Vec), Table, True, + #[default] Unknown, } @@ -126,12 +127,6 @@ impl LuaValue { } } -impl Default for LuaValue { - fn default() -> Self { - Self::Unknown - } -} - impl From for LuaValue { fn from(value: bool) -> Self { if value { diff --git a/src/rules/append_text_comment.rs b/src/rules/append_text_comment.rs index bdc48463..a88bbde9 100644 --- a/src/rules/append_text_comment.rs +++ b/src/rules/append_text_comment.rs @@ -176,21 +176,17 @@ impl RuleConfiguration for AppendTextComment { } } -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq)] enum TextContent { + #[default] None, Value(String), FilePath(PathBuf), } -impl Default for TextContent { - fn default() -> Self { - Self::None - } -} - -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq)] enum AppendLocation { + #[default] Start, End, } @@ -209,12 +205,6 @@ impl AppendLocation { } } -impl Default for AppendLocation { - fn default() -> Self { - Self::Start - } -} - #[cfg(test)] mod test { use super::*; @@ -226,14 +216,25 @@ mod test { fn serialize_rule_with_text() { let rule: Box = Box::new(AppendTextComment::new("content")); - assert_json_snapshot!("append_text_comment_with_text", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "append_text_comment", + "text": "content" + } + "###); } #[test] fn serialize_rule_with_text_at_end() { let rule: Box = Box::new(AppendTextComment::new("content").at_end()); - assert_json_snapshot!("append_text_comment_with_text_at_end", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "append_text_comment", + "location": "end", + "text": "content" + } + "###); } #[test] @@ -245,7 +246,7 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } #[test] @@ -257,6 +258,6 @@ mod test { location: 'oops', }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected value for field 'location': invalid value `oops` (must be `start` or `end`)"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected value for field 'location': invalid value `oops` (must be `start` or `end`) at line 1 column 1"); } } diff --git a/src/rules/call_parens.rs b/src/rules/call_parens.rs index 39f05721..c7850e67 100644 --- a/src/rules/call_parens.rs +++ b/src/rules/call_parens.rs @@ -84,7 +84,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_function_call_parens", rule); + assert_json_snapshot!(rule, @r###""remove_function_call_parens""###); } #[test] @@ -95,6 +95,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/compute_expression.rs b/src/rules/compute_expression.rs index 33a3529d..1c85b804 100644 --- a/src/rules/compute_expression.rs +++ b/src/rules/compute_expression.rs @@ -157,6 +157,6 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_compute_expression", rule); + assert_json_snapshot!(rule, @r###""compute_expression""###); } } diff --git a/src/rules/convert_index_to_field.rs b/src/rules/convert_index_to_field.rs index 5f3452eb..2b80c036 100644 --- a/src/rules/convert_index_to_field.rs +++ b/src/rules/convert_index_to_field.rs @@ -130,7 +130,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_convert_index_to_field", rule); + assert_json_snapshot!(rule, @r###""convert_index_to_field""###); } #[test] @@ -141,6 +141,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/convert_luau_number.rs b/src/rules/convert_luau_number.rs index e6892f2c..0cbff0b4 100644 --- a/src/rules/convert_luau_number.rs +++ b/src/rules/convert_luau_number.rs @@ -92,7 +92,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_convert_luau_number", rule); + assert_json_snapshot!(rule, @r###""convert_luau_number""###); } #[test] @@ -103,6 +103,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/convert_require/mod.rs b/src/rules/convert_require/mod.rs index 0cac3c3f..74fb1792 100644 --- a/src/rules/convert_require/mod.rs +++ b/src/rules/convert_require/mod.rs @@ -348,9 +348,9 @@ mod test { target: 'rblox', }"#, ); - pretty_assertions::assert_eq!( + insta::assert_snapshot!( result.unwrap_err().to_string(), - "unexpected value for field 'target': invalid require mode name `rblox`" + @"unexpected value for field 'target': invalid require mode name `rblox` at line 1 column 1" ); } @@ -364,6 +364,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/convert_require/roblox_index_style.rs b/src/rules/convert_require/roblox_index_style.rs index d49eaea8..003064d1 100644 --- a/src/rules/convert_require/roblox_index_style.rs +++ b/src/rules/convert_require/roblox_index_style.rs @@ -6,10 +6,11 @@ use crate::process::utils::is_valid_identifier; use std::str::FromStr; /// Represents the different styles of indexing in Roblox. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "snake_case", tag = "name")] pub enum RobloxIndexStyle { /// Uses `:FindFirstChild(name)` calls to access child Instances. + #[default] FindFirstChild, /// Uses `:WaitForChild(name)` calls to access child Instances. WaitForChild, @@ -17,12 +18,6 @@ pub enum RobloxIndexStyle { Property, } -impl Default for RobloxIndexStyle { - fn default() -> Self { - Self::FindFirstChild - } -} - impl RobloxIndexStyle { pub(crate) fn index(&self, instance: Prefix, child_name: &str) -> Prefix { let child_name = if child_name.ends_with(".lua") { diff --git a/src/rules/convert_square_root_call.rs b/src/rules/convert_square_root_call.rs index a65bc503..1d99dbd4 100644 --- a/src/rules/convert_square_root_call.rs +++ b/src/rules/convert_square_root_call.rs @@ -148,6 +148,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/empty_do.rs b/src/rules/empty_do.rs index 48914d7a..8d6caeec 100644 --- a/src/rules/empty_do.rs +++ b/src/rules/empty_do.rs @@ -111,7 +111,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_empty_do", rule); + assert_json_snapshot!(rule, @r###""remove_empty_do""###); } #[test] @@ -122,6 +122,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/filter_early_return.rs b/src/rules/filter_early_return.rs index 4c30f7ef..63fce6b0 100644 --- a/src/rules/filter_early_return.rs +++ b/src/rules/filter_early_return.rs @@ -96,7 +96,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_filter_after_early_return", rule); + assert_json_snapshot!(rule, @r###""filter_after_early_return""###); } #[test] @@ -107,6 +107,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/global_function_to_assign.rs b/src/rules/global_function_to_assign.rs index 90c410a9..7daff6e6 100644 --- a/src/rules/global_function_to_assign.rs +++ b/src/rules/global_function_to_assign.rs @@ -124,6 +124,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/group_local.rs b/src/rules/group_local.rs index 37fbab41..7e17de20 100644 --- a/src/rules/group_local.rs +++ b/src/rules/group_local.rs @@ -141,6 +141,6 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_group_local_assignment", rule); + assert_json_snapshot!(rule, @r###""group_local_assignment""###); } } diff --git a/src/rules/inject_value.rs b/src/rules/inject_value.rs index 1a77b311..9dac2589 100644 --- a/src/rules/inject_value.rs +++ b/src/rules/inject_value.rs @@ -164,7 +164,7 @@ impl RuleConfiguration for InjectGlobalValue { verify_property_collisions(&properties, &["value", "default_value"])?; let mut default_value_expected = None; - let mut has_default_value = false; + let mut default_value_expression: Option = None; self.original_properties = properties.clone(); @@ -181,9 +181,8 @@ impl RuleConfiguration for InjectGlobalValue { } } "default_value" => { - has_default_value = true; - if let Some(value) = value.into_expression() { - self.value = value + if let Some(expr) = value.into_expression() { + default_value_expression = Some(expr); } else { return Err(RuleConfigurationError::UnexpectedValueType(key)); } @@ -234,8 +233,10 @@ impl RuleConfiguration for InjectGlobalValue { } } - if !has_default_value { - if let Some(variable_name) = default_value_expected { + if let Some(variable_name) = default_value_expected { + if let Some(expr) = default_value_expression { + self.value = expr; + } else { log::warn!( "environment variable `{}` is not defined. The rule `{}` will use `nil`", &variable_name, @@ -278,7 +279,7 @@ mod test { }"#, ); - insta::assert_snapshot!(result.unwrap_err().to_string(), @"missing required field 'identifier'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"missing required field 'identifier' at line 1 column 1"); } #[test] @@ -292,7 +293,7 @@ mod test { }"#, ); - insta::assert_snapshot!(result.unwrap_err().to_string(), @"the fields `value` and `env` cannot be defined together"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"the fields `value` and `env` cannot be defined together at line 1 column 1"); } #[test] @@ -306,63 +307,105 @@ mod test { }"#, ); - insta::assert_snapshot!(result.unwrap_err().to_string(), @"the fields `value` and `default_value` cannot be defined together"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"the fields `value` and `default_value` cannot be defined together at line 1 column 1"); } #[test] fn deserialize_from_string_notation_should_error() { let result = json5::from_str::>("'inject_global_value'"); - insta::assert_snapshot!(result.unwrap_err().to_string(), @"missing required field 'identifier'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"missing required field 'identifier' at line 1 column 1"); } #[test] fn serialize_inject_nil_as_foo() { let rule: Box = Box::new(InjectGlobalValue::nil("foo")); - assert_json_snapshot!("inject_nil_value_as_foo", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "foo", + "value": null + } + "###); } #[test] fn serialize_inject_true_as_foo() { let rule: Box = Box::new(InjectGlobalValue::boolean("foo", true)); - assert_json_snapshot!("inject_true_value_as_foo", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "foo", + "value": true + } + "###); } #[test] fn serialize_inject_false_as_foo() { let rule: Box = Box::new(InjectGlobalValue::boolean("foo", false)); - assert_json_snapshot!("inject_false_value_as_foo", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "foo", + "value": false + } + "###); } #[test] fn serialize_inject_string_as_var() { let rule: Box = Box::new(InjectGlobalValue::string("VAR", "hello")); - assert_json_snapshot!("inject_hello_value_as_var", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "VAR", + "value": "hello" + } + "###); } #[test] fn serialize_inject_integer_as_var() { let rule: Box = Box::new(InjectGlobalValue::number("VAR", 1.0)); - assert_json_snapshot!("inject_integer_value_as_var", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "VAR", + "value": 1 + } + "###); } #[test] fn serialize_inject_negative_integer_as_var() { let rule: Box = Box::new(InjectGlobalValue::number("VAR", -100.0)); - assert_json_snapshot!("inject_negative_integer_value_as_var", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "VAR", + "value": -100.0 + } + "###); } #[test] fn serialize_inject_float_as_var() { let rule: Box = Box::new(InjectGlobalValue::number("VAR", 123.45)); - assert_json_snapshot!("inject_float_value_as_var", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "inject_global_value", + "identifier": "VAR", + "value": 123.45 + } + "###); } #[test] diff --git a/src/rules/method_def.rs b/src/rules/method_def.rs index 44312bd6..3e68c363 100644 --- a/src/rules/method_def.rs +++ b/src/rules/method_def.rs @@ -60,7 +60,7 @@ mod test { #[test] fn serialize_default_rule() { - assert_json_snapshot!("default_remove_method_definition", wrap(new_rule())); + assert_json_snapshot!(wrap(new_rule()), @r###""remove_method_definition""###); } #[test] @@ -71,6 +71,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/no_local_function.rs b/src/rules/no_local_function.rs index bb17bc5a..daadf55e 100644 --- a/src/rules/no_local_function.rs +++ b/src/rules/no_local_function.rs @@ -102,7 +102,7 @@ mod test { #[test] fn serialize_default_rule() { - assert_json_snapshot!("default_convert_local_function_to_assign", new_rule()); + assert_json_snapshot!(new_rule(), @r###""convert_local_function_to_assign""###); } #[test] @@ -113,6 +113,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1") } } diff --git a/src/rules/remove_assertions.rs b/src/rules/remove_assertions.rs index 2836b7c9..f2076b1f 100644 --- a/src/rules/remove_assertions.rs +++ b/src/rules/remove_assertions.rs @@ -128,7 +128,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_assertions", rule); + assert_json_snapshot!(rule, @r###""remove_assertions""###); } #[test] @@ -137,7 +137,12 @@ mod test { preserve_args_side_effects: false, }); - assert_json_snapshot!("remove_assertions_without_side_effects", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "remove_assertions", + "preserve_arguments_side_effects": false + } + "###); } #[test] @@ -148,6 +153,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_comments.rs b/src/rules/remove_comments.rs index 67a8df79..fb1ec3aa 100644 --- a/src/rules/remove_comments.rs +++ b/src/rules/remove_comments.rs @@ -555,7 +555,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_comments", rule); + assert_json_snapshot!(rule, @r###""remove_comments""###); } #[test] @@ -566,7 +566,7 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } #[test] @@ -579,8 +579,14 @@ mod test { ); insta::assert_snapshot!( - "remove_comments_configure_with_invalid_regex_error", - result.unwrap_err().to_string() + result.unwrap_err().to_string(), + @r###" + unexpected value for field 'except': invalid regex provided `^[0-9` + regex parse error: + ^[0-9 + ^ + error: unclosed character class at line 1 column 1 + "### ); } diff --git a/src/rules/remove_compound_assign.rs b/src/rules/remove_compound_assign.rs index 3415a5a0..a206b861 100644 --- a/src/rules/remove_compound_assign.rs +++ b/src/rules/remove_compound_assign.rs @@ -342,7 +342,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_compound_assignment", rule); + assert_json_snapshot!(rule, @r###""remove_compound_assignment""###); } #[test] @@ -353,6 +353,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_continue.rs b/src/rules/remove_continue.rs index 711c7f4e..39bfcd81 100644 --- a/src/rules/remove_continue.rs +++ b/src/rules/remove_continue.rs @@ -206,7 +206,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_continue", rule); + assert_json_snapshot!(rule, @r###""remove_continue""###); } #[test] @@ -217,6 +217,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_debug_profiling.rs b/src/rules/remove_debug_profiling.rs index 8afe18f8..dd9996c8 100644 --- a/src/rules/remove_debug_profiling.rs +++ b/src/rules/remove_debug_profiling.rs @@ -98,7 +98,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_debug_profiling", rule); + assert_json_snapshot!(rule, @r###""remove_debug_profiling""###); } #[test] @@ -107,7 +107,12 @@ mod test { preserve_args_side_effects: false, }); - assert_json_snapshot!("remove_debug_profiling_without_side_effects", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "remove_debug_profiling", + "preserve_arguments_side_effects": false + } + "###); } #[test] @@ -118,6 +123,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_floor_division.rs b/src/rules/remove_floor_division.rs index 61a7afac..2cc818ea 100644 --- a/src/rules/remove_floor_division.rs +++ b/src/rules/remove_floor_division.rs @@ -141,7 +141,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_floor_division", rule); + assert_json_snapshot!(rule, @r###""remove_floor_division""###); } #[test] @@ -152,6 +152,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_if_expression.rs b/src/rules/remove_if_expression.rs index abd92bb5..a86b3ab8 100644 --- a/src/rules/remove_if_expression.rs +++ b/src/rules/remove_if_expression.rs @@ -129,7 +129,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_if_expression", rule); + assert_json_snapshot!(rule, @r###""remove_if_expression""###); } #[test] @@ -140,6 +140,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_interpolated_string.rs b/src/rules/remove_interpolated_string.rs index fb2bbbd6..78e3d01e 100644 --- a/src/rules/remove_interpolated_string.rs +++ b/src/rules/remove_interpolated_string.rs @@ -12,18 +12,13 @@ use crate::rules::{ Context, FlawlessRule, RuleConfiguration, RuleConfigurationError, RuleProperties, }; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)] enum ReplacementStrategy { + #[default] StringSpecifier, ToStringSpecifier, } -impl Default for ReplacementStrategy { - fn default() -> Self { - Self::StringSpecifier - } -} - struct RemoveInterpolatedStringProcessor { string_format_identifier: String, tostring_identifier: String, @@ -262,7 +257,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_interpolated_string", rule); + assert_json_snapshot!(rule, @r###""remove_interpolated_string""###); } #[test] @@ -271,7 +266,12 @@ mod test { strategy: ReplacementStrategy::ToStringSpecifier, }); - assert_json_snapshot!("remove_interpolated_string_tostring_strategy", rule); + assert_json_snapshot!(rule, @r###" + { + "rule": "remove_interpolated_string", + "strategy": "tostring" + } + "###); } #[test] @@ -282,6 +282,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_method_call.rs b/src/rules/remove_method_call.rs index 37db41c6..30ce09fc 100644 --- a/src/rules/remove_method_call.rs +++ b/src/rules/remove_method_call.rs @@ -105,7 +105,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_method_call", rule); + assert_json_snapshot!(rule, @r###""remove_method_call""###); } #[test] @@ -116,6 +116,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_nil_declarations.rs b/src/rules/remove_nil_declarations.rs index 3cab8076..10c7d100 100644 --- a/src/rules/remove_nil_declarations.rs +++ b/src/rules/remove_nil_declarations.rs @@ -124,7 +124,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_nil_declaration", rule); + assert_json_snapshot!(rule, @r###""remove_nil_declaration""###); } #[test] @@ -135,6 +135,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_spaces.rs b/src/rules/remove_spaces.rs index 200322ac..afad7900 100644 --- a/src/rules/remove_spaces.rs +++ b/src/rules/remove_spaces.rs @@ -277,7 +277,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_spaces", rule); + assert_json_snapshot!(rule, @r###""remove_spaces""###); } #[test] @@ -288,7 +288,7 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } #[test] diff --git a/src/rules/remove_types.rs b/src/rules/remove_types.rs index 38c269e9..df8e8797 100644 --- a/src/rules/remove_types.rs +++ b/src/rules/remove_types.rs @@ -101,7 +101,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_types", rule); + assert_json_snapshot!(rule, @r###""remove_types""###); } #[test] @@ -112,6 +112,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/remove_unused_variable.rs b/src/rules/remove_unused_variable.rs index 5c39e42d..3f796254 100644 --- a/src/rules/remove_unused_variable.rs +++ b/src/rules/remove_unused_variable.rs @@ -263,7 +263,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_unused_variable", rule); + assert_json_snapshot!(rule, @r###""remove_unused_variable""###); } #[test] @@ -274,6 +274,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__default_rename_variables.snap b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__default_rename_variables.snap index 5720eec6..e3a5e83f 100644 --- a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__default_rename_variables.snap +++ b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__default_rename_variables.snap @@ -1,6 +1,5 @@ --- source: src/rules/rename_variables/mod.rs expression: new_rule() - --- "rename_variables" diff --git a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__no_globals_rename_variables.snap b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__no_globals_rename_variables.snap index e4f2fa47..63343e17 100644 --- a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__no_globals_rename_variables.snap +++ b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__no_globals_rename_variables.snap @@ -1,7 +1,6 @@ --- source: src/rules/rename_variables/mod.rs expression: "Box::new(RenameVariables::new(empty())) as Box" - --- { "rule": "rename_variables", diff --git a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__rename_variables_with_function_names.snap b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__rename_variables_with_function_names.snap index 93bba757..9b691a32 100644 --- a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__rename_variables_with_function_names.snap +++ b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__rename_variables_with_function_names.snap @@ -1,7 +1,6 @@ --- source: src/rules/rename_variables/mod.rs expression: rule as Box - --- { "rule": "rename_variables", diff --git a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__roblox_globals_rename_variables.snap b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__roblox_globals_rename_variables.snap index ff6eab90..7be847d3 100644 --- a/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__roblox_globals_rename_variables.snap +++ b/src/rules/rename_variables/snapshots/darklua_core__rules__rename_variables__test__roblox_globals_rename_variables.snap @@ -1,7 +1,6 @@ --- source: src/rules/rename_variables/mod.rs expression: rule as Box - --- { "rule": "rename_variables", diff --git a/src/rules/replace_referenced_tokens.rs b/src/rules/replace_referenced_tokens.rs index 7cc316e4..fb67f8f6 100644 --- a/src/rules/replace_referenced_tokens.rs +++ b/src/rules/replace_referenced_tokens.rs @@ -284,7 +284,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_replace_referenced_tokens", rule); + assert_json_snapshot!(rule, @r###""replace_referenced_tokens""###); } fn test_code(code: &str) { diff --git a/src/rules/shift_token_line.rs b/src/rules/shift_token_line.rs index b29dac4d..8c6888af 100644 --- a/src/rules/shift_token_line.rs +++ b/src/rules/shift_token_line.rs @@ -290,6 +290,6 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_replace_referenced_tokens", rule); + assert_json_snapshot!(rule, @r###""shift_token_line""###); } } diff --git a/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text.snap b/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text.snap deleted file mode 100644 index adf2d9f8..00000000 --- a/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text.snap +++ /dev/null @@ -1,8 +0,0 @@ ---- -source: src/rules/append_text_comment.rs -expression: rule ---- -{ - "rule": "append_text_comment", - "text": "content" -} diff --git a/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text_at_end.snap b/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text_at_end.snap deleted file mode 100644 index cb51f61c..00000000 --- a/src/rules/snapshots/darklua_core__rules__append_text_comment__test__append_text_comment_with_text_at_end.snap +++ /dev/null @@ -1,9 +0,0 @@ ---- -source: src/rules/append_text_comment.rs -expression: rule ---- -{ - "rule": "append_text_comment", - "location": "end", - "text": "content" -} diff --git a/src/rules/snapshots/darklua_core__rules__call_parens__test__default_remove_function_call_parens.snap b/src/rules/snapshots/darklua_core__rules__call_parens__test__default_remove_function_call_parens.snap deleted file mode 100644 index b855889a..00000000 --- a/src/rules/snapshots/darklua_core__rules__call_parens__test__default_remove_function_call_parens.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/call_parens.rs -expression: rule - ---- -"remove_function_call_parens" diff --git a/src/rules/snapshots/darklua_core__rules__compute_expression__test__default_compute_expression.snap b/src/rules/snapshots/darklua_core__rules__compute_expression__test__default_compute_expression.snap deleted file mode 100644 index 7838d6bb..00000000 --- a/src/rules/snapshots/darklua_core__rules__compute_expression__test__default_compute_expression.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/compute_expression.rs -expression: rule - ---- -"compute_expression" diff --git a/src/rules/snapshots/darklua_core__rules__convert_index_to_field__test__default_convert_index_to_field.snap b/src/rules/snapshots/darklua_core__rules__convert_index_to_field__test__default_convert_index_to_field.snap deleted file mode 100644 index 2b9e4e8c..00000000 --- a/src/rules/snapshots/darklua_core__rules__convert_index_to_field__test__default_convert_index_to_field.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/convert_index_to_field.rs -expression: rule - ---- -"convert_index_to_field" diff --git a/src/rules/snapshots/darklua_core__rules__convert_luau_number__test__default_convert_luau_number.snap b/src/rules/snapshots/darklua_core__rules__convert_luau_number__test__default_convert_luau_number.snap deleted file mode 100644 index ebaafa8e..00000000 --- a/src/rules/snapshots/darklua_core__rules__convert_luau_number__test__default_convert_luau_number.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/convert_luau_number.rs -expression: rule ---- -"convert_luau_number" diff --git a/src/rules/snapshots/darklua_core__rules__empty_do__test__default_remove_empty_do.snap b/src/rules/snapshots/darklua_core__rules__empty_do__test__default_remove_empty_do.snap deleted file mode 100644 index 164875c8..00000000 --- a/src/rules/snapshots/darklua_core__rules__empty_do__test__default_remove_empty_do.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/empty_do.rs -expression: rule - ---- -"remove_empty_do" diff --git a/src/rules/snapshots/darklua_core__rules__filter_early_return__test__default_filter_after_early_return.snap b/src/rules/snapshots/darklua_core__rules__filter_early_return__test__default_filter_after_early_return.snap deleted file mode 100644 index a7f4510a..00000000 --- a/src/rules/snapshots/darklua_core__rules__filter_early_return__test__default_filter_after_early_return.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: src/rules/filter_early_return.rs -assertion_line: 94 -expression: rule - ---- -"filter_after_early_return" diff --git a/src/rules/snapshots/darklua_core__rules__group_local__test__default_group_local_assignment.snap b/src/rules/snapshots/darklua_core__rules__group_local__test__default_group_local_assignment.snap deleted file mode 100644 index 84a8740a..00000000 --- a/src/rules/snapshots/darklua_core__rules__group_local__test__default_group_local_assignment.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/group_local.rs -expression: rule - ---- -"group_local_assignment" diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_false_value_as_foo.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_false_value_as_foo.snap deleted file mode 100644 index f763b0cd..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_false_value_as_foo.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "foo", - "value": false -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_float_value_as_var.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_float_value_as_var.snap deleted file mode 100644 index b620550c..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_float_value_as_var.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "VAR", - "value": 123.45 -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_hello_value_as_var.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_hello_value_as_var.snap deleted file mode 100644 index ba399a40..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_hello_value_as_var.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "VAR", - "value": "hello" -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_integer_value_as_var.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_integer_value_as_var.snap deleted file mode 100644 index 78b33362..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_integer_value_as_var.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "VAR", - "value": 1 -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_negative_integer_value_as_var.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_negative_integer_value_as_var.snap deleted file mode 100644 index 61e86e57..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_negative_integer_value_as_var.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "VAR", - "value": -100.0 -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_nil_value_as_foo.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_nil_value_as_foo.snap deleted file mode 100644 index d6ecf687..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_nil_value_as_foo.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "foo", - "value": null -} diff --git a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_true_value_as_foo.snap b/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_true_value_as_foo.snap deleted file mode 100644 index c2ea4540..00000000 --- a/src/rules/snapshots/darklua_core__rules__inject_value__test__inject_true_value_as_foo.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: src/rules/inject_value.rs -expression: rule - ---- -{ - "rule": "inject_global_value", - "identifier": "foo", - "value": true -} diff --git a/src/rules/snapshots/darklua_core__rules__method_def__test__default_remove_method_definition.snap b/src/rules/snapshots/darklua_core__rules__method_def__test__default_remove_method_definition.snap deleted file mode 100644 index 70b4cba8..00000000 --- a/src/rules/snapshots/darklua_core__rules__method_def__test__default_remove_method_definition.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/method_def.rs -expression: wrap(new_rule()) - ---- -"remove_method_definition" diff --git a/src/rules/snapshots/darklua_core__rules__no_local_function__test__default_convert_local_function_to_assign.snap b/src/rules/snapshots/darklua_core__rules__no_local_function__test__default_convert_local_function_to_assign.snap deleted file mode 100644 index b50fbf89..00000000 --- a/src/rules/snapshots/darklua_core__rules__no_local_function__test__default_convert_local_function_to_assign.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/no_local_function.rs -expression: new_rule() - ---- -"convert_local_function_to_assign" diff --git a/src/rules/snapshots/darklua_core__rules__remove_assertions__test__default_remove_assertions.snap b/src/rules/snapshots/darklua_core__rules__remove_assertions__test__default_remove_assertions.snap deleted file mode 100644 index 59fbfbd8..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_assertions__test__default_remove_assertions.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_assertions.rs -expression: rule ---- -"remove_assertions" diff --git a/src/rules/snapshots/darklua_core__rules__remove_assertions__test__remove_assertions_without_side_effects.snap b/src/rules/snapshots/darklua_core__rules__remove_assertions__test__remove_assertions_without_side_effects.snap deleted file mode 100644 index c2e7183a..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_assertions__test__remove_assertions_without_side_effects.snap +++ /dev/null @@ -1,8 +0,0 @@ ---- -source: src/rules/remove_assertions.rs -expression: rule ---- -{ - "rule": "remove_assertions", - "preserve_arguments_side_effects": false -} diff --git a/src/rules/snapshots/darklua_core__rules__remove_comments__test__default_remove_comments.snap b/src/rules/snapshots/darklua_core__rules__remove_comments__test__default_remove_comments.snap deleted file mode 100644 index 9c6d581c..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_comments__test__default_remove_comments.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/remove_comments.rs -expression: rule - ---- -"remove_comments" diff --git a/src/rules/snapshots/darklua_core__rules__remove_comments__test__remove_comments_configure_with_invalid_regex_error.snap b/src/rules/snapshots/darklua_core__rules__remove_comments__test__remove_comments_configure_with_invalid_regex_error.snap deleted file mode 100644 index a6c85b38..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_comments__test__remove_comments_configure_with_invalid_regex_error.snap +++ /dev/null @@ -1,9 +0,0 @@ ---- -source: src/rules/remove_comments.rs -expression: result.unwrap_err().to_string() ---- -unexpected value for field 'except': invalid regex provided `^[0-9` - regex parse error: - ^[0-9 - ^ -error: unclosed character class diff --git a/src/rules/snapshots/darklua_core__rules__remove_compound_assign__test__default_remove_compound_assignment.snap b/src/rules/snapshots/darklua_core__rules__remove_compound_assign__test__default_remove_compound_assignment.snap deleted file mode 100644 index 52e217bc..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_compound_assign__test__default_remove_compound_assignment.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_compound_assign.rs -expression: rule ---- -"remove_compound_assignment" diff --git a/src/rules/snapshots/darklua_core__rules__remove_continue__test__default_remove_continue.snap b/src/rules/snapshots/darklua_core__rules__remove_continue__test__default_remove_continue.snap deleted file mode 100644 index e9cea31d..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_continue__test__default_remove_continue.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_continue.rs -expression: rule ---- -"remove_continue" diff --git a/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__default_remove_debug_profiling.snap b/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__default_remove_debug_profiling.snap deleted file mode 100644 index 79bb51f0..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__default_remove_debug_profiling.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_debug_profiling.rs -expression: rule ---- -"remove_debug_profiling" diff --git a/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__remove_debug_profiling_without_side_effects.snap b/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__remove_debug_profiling_without_side_effects.snap deleted file mode 100644 index 41f7c4be..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_debug_profiling__test__remove_debug_profiling_without_side_effects.snap +++ /dev/null @@ -1,8 +0,0 @@ ---- -source: src/rules/remove_debug_profiling.rs -expression: rule ---- -{ - "rule": "remove_debug_profiling", - "preserve_arguments_side_effects": false -} diff --git a/src/rules/snapshots/darklua_core__rules__remove_floor_division__test__default_remove_floor_division.snap b/src/rules/snapshots/darklua_core__rules__remove_floor_division__test__default_remove_floor_division.snap deleted file mode 100644 index 0f242a77..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_floor_division__test__default_remove_floor_division.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_floor_division.rs -expression: rule ---- -"remove_floor_division" diff --git a/src/rules/snapshots/darklua_core__rules__remove_if_expression__test__default_remove_if_expression.snap b/src/rules/snapshots/darklua_core__rules__remove_if_expression__test__default_remove_if_expression.snap deleted file mode 100644 index 58f0465a..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_if_expression__test__default_remove_if_expression.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_if_expression.rs -expression: rule ---- -"remove_if_expression" diff --git a/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__default_remove_interpolated_string.snap b/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__default_remove_interpolated_string.snap deleted file mode 100644 index 36bb2d7d..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__default_remove_interpolated_string.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_interpolated_string.rs -expression: rule ---- -"remove_interpolated_string" diff --git a/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__remove_interpolated_string_tostring_strategy.snap b/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__remove_interpolated_string_tostring_strategy.snap deleted file mode 100644 index a225e1df..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_interpolated_string__test__remove_interpolated_string_tostring_strategy.snap +++ /dev/null @@ -1,8 +0,0 @@ ---- -source: src/rules/remove_interpolated_string.rs -expression: rule ---- -{ - "rule": "remove_interpolated_string", - "strategy": "tostring" -} diff --git a/src/rules/snapshots/darklua_core__rules__remove_method_call__test__default_remove_method_call.snap b/src/rules/snapshots/darklua_core__rules__remove_method_call__test__default_remove_method_call.snap deleted file mode 100644 index 5db2c776..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_method_call__test__default_remove_method_call.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_method_call.rs -expression: rule ---- -"remove_method_call" diff --git a/src/rules/snapshots/darklua_core__rules__remove_nil_declarations__test__default_remove_nil_declaration.snap b/src/rules/snapshots/darklua_core__rules__remove_nil_declarations__test__default_remove_nil_declaration.snap deleted file mode 100644 index b244dd02..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_nil_declarations__test__default_remove_nil_declaration.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: src/rules/remove_nil_declarations.rs -assertion_line: 64 -expression: rule - ---- -"remove_nil_declaration" diff --git a/src/rules/snapshots/darklua_core__rules__remove_spaces__test__default_remove_spaces.snap b/src/rules/snapshots/darklua_core__rules__remove_spaces__test__default_remove_spaces.snap deleted file mode 100644 index f17d73d5..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_spaces__test__default_remove_spaces.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/remove_spaces.rs -expression: rule - ---- -"remove_spaces" diff --git a/src/rules/snapshots/darklua_core__rules__remove_types__test__default_remove_types.snap b/src/rules/snapshots/darklua_core__rules__remove_types__test__default_remove_types.snap deleted file mode 100644 index bb40cf04..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_types__test__default_remove_types.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_types.rs -expression: rule ---- -"remove_types" diff --git a/src/rules/snapshots/darklua_core__rules__remove_unused_variable__test__default_remove_unused_variable.snap b/src/rules/snapshots/darklua_core__rules__remove_unused_variable__test__default_remove_unused_variable.snap deleted file mode 100644 index e4bbe626..00000000 --- a/src/rules/snapshots/darklua_core__rules__remove_unused_variable__test__default_remove_unused_variable.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/remove_unused_variable.rs -expression: rule ---- -"remove_unused_variable" diff --git a/src/rules/snapshots/darklua_core__rules__shift_token_line__test__default_replace_referenced_tokens.snap b/src/rules/snapshots/darklua_core__rules__shift_token_line__test__default_replace_referenced_tokens.snap deleted file mode 100644 index 37b365cc..00000000 --- a/src/rules/snapshots/darklua_core__rules__shift_token_line__test__default_replace_referenced_tokens.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: src/rules/shift_token_line.rs -expression: rule ---- -"shift_token_line" diff --git a/src/rules/snapshots/darklua_core__rules__unused_if_branch__test__default_remove_unused_if_branch.snap b/src/rules/snapshots/darklua_core__rules__unused_if_branch__test__default_remove_unused_if_branch.snap deleted file mode 100644 index d5d73ce1..00000000 --- a/src/rules/snapshots/darklua_core__rules__unused_if_branch__test__default_remove_unused_if_branch.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/unused_if_branch.rs -expression: rule - ---- -"remove_unused_if_branch" diff --git a/src/rules/snapshots/darklua_core__rules__unused_while__test__default_remove_unused_while.snap b/src/rules/snapshots/darklua_core__rules__unused_while__test__default_remove_unused_while.snap deleted file mode 100644 index 5b9ab525..00000000 --- a/src/rules/snapshots/darklua_core__rules__unused_while__test__default_remove_unused_while.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: src/rules/unused_while.rs -expression: rule - ---- -"remove_unused_while" diff --git a/src/rules/unused_if_branch.rs b/src/rules/unused_if_branch.rs index 31fc75d5..702ddecf 100644 --- a/src/rules/unused_if_branch.rs +++ b/src/rules/unused_if_branch.rs @@ -244,7 +244,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_unused_if_branch", rule); + assert_json_snapshot!(rule, @r###""remove_unused_if_branch""###); } #[test] @@ -255,6 +255,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/src/rules/unused_while.rs b/src/rules/unused_while.rs index 6cf2a0fc..bffa6718 100644 --- a/src/rules/unused_while.rs +++ b/src/rules/unused_while.rs @@ -73,7 +73,7 @@ mod test { fn serialize_default_rule() { let rule: Box = Box::new(new_rule()); - assert_json_snapshot!("default_remove_unused_while", rule); + assert_json_snapshot!(rule, @r###""remove_unused_while""###); } #[test] @@ -84,6 +84,6 @@ mod test { prop: "something", }"#, ); - pretty_assertions::assert_eq!(result.unwrap_err().to_string(), "unexpected field 'prop'"); + insta::assert_snapshot!(result.unwrap_err().to_string(), @"unexpected field 'prop' at line 1 column 1"); } } diff --git a/tests/ast_fuzzer/mod.rs b/tests/ast_fuzzer/mod.rs index 6d51f55f..540cc664 100644 --- a/tests/ast_fuzzer/mod.rs +++ b/tests/ast_fuzzer/mod.rs @@ -863,7 +863,7 @@ impl AstFuzzer { .into_iter() .enumerate() .map(|(i, r#type)| { - if i < literal_properties { + let mut property_type: TableEntryType = if i < literal_properties { TableLiteralPropertyType::new( StringType::from_value(self.random.string_content()), r#type, @@ -871,7 +871,13 @@ impl AstFuzzer { .into() } else { TablePropertyType::new(self.random.identifier(), r#type).into() + }; + + if let Some(modifier) = self.random.table_indexer_modifier() { + property_type.set_modifier(modifier); } + + property_type }) .collect(); @@ -883,8 +889,14 @@ impl AstFuzzer { ) { key_type = ParentheseType::new(key_type).into(); } - table_properties - .push(TableIndexerType::new(key_type, self.pop_type()).into()); + let mut table_indexer_type = + TableIndexerType::new(key_type, self.pop_type()); + + if let Some(modifier) = self.random.table_indexer_modifier() { + table_indexer_type.set_modifier(modifier); + } + + table_properties.push(table_indexer_type.into()); } table_properties.shuffle(&mut rand::rng()); diff --git a/tests/ast_fuzzer/random.rs b/tests/ast_fuzzer/random.rs index 4bf91cd0..902c815c 100644 --- a/tests/ast_fuzzer/random.rs +++ b/tests/ast_fuzzer/random.rs @@ -1,6 +1,8 @@ use std::iter; -use darklua_core::nodes::{BinaryOperator, CompoundOperator, Identifier, UnaryOperator}; +use darklua_core::nodes::{ + BinaryOperator, CompoundOperator, Identifier, TablePropertyModifier, UnaryOperator, +}; use rand::{rng, Rng}; pub struct RandomAst { @@ -318,6 +320,16 @@ impl RandomAst { pub fn leading_intersection_or_union_operator(&self) -> bool { rng().random_bool(0.4) } + + pub(crate) fn table_indexer_modifier(&self) -> Option { + if rng().random_bool(0.7) { + None + } else if rng().random_bool(0.5) { + Some(TablePropertyModifier::Read) + } else { + Some(TablePropertyModifier::Write) + } + } } #[inline] diff --git a/tests/cli.rs b/tests/cli.rs index e1133a94..a3c5119f 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -19,7 +19,7 @@ impl Default for Context { let working_directory = tempdir_in(env!("CARGO_TARGET_TMPDIR")).expect("unable to create temporary directory"); - let mut command = Command::cargo_bin(env!("CARGO_PKG_NAME")).unwrap(); + let mut command = assert_cmd::cargo::cargo_bin_cmd!(env!("CARGO_PKG_NAME")); command.current_dir(working_directory.path()); Self::new(command, working_directory) diff --git a/tests/rule_tests/append_text_comment.rs b/tests/rule_tests/append_text_comment.rs index d5750793..5c1462d6 100644 --- a/tests/rule_tests/append_text_comment.rs +++ b/tests/rule_tests/append_text_comment.rs @@ -130,5 +130,5 @@ fn deserialize_from_object_notation() { fn deserialize_from_string_fails() { let err = json5::from_str::>(r#"'append_text_comment'"#).unwrap_err(); - pretty_assertions::assert_eq!("missing one field from `text` and `file`", err.to_string()) + insta::assert_snapshot!(err.to_string(), @"missing one field from `text` and `file` at line 1 column 1") } diff --git a/tests/rule_tests/inject_value.rs b/tests/rule_tests/inject_value.rs index 8a6f131e..736b61bc 100644 --- a/tests/rule_tests/inject_value.rs +++ b/tests/rule_tests/inject_value.rs @@ -186,7 +186,7 @@ test_rule!( value: 1E19, }"#, ).unwrap(), - inject_negative_integer("return _G.num") => "return 1E19", + inject_number("return _G.num") => "return 1E19", ); test_rule!( @@ -198,7 +198,7 @@ test_rule!( value: 1e20, }"#, ).unwrap(), - inject_negative_integer("return _G.num") => "return 1E20", + inject_number("return _G.num") => "return 1E20", ); test_rule!( @@ -210,7 +210,31 @@ test_rule!( value: 1e42, }"#, ).unwrap(), - inject_negative_integer("return _G.num") => "return 1E42", + inject_number("return _G.num") => "return 1E42", +); + +test_rule!( + inject_global_infinity_value, + json5::from_str::>( + r#"{ + rule: 'inject_global_value', + identifier: 'num', + value: Infinity, + }"#, + ).unwrap(), + inject_number("return _G.num") => "return 1/0", +); + +test_rule!( + inject_global_large_number_rounding_to_infinite_value, + json5::from_str::>( + r#"{ + rule: 'inject_global_value', + identifier: 'num', + value: 1e3500, + }"#, + ).unwrap(), + inject_number("return _G.num") => "return 1/0", ); test_rule!( @@ -238,16 +262,27 @@ test_rule!( inject_negative_integer("return _G.num") => "return 10", ); -#[test] -fn deserialize_number_value_too_large() { - let err = json5::from_str::>( - r#"{ +test_rule!( + inject_global_variable_using_env_variable_with_default_value, + { + // use a unique variable name to avoid conflicts with other tests running in parallel + let unique_var_name = format!("DARKLUA_TEST_VAR_{}", std::process::id()); + std::env::set_var(&unique_var_name, "from_env"); + + let rule = json5::from_str::>(&format!( + r#"{{ rule: 'inject_global_value', - identifier: 'num', - value: 1e350, - }"#, - ) - .unwrap_err(); + identifier: 'CONFIG', + env: '{unique_var_name}', + default_value: 'from_default', + }}"#, + )) + .unwrap(); - pretty_assertions::assert_eq!("error parsing number: too large", err.to_string()) -} + // the rule already captured the value so it can be removed + std::env::remove_var("DARKLUA_INTEGRATION_TEST_VAR"); + + rule + }, + inject_value("return CONFIG") => "return 'from_env'", +); diff --git a/tests/rule_tests/snapshots/rules__rule_tests__convert_require__sourcemap__convert_sibling_module_from_init_module.snap b/tests/rule_tests/snapshots/rules__rule_tests__convert_require__sourcemap__convert_sibling_module_from_init_module.snap index 3a5b8257..08a21c09 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__convert_require__sourcemap__convert_sibling_module_from_init_module.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__convert_require__sourcemap__convert_sibling_module_from_init_module.snap @@ -1,6 +1,6 @@ --- source: tests/rule_tests/convert_require.rs -expression: "process `tests/test_cases/sourcemap/src/d/init.lua`" +expression: "process `tests/test_cases/sourcemap/parent/src/d/init.lua`" --- return { d1 = require(script:FindFirstChild('d1')), diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_continue_with_comment.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_continue_with_comment.snap index 3c7dac15..7fc652e2 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_continue_with_comment.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_continue_with_comment.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local __DARKLUA_CONTINUE_1=false repeat if i % 2 == 0 then __DARKLUA_CONTINUE_1=true break -- Skip even numbers diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_inside_while.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_inside_while.snap index d7eb5db0..13519a28 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_inside_while.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_inside_while.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + while notDone() do if hasEnded() then break diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_expression.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_expression.snap index bca38ca5..39ed8df5 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_expression.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_expression.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do array[i] = function() for j = i, i + 10 do diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_statement.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_statement.snap index 54611000..371aa113 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_statement.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_continue_in_function_statement.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local element = array[i] function element.call() diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_with_only_continue.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_with_only_continue.snap index 81a116b1..d58fe3ef 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_with_only_continue.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__for_loop_with_only_continue.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local __DARKLUA_CONTINUE_1=false repeat __DARKLUA_CONTINUE_1=true break until true if not __DARKLUA_CONTINUE_1 then break end end diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__function_with_continue.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__function_with_continue.snap index 73a79124..4f455491 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__function_with_continue.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__function_with_continue.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local __DARKLUA_CONTINUE_1=false repeat local function shouldSkip(val) return val % 2 == 0 diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__generic_for_continue_or_break.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__generic_for_continue_or_break.snap index 0fd6880f..9c02652b 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__generic_for_continue_or_break.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__generic_for_continue_or_break.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for key, value in array do local __DARKLUA_CONTINUE_1=false repeat if skip(key) then __DARKLUA_CONTINUE_1=true break diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__multiple_conditions_continue.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__multiple_conditions_continue.snap index b5ec5998..5202a662 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__multiple_conditions_continue.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__multiple_conditions_continue.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local __DARKLUA_CONTINUE_1=false repeat if i < 3 or i > 8 then __DARKLUA_CONTINUE_1=true break diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__nested_for_continue_statements.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__nested_for_continue_statements.snap index ee45be8f..3ac9a713 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__nested_for_continue_statements.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__nested_for_continue_statements.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do for j = 1, 10 do local __DARKLUA_CONTINUE_2=false repeat if j % 2 == 0 then diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__numeric_for_continue_first_case.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__numeric_for_continue_first_case.snap index 72c28c1f..2655c37d 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__numeric_for_continue_first_case.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__numeric_for_continue_first_case.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 10 do local __DARKLUA_CONTINUE_1=false repeat if i == 1 then __DARKLUA_CONTINUE_1=true break diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__repeat_inside_for.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__repeat_inside_for.snap index 631e7e75..482e1c05 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__repeat_inside_for.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__repeat_inside_for.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for key, value in array do if type(key) == 'number' then repeat diff --git a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__sequential_loops_with_continue.snap b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__sequential_loops_with_continue.snap index 8c3a8767..35057bc0 100644 --- a/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__sequential_loops_with_continue.snap +++ b/tests/rule_tests/snapshots/rules__rule_tests__remove_continue__remove_continue_snapshots__sequential_loops_with_continue.snap @@ -2,6 +2,7 @@ source: tests/rule_tests/remove_continue.rs expression: lua_code --- + for i = 1, 5 do local __DARKLUA_CONTINUE_1=false repeat if i % 2 == 0 then __DARKLUA_CONTINUE_1=true break diff --git a/tests/rule_tests/snapshots/rules__utils__invalid_sourcemap.snap b/tests/rule_tests/snapshots/rules__utils__invalid_sourcemap.snap index 4084e074..6ce7c261 100644 --- a/tests/rule_tests/snapshots/rules__utils__invalid_sourcemap.snap +++ b/tests/rule_tests/snapshots/rules__utils__invalid_sourcemap.snap @@ -1,5 +1,4 @@ --- source: tests/utils.rs -assertion_line: 67 --- error processing `src/init.lua` (convert_require [#0]): unable to read json data: EOF while parsing a value at line 1 column 0 (unable to parse Rojo sourcemap at `./sourcemap.json`) diff --git a/tests/snapshots/convert_help_command.snap b/tests/snapshots/convert_help_command.snap index 087bc37d..258a1dad 100644 --- a/tests/snapshots/convert_help_command.snap +++ b/tests/snapshots/convert_help_command.snap @@ -15,4 +15,3 @@ Options: -v, --verbose... Sets verbosity level (can be specified multiple times) -h, --help Print help -V, --version Print version - diff --git a/tests/snapshots/minify_help_command.snap b/tests/snapshots/minify_help_command.snap index 669b99fd..b00e4ae5 100644 --- a/tests/snapshots/minify_help_command.snap +++ b/tests/snapshots/minify_help_command.snap @@ -15,4 +15,3 @@ Options: -v, --verbose... Sets verbosity level (can be specified multiple times) -h, --help Print help -V, --version Print version - diff --git a/tests/snapshots/process_help_command.snap b/tests/snapshots/process_help_command.snap index 91bc76c0..4ac08b7e 100644 --- a/tests/snapshots/process_help_command.snap +++ b/tests/snapshots/process_help_command.snap @@ -33,4 +33,3 @@ Options: -V, --version Print version - diff --git a/tests/snapshots/run_convert_command_errors_when_no_extension_and_no_format.snap b/tests/snapshots/run_convert_command_errors_when_no_extension_and_no_format.snap index 4d467202..08353200 100644 --- a/tests/snapshots/run_convert_command_errors_when_no_extension_and_no_format.snap +++ b/tests/snapshots/run_convert_command_errors_when_no_extension_and_no_format.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- an error happened: unable to find data format because the input file 'data' has no extension. Specify the data format using the '--format' option - diff --git a/tests/snapshots/run_convert_command_errors_when_unrecognized_extension.snap b/tests/snapshots/run_convert_command_errors_when_unrecognized_extension.snap index dd959d2d..432e86db 100644 --- a/tests/snapshots/run_convert_command_errors_when_unrecognized_extension.snap +++ b/tests/snapshots/run_convert_command_errors_when_unrecognized_extension.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- an error happened: invalid data format 'yoyo' (possible options are: 'json', 'json5', 'yml' or 'toml') [unrecognized file extension] - diff --git a/tests/snapshots/run_convert_command_on_json_file_stdout.snap b/tests/snapshots/run_convert_command_on_json_file_stdout.snap index acc3aa83..b7acbf29 100644 --- a/tests/snapshots/run_convert_command_on_json_file_stdout.snap +++ b/tests/snapshots/run_convert_command_on_json_file_stdout.snap @@ -5,4 +5,3 @@ expression: content return{property=true} successfully converted data.json (in {{DURATION}}) - diff --git a/tests/snapshots/run_convert_command_on_json_file_with_output.snap b/tests/snapshots/run_convert_command_on_json_file_with_output.snap index a21870dc..7d842628 100644 --- a/tests/snapshots/run_convert_command_on_json_file_with_output.snap +++ b/tests/snapshots/run_convert_command_on_json_file_with_output.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- successfully converted data.json (in {{DURATION}}) - diff --git a/tests/snapshots/run_convert_command_on_json_without_extension_file_with_output.snap b/tests/snapshots/run_convert_command_on_json_without_extension_file_with_output.snap index fb1eea90..7c8426fd 100644 --- a/tests/snapshots/run_convert_command_on_json_without_extension_file_with_output.snap +++ b/tests/snapshots/run_convert_command_on_json_without_extension_file_with_output.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- successfully converted data (in {{DURATION}}) - diff --git a/tests/snapshots/run_minify_command.snap b/tests/snapshots/run_minify_command.snap index 06523853..0208661e 100644 --- a/tests/snapshots/run_minify_command.snap +++ b/tests/snapshots/run_minify_command.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- successfully minified 1 file (in {{DURATION}}) - diff --git a/tests/snapshots/run_minify_verbose_command.snap b/tests/snapshots/run_minify_verbose_command.snap index 559f4e8f..f35c67ec 100644 --- a/tests/snapshots/run_minify_verbose_command.snap +++ b/tests/snapshots/run_minify_verbose_command.snap @@ -6,4 +6,3 @@ successfully minified 1 file (in {{DURATION}}) INFO > successfully processed `src/init.lua` INFO > executed work in {{DURATION}} - diff --git a/tests/snapshots/run_process_command.snap b/tests/snapshots/run_process_command.snap index 513b7a0a..0686c86b 100644 --- a/tests/snapshots/run_process_command.snap +++ b/tests/snapshots/run_process_command.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- successfully processed 1 file (in {{DURATION}}) - diff --git a/tests/snapshots/run_process_single_file_custom_config.snap b/tests/snapshots/run_process_single_file_custom_config.snap index 513b7a0a..0686c86b 100644 --- a/tests/snapshots/run_process_single_file_custom_config.snap +++ b/tests/snapshots/run_process_single_file_custom_config.snap @@ -3,4 +3,3 @@ source: tests/cli.rs expression: content --- successfully processed 1 file (in {{DURATION}}) - diff --git a/tests/snapshots/run_process_verbose_command.snap b/tests/snapshots/run_process_verbose_command.snap index 506b628e..e453786f 100644 --- a/tests/snapshots/run_process_verbose_command.snap +++ b/tests/snapshots/run_process_verbose_command.snap @@ -7,4 +7,3 @@ successfully processed 1 file (in {{DURATION}}) INFO > using default configuration INFO > successfully processed `src/init.lua` INFO > executed work in {{DURATION}} - diff --git a/tests/snapshots/short_help_command.snap b/tests/snapshots/short_help_command.snap index 790e7a40..8046d916 100644 --- a/tests/snapshots/short_help_command.snap +++ b/tests/snapshots/short_help_command.snap @@ -16,4 +16,3 @@ Options: -v, --verbose... Sets verbosity level (can be specified multiple times) -h, --help Print help (see more with '--help') -V, --version Print version - From acba9e6805126de909a670659861d49647d0012a Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 15:18:29 +0000 Subject: [PATCH 3/8] Improve fallback --- src/rules/convert_require/mod.rs | 35 +++++++++++-------- .../convert_require/roblox_require_mode.rs | 12 +++---- src/rules/require/luau_path_locator.rs | 2 +- src/rules/require/luau_require_mode.rs | 34 +++++++++--------- src/rules/require/path_require_mode.rs | 24 ++++++------- src/rules/rule_property.rs | 11 ++++++ 6 files changed, 67 insertions(+), 51 deletions(-) diff --git a/src/rules/convert_require/mod.rs b/src/rules/convert_require/mod.rs index 0cac3c3f..760e5b49 100644 --- a/src/rules/convert_require/mod.rs +++ b/src/rules/convert_require/mod.rs @@ -25,18 +25,21 @@ use std::str::FromStr; /// A representation of how require calls are handled and transformed. pub trait RequireModeLike { + /// Parses the function to call to check for a `require` call. + /// + /// Returns the singular require mode used within the `require` call. fn find_require( &self, call: &FunctionCall, context: &Context, - ) -> DarkluaResult>; + ) -> DarkluaResult>; fn generate_require( &self, path: &Path, current_mode: &T, context: &Context, ) -> DarkluaResult>; - fn is_module_folder_name(&self, path: &Path) -> bool; + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult; fn initialize(&mut self, context: &Context) -> DarkluaResult<()>; } @@ -57,7 +60,7 @@ impl RequireModeLike for SingularRequireMode { &self, call: &FunctionCall, context: &Context, - ) -> DarkluaResult> { + ) -> DarkluaResult> { match self { SingularRequireMode::Path(path_mode) => path_mode.find_require(call, context), SingularRequireMode::Luau(luau_mode) => luau_mode.find_require(call, context), @@ -84,7 +87,7 @@ impl RequireModeLike for SingularRequireMode { } } - fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { match self { SingularRequireMode::Path(path_mode) => path_mode.is_module_folder_name(path), SingularRequireMode::Luau(luau_mode) => luau_mode.is_module_folder_name(path), @@ -116,7 +119,7 @@ impl FromStr for SingularRequireMode { /// A representation of how require calls are handled and transformed. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[serde(deny_unknown_fields, rename_all = "snake_case", tag = "name")] +#[serde(untagged)] pub enum RequireMode { Single(SingularRequireMode), Hybrid(Vec), @@ -127,15 +130,17 @@ impl RequireModeLike for RequireMode { &self, call: &FunctionCall, context: &Context, - ) -> DarkluaResult> { + ) -> DarkluaResult> { match self { RequireMode::Single(singular_require_mode) => { singular_require_mode.find_require(call, context) } RequireMode::Hybrid(singular_require_modes) => { + println!("call"); for mode in singular_require_modes { - if let Ok(Some(x)) = mode.find_require(call, context) { - return Ok(Some(x)); + match mode.find_require(call, context) { + Ok(Some(x)) => return Ok(Some(x)), + x => println!("nooo: {x:?}"), } } @@ -166,12 +171,12 @@ impl RequireModeLike for RequireMode { } } - fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { match self { RequireMode::Single(singular_require_mode) => { singular_require_mode.is_module_folder_name(path) } - RequireMode::Hybrid(_singular_require_modes) => false, + RequireMode::Hybrid(_singular_require_modes) => Err(DarkluaError::custom("cannot get module folder name of hybrid")), } } @@ -180,12 +185,12 @@ impl RequireModeLike for RequireMode { RequireMode::Single(singular_require_mode) => singular_require_mode.initialize(context), RequireMode::Hybrid(singular_require_modes) => { for mode in singular_require_modes { - if let Ok(x) = mode.initialize(context) { - return Ok(x); + if let Err(err) = mode.initialize(context) { + return Err(err); } } - return Err(DarkluaError::custom("unable to find valid require"))?; + return Ok(()) } } } @@ -224,12 +229,12 @@ impl<'a> RequireConverter<'a> { } fn try_require_conversion(&mut self, call: &mut FunctionCall) -> DarkluaResult<()> { - if let Some(require_path) = self.current.find_require(call, self.context)? { + if let Some((require_path, require_mode)) = self.current.find_require(call, self.context)? { log::trace!("found require path `{}`", require_path.display()); if let Some(new_arguments) = self.target - .generate_require(&require_path, &self.current, self.context)? + .generate_require(&require_path, &require_mode, self.context)? { call.set_arguments(new_arguments); } diff --git a/src/rules/convert_require/roblox_require_mode.rs b/src/rules/convert_require/roblox_require_mode.rs index 36145056..e531985b 100644 --- a/src/rules/convert_require/roblox_require_mode.rs +++ b/src/rules/convert_require/roblox_require_mode.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use crate::{ DarkluaError, frontend::DarkluaResult, nodes::{Arguments, FunctionCall, Prefix}, rules::{ - Context, RequireModeLike, convert_require::rojo_sourcemap::RojoSourcemap, require::path_utils::{get_relative_parent_path, get_relative_path} + Context, RequireModeLike, SingularRequireMode, convert_require::rojo_sourcemap::RojoSourcemap, require::path_utils::{get_relative_parent_path, get_relative_path} }, utils }; @@ -53,15 +53,15 @@ impl RequireModeLike for RobloxRequireMode { Ok(()) } - fn is_module_folder_name(&self, path: &Path) -> bool { - matches!(path.file_stem().and_then(std::ffi::OsStr::to_str), Some("init")) + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { + Ok(matches!(path.file_stem().and_then(std::ffi::OsStr::to_str), Some("init"))) } fn find_require( &self, _call: &FunctionCall, _context: &Context, - ) -> DarkluaResult> { + ) -> DarkluaResult> { Err(DarkluaError::custom("unsupported initial require mode") .context("Roblox require mode cannot be used as the current require mode")) } @@ -145,7 +145,7 @@ impl RequireModeLike for RobloxRequireMode { ); let require_is_module_folder_name = - current.is_module_folder_name(&relative_require_path); + current.is_module_folder_name(&relative_require_path)?; // if we are about to make a require to a path like `./x/y/z/init.lua` // we can pop the last component from the path let take_components = relative_require_path @@ -155,7 +155,7 @@ impl RequireModeLike for RobloxRequireMode { let mut path_components = relative_require_path.components().take(take_components); if let Some(first_component) = path_components.next() { - let source_is_module_folder_name = current.is_module_folder_name(&source_path); + let source_is_module_folder_name = current.is_module_folder_name(&source_path)?; let instance_path = path_components.try_fold( match first_component { diff --git a/src/rules/require/luau_path_locator.rs b/src/rules/require/luau_path_locator.rs index 99789f9c..e4f088b2 100644 --- a/src/rules/require/luau_path_locator.rs +++ b/src/rules/require/luau_path_locator.rs @@ -42,7 +42,7 @@ impl super::PathLocator for LuauPathLocator<'_, '_, '_> { ); if is_require_relative(&path) { - if self.luau_require_mode.is_module_folder_name(source) { + if self.luau_require_mode.is_module_folder_name(source)? { path = get_relative_parent_path(get_relative_parent_path(source)).join(path); } else { path = get_relative_parent_path(source).join(path); diff --git a/src/rules/require/luau_require_mode.rs b/src/rules/require/luau_require_mode.rs index c6638468..f9242354 100644 --- a/src/rules/require/luau_require_mode.rs +++ b/src/rules/require/luau_require_mode.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use crate::frontend::DarkluaResult; use crate::nodes::{Arguments, FunctionCall, StringExpression}; use crate::rules::require::{match_path_require_call, path_utils, LuauPathLocator, PathLocator}; -use crate::rules::{Context, RequireModeLike}; +use crate::rules::{Context, RequireModeLike, SingularRequireMode}; use crate::utils; use crate::DarkluaError; @@ -57,17 +57,17 @@ impl RequireModeLike for LuauRequireMode { Ok(()) } - fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { let expect_value = Some(self.module_folder_name()); - path.file_name().and_then(OsStr::to_str) == expect_value - || path.file_stem().and_then(OsStr::to_str) == expect_value + Ok(path.file_name().and_then(OsStr::to_str) == expect_value + || path.file_stem().and_then(OsStr::to_str) == expect_value) } fn find_require( &self, call: &FunctionCall, context: &Context, - ) -> DarkluaResult> { + ) -> DarkluaResult> { if let Some(literal_path) = match_path_require_call(call) { let path_locator = LuauPathLocator::new(self, context.project_location(), context.resources()); @@ -75,7 +75,7 @@ impl RequireModeLike for LuauRequireMode { let required_path = path_locator.find_require_path(literal_path, context.current_path())?; - Ok(Some(required_path)) + Ok(Some((required_path, SingularRequireMode::Luau(self.clone())))) } else { Ok(None) } @@ -102,8 +102,8 @@ impl RequireModeLike for LuauRequireMode { ); // if the source path is 'init.luau' or 'init.lua', we need to use @self - if self.is_module_folder_name(&source_path) { - let require_is_module_folder_name = self.is_module_folder_name(require_path); + if self.is_module_folder_name(&source_path)? { + let require_is_module_folder_name = self.is_module_folder_name(require_path)?; // if we are about to make a require to a path like `./x/y/z/init.lua` // we can pop the last component from the path let take_components = require_path @@ -173,7 +173,7 @@ impl RequireModeLike for LuauRequireMode { relative_require_path.display() ); - if self.is_module_folder_name(&source_path) { + if self.is_module_folder_name(&source_path)? { if relative_require_path.starts_with(".") { let mut new_path = PathBuf::from("@self"); new_path.extend(relative_require_path.components().skip(1)); @@ -199,7 +199,7 @@ impl RequireModeLike for LuauRequireMode { } }; - if self.is_module_folder_name(&generated_path) { + if self.is_module_folder_name(&generated_path)? { generated_path.pop(); } else if matches!(generated_path.extension(), Some(extension) if extension == "lua" || extension == "luau") { @@ -288,7 +288,7 @@ mod test { let context = make_context_with_files("/project/src/main.luau", &["/project/src/./module"]); let call = make_call("./module"); let result = mode.find_require(&call, &context).unwrap(); - assert_eq!(result, Some(PathBuf::from("/project/src/./module"))); + assert_eq!(result.map(|(x, _)| x), Some(PathBuf::from("/project/src/./module"))); } #[test] @@ -303,7 +303,7 @@ mod test { .components() .collect::(); let norm = |p: &std::path::PathBuf| p.components().collect::(); - assert_eq!(result.map(|p| norm(&p)), Some(norm(&expected))); + assert_eq!(result.map(|(p, _)| norm(&p)), Some(norm(&expected))); } mod default { @@ -325,35 +325,35 @@ mod test { fn is_false_for_regular_name() { let require_mode = LuauRequireMode::default(); - assert!(!require_mode.is_module_folder_name(Path::new("oops.lua"))); + assert!(!require_mode.is_module_folder_name(Path::new("oops.lua")).unwrap()); } #[test] fn is_true_for_init_lua() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.lua"))); + assert!(require_mode.is_module_folder_name(Path::new("init.lua")).unwrap()); } #[test] fn is_true_for_init_luau() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.luau"))); + assert!(require_mode.is_module_folder_name(Path::new("init.luau")).unwrap()); } #[test] fn is_true_for_folder_init_lua() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua"))); + assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua")).unwrap()); } #[test] fn is_true_for_folder_init_luau() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau"))); + assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau")).unwrap()); } } diff --git a/src/rules/require/path_require_mode.rs b/src/rules/require/path_require_mode.rs index 7591fb18..521bcb3f 100644 --- a/src/rules/require/path_require_mode.rs +++ b/src/rules/require/path_require_mode.rs @@ -4,7 +4,7 @@ use crate::frontend::DarkluaResult; use crate::nodes::{Arguments, FunctionCall, StringExpression}; use crate::rules::require::path_utils::get_relative_path; use crate::rules::require::{match_path_require_call, path_utils, PathLocator}; -use crate::rules::{Context, RequireModeLike}; +use crate::rules::{Context, RequireModeLike, SingularRequireMode}; use crate::utils; use crate::DarkluaError; @@ -79,22 +79,22 @@ impl RequireModeLike for PathRequireMode { &self, call: &FunctionCall, context: &Context, - ) -> DarkluaResult> { + ) -> DarkluaResult> { if let Some(literal_path) = match_path_require_call(call) { let required_path = RequirePathLocator::new(self, context.project_location(), context.resources()) .find_require_path(literal_path, context.current_path())?; - Ok(Some(required_path)) + Ok(Some((required_path, SingularRequireMode::Path(self.clone())))) } else { Ok(None) } } - fn is_module_folder_name(&self, path: &Path) -> bool { + fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { let expect_value = Some(self.module_folder_name.as_str()); - path.file_name().and_then(OsStr::to_str) == expect_value - || path.file_stem().and_then(OsStr::to_str) == expect_value + Ok(path.file_name().and_then(OsStr::to_str) == expect_value + || path.file_stem().and_then(OsStr::to_str) == expect_value) } fn generate_require( @@ -171,7 +171,7 @@ impl RequireModeLike for PathRequireMode { } }; - if self.is_module_folder_name(&generated_path) { + if self.is_module_folder_name(&generated_path)? { generated_path.pop(); } else if matches!(generated_path.extension(), Some(extension) if extension == "lua" || extension == "luau") { @@ -231,35 +231,35 @@ mod test { fn default_mode_is_false_for_regular_name() { let require_mode = PathRequireMode::default(); - assert!(!require_mode.is_module_folder_name(Path::new("oops.lua"))); + assert!(!require_mode.is_module_folder_name(Path::new("oops.lua")).unwrap()); } #[test] fn default_mode_is_true_for_init_lua() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.lua"))); + assert!(require_mode.is_module_folder_name(Path::new("init.lua")).unwrap()); } #[test] fn default_mode_is_true_for_init_luau() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.luau"))); + assert!(require_mode.is_module_folder_name(Path::new("init.luau")).unwrap()); } #[test] fn default_mode_is_true_for_folder_init_lua() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua"))); + assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua")).unwrap()); } #[test] fn default_mode_is_true_for_folder_init_luau() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau"))); + assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau")).unwrap()); } } } diff --git a/src/rules/rule_property.rs b/src/rules/rule_property.rs index a2f84f35..23d09ed6 100644 --- a/src/rules/rule_property.rs +++ b/src/rules/rule_property.rs @@ -428,6 +428,17 @@ mod test { ); } + #[test] + fn parse_require_mode_hybrid() { + parse_rule_property( + r#"[{ "name": "luau" }, { "name": "roblox" }]"#, + RulePropertyValue::RequireMode(RequireMode::Hybrid(vec![ + SingularRequireMode::Luau(Default::default()), + SingularRequireMode::Roblox(Default::default()) + ])) + ); + } + #[test] fn parse_null_as_none() { parse_rule_property("null", RulePropertyValue::None); From dc026d41b539434824fbc8525323200373e7464d Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 15:22:56 +0000 Subject: [PATCH 4/8] Add support for `RobloxRequireMode::find_require` --- .../convert_require/roblox_require_mode.rs | 221 +++++++++++++++++- 1 file changed, 216 insertions(+), 5 deletions(-) diff --git a/src/rules/convert_require/roblox_require_mode.rs b/src/rules/convert_require/roblox_require_mode.rs index e531985b..cbc05da8 100644 --- a/src/rules/convert_require/roblox_require_mode.rs +++ b/src/rules/convert_require/roblox_require_mode.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Serialize}; use crate::{ - DarkluaError, frontend::DarkluaResult, nodes::{Arguments, FunctionCall, Prefix}, rules::{ + DarkluaError, frontend::DarkluaResult, nodes::{Arguments, Expression, FieldExpression, FunctionCall, IndexExpression, Prefix}, rules::{ Context, RequireModeLike, SingularRequireMode, convert_require::rojo_sourcemap::RojoSourcemap, require::path_utils::{get_relative_parent_path, get_relative_path} }, utils }; @@ -59,11 +59,10 @@ impl RequireModeLike for RobloxRequireMode { fn find_require( &self, - _call: &FunctionCall, - _context: &Context, + call: &FunctionCall, + context: &Context, ) -> DarkluaResult> { - Err(DarkluaError::custom("unsupported initial require mode") - .context("Roblox require mode cannot be used as the current require mode")) + parse_roblox(call, context.current_path()).map(|x| x.map(|y| (y, SingularRequireMode::Roblox(self.clone())))) } fn generate_require( @@ -231,3 +230,215 @@ impl RequireModeLike for RobloxRequireMode { } } } + +#[derive(Deserialize)] +struct RojoTree { + #[serde(rename = "$path")] + path: PathBuf, +} + +#[derive(Deserialize)] +struct RojoProject { + tree: RojoTree, +} + +pub fn parse_roblox(call: &FunctionCall, starting_path: &Path) -> DarkluaResult> { + let Arguments::Tuple(args) = call.get_arguments() else { + Err( + DarkluaError::custom("unexpected require call, only accepts tuples") + .context("while finding roblox requires"), + )? + }; + + let mut path_builder = Vec::::new(); + let mut current_path = starting_path.to_path_buf(); + let mut parented = false; + + match args.iter_values().next() { + Some(Expression::Field(field)) => { + parse_roblox_field(field, &mut path_builder, &mut current_path, &mut parented)? + } + Some(Expression::Index(index)) => { + parse_roblox_index(index, &mut path_builder, &mut current_path, &mut parented)? + } + Some(Expression::Call(call)) => { + parse_ffc_wfc(&call, &mut path_builder, &mut current_path, &mut parented)? + } + _ => Err(DarkluaError::custom( + "unexpected require argument, only accepts fields or indexes", + ) + .context("while getting roblox path"))?, + }; + + if let Some(back) = path_builder.last() { + if back != "script" { + Err( + DarkluaError::custom("roblox requires must start with `script.`") + .context("while getting roblox require path"), + )? + } else { + path_builder.pop(); + } + } + + while let Some(x) = path_builder.pop() { + current_path.push(x) + } + + let mut base_path = starting_path.to_path_buf(); + base_path.pop(); + + let mut project_json = current_path.clone(); + project_json.push("default.project.json"); + if let Ok(project_json) = std::fs::File::open(project_json) { + let project_data: RojoProject = serde_json::from_reader(project_json)?; + current_path.push(project_data.tree.path) + } + + Ok(Some(current_path)) +} + +fn parse_ffc_wfc( + call: &FunctionCall, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + if let Some(x) = call.get_method() { + if !matches!(x.get_name().as_str(), "FindFirstChild" | "WaitForChild") { + Err(DarkluaError::custom("invalid method call found") + .context("while parsing FFC/WFC in require"))? + } + } else { + Err(DarkluaError::custom("only method calls are accepted") + .context("while parsing FFC/WFC in require"))? + } + + match call.get_arguments() { + Arguments::String(x) => path_builder.push(x.clone().into_string().unwrap_or_default()), + Arguments::Tuple(x) => path_builder.push( + x.iter_values() + .next() + .and_then(|x| match x { + Expression::String(x) => x.clone().into_string(), + _ => None, + }) + .ok_or( + DarkluaError::custom("no arguments found for method call") + .context("while parsing FFC/WFC in require"), + )?, + ), + _ => Err(DarkluaError::custom( + "only string and tuple arguments are accepted for method calls", + ) + .context("while parsing FFC/WFC in require"))?, + }; + + parse_roblox_prefix(call.get_prefix(), path_builder, current_path, parented)?; + + Ok(()) +} + +fn parse_roblox_prefix( + prefix: &Prefix, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + match prefix { + Prefix::Field(x) => parse_roblox_field(x, path_builder, current_path, parented)?, + Prefix::Index(x) => parse_roblox_index(x, path_builder, current_path, parented)?, + Prefix::Identifier(x) => { + handle_roblox_script_parent(x.get_name(), path_builder, current_path, parented)? + } + Prefix::Call(x) => parse_ffc_wfc(&x, path_builder, current_path, parented)?, + _ => Err( + DarkluaError::custom("unexpected prefix, only constants accepted") + .context("while parsing roblox require"), + )?, + }; + Ok(()) +} + +fn parse_roblox_expression( + expression: &Expression, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + match expression { + Expression::Field(x) => parse_roblox_field(x, path_builder, current_path, parented)?, + Expression::Index(x) => parse_roblox_index(x, path_builder, current_path, parented)?, + Expression::Identifier(x) => { + handle_roblox_script_parent(x.get_name(), path_builder, current_path, parented)? + } + Expression::String(x) => handle_roblox_script_parent( + x.get_string_value().unwrap_or_default(), + path_builder, + current_path, + parented, + )?, + Expression::Call(x) => parse_ffc_wfc(&x, path_builder, current_path, parented)?, + _ => Err( + DarkluaError::custom("unexpected expression, only constants accepted") + .context("while parsing roblox require"), + )?, + }; + Ok(()) +} + +fn parse_roblox_field( + field: &FieldExpression, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + handle_roblox_script_parent( + field.get_field().get_name(), + path_builder, + current_path, + parented, + )?; + parse_roblox_prefix(field.get_prefix(), path_builder, current_path, parented) +} + +fn parse_roblox_index( + index: &IndexExpression, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + parse_roblox_expression(index.get_index(), path_builder, current_path, parented)?; + parse_roblox_prefix(index.get_prefix(), path_builder, current_path, parented) +} + +fn handle_roblox_script_parent( + str: &str, + path_builder: &mut Vec, + current_path: &mut PathBuf, + parented: &mut bool, +) -> DarkluaResult<()> { + match str { + "script" => { + while let Some(back) = path_builder.last() { + if !(*parented) { + current_path.pop(); + *parented = true; + } + + if back == "Parent" { + path_builder.pop(); + } else { + break; + } + } + } + "Parent" => { + *parented = true; + current_path.pop(); + } + _ => {} + }; + path_builder.push(str.to_string()); + Ok(()) +} From cc37a25d729186c6bc6cdb50b4a1a760e104bd19 Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 20:59:50 +0000 Subject: [PATCH 5/8] Add hybrid mode to bundle --- src/frontend/configuration.rs | 18 ++- src/rules/bundle/mod.rs | 16 +-- src/rules/bundle/path_require_mode/mod.rs | 11 +- src/rules/bundle/require_mode.rs | 138 ++++++++++++++-------- src/rules/convert_require/mod.rs | 70 ++++++++++- src/rules/require/hybrid_path_locator.rs | 99 ++++++++++++++++ src/rules/require/luau_path_locator.rs | 8 +- src/rules/require/mod.rs | 10 +- src/rules/require/path_locator.rs | 8 +- src/rules/require/roblox_path_locator.rs | 81 +++++++++++++ src/utils/mod.rs | 2 + src/utils/serde_string_or_default.rs | 49 ++++++++ 12 files changed, 430 insertions(+), 80 deletions(-) create mode 100644 src/rules/require/hybrid_path_locator.rs create mode 100644 src/rules/require/roblox_path_locator.rs create mode 100644 src/utils/serde_string_or_default.rs diff --git a/src/frontend/configuration.rs b/src/frontend/configuration.rs index 10e5d12a..d2fb8102 100644 --- a/src/frontend/configuration.rs +++ b/src/frontend/configuration.rs @@ -7,13 +7,9 @@ use std::{ use serde::{Deserialize, Serialize}; use crate::{ - generator::{DenseLuaGenerator, LuaGenerator, ReadableLuaGenerator, TokenBasedLuaGenerator}, - nodes::Block, - rules::{ - bundle::{BundleRequireMode, Bundler}, - get_default_rules, Rule, - }, - Parser, + Parser, generator::{DenseLuaGenerator, LuaGenerator, ReadableLuaGenerator, TokenBasedLuaGenerator}, nodes::Block, rules::{ + RequireMode, Rule, bundle::Bundler, get_default_rules + } }; const DEFAULT_COLUMN_SPAN: usize = 80; @@ -252,8 +248,8 @@ impl FromStr for GeneratorParameters { #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(deny_unknown_fields, rename_all = "snake_case")] pub struct BundleConfiguration { - #[serde(deserialize_with = "crate::utils::string_or_struct")] - require_mode: BundleRequireMode, + #[serde(deserialize_with = "crate::utils::string_or_default")] + require_mode: RequireMode, #[serde(skip_serializing_if = "Option::is_none")] modules_identifier: Option, #[serde(default, skip_serializing_if = "HashSet::is_empty")] @@ -262,7 +258,7 @@ pub struct BundleConfiguration { impl BundleConfiguration { /// Creates a new bundle configuration with the specified require mode. - pub fn new(require_mode: impl Into) -> Self { + pub fn new(require_mode: impl Into) -> Self { Self { require_mode: require_mode.into(), modules_identifier: None, @@ -282,7 +278,7 @@ impl BundleConfiguration { self } - pub(crate) fn require_mode(&self) -> &BundleRequireMode { + pub(crate) fn require_mode(&self) -> &RequireMode { &self.require_mode } diff --git a/src/rules/bundle/mod.rs b/src/rules/bundle/mod.rs index b3bc9ff5..cbeb213f 100644 --- a/src/rules/bundle/mod.rs +++ b/src/rules/bundle/mod.rs @@ -6,18 +6,18 @@ use std::path::Path; use crate::nodes::Block; use crate::rules::{ - Context, Rule, RuleConfiguration, RuleConfigurationError, RuleProcessResult, RuleProperties, + Context, RequireMode, Rule, RuleConfiguration, RuleConfigurationError, RuleProcessResult, RuleProperties }; use crate::Parser; -pub(crate) use rename_type_declaration::RenameTypeDeclarationProcessor; pub use require_mode::BundleRequireMode; +pub(crate) use rename_type_declaration::RenameTypeDeclarationProcessor; use wax::Pattern; pub const BUNDLER_RULE_NAME: &str = "bundler"; #[derive(Debug)] -pub(crate) struct BundleOptions { +pub struct BundleOptions { parser: Parser, modules_identifier: String, excludes: Option>, @@ -74,14 +74,14 @@ impl BundleOptions { /// A rule that inlines required modules #[derive(Debug)] pub(crate) struct Bundler { - require_mode: BundleRequireMode, + require_mode: RequireMode, options: BundleOptions, } impl Bundler { pub(crate) fn new<'a>( parser: Parser, - require_mode: BundleRequireMode, + require_mode: RequireMode, excludes: impl Iterator, ) -> Self { Self { @@ -124,19 +124,19 @@ const DEFAULT_MODULE_IDENTIFIER: &str = "__DARKLUA_BUNDLE_MODULES"; #[cfg(test)] mod test { use super::*; - use crate::rules::{require::PathRequireMode, Rule}; + use crate::rules::{RequireMode, Rule, require::PathRequireMode}; use insta::assert_json_snapshot; fn new_rule() -> Bundler { Bundler::new( Parser::default(), - BundleRequireMode::default(), + RequireMode::default(), std::iter::empty(), ) } - fn new_rule_with_require_mode(mode: impl Into) -> Bundler { + fn new_rule_with_require_mode(mode: impl Into) -> Bundler { Bundler::new(Parser::default(), mode.into(), std::iter::empty()) } diff --git a/src/rules/bundle/path_require_mode/mod.rs b/src/rules/bundle/path_require_mode/mod.rs index 1fca9261..bb389384 100644 --- a/src/rules/bundle/path_require_mode/mod.rs +++ b/src/rules/bundle/path_require_mode/mod.rs @@ -17,7 +17,7 @@ use crate::nodes::{ use crate::process::{ to_expression, DefaultVisitor, IdentifierTracker, NodeProcessor, NodeVisitor, ScopeVisitor, }; -use crate::rules::require::{is_require_call, match_path_require_call, PathLocator}; +use crate::rules::require::{PathLocator, SingularPathLocator, is_require_call}; use crate::rules::{ Context, ContextBuilder, FlawlessRule, ReplaceReferencedTokens, RuleProcessResult, }; @@ -81,16 +81,16 @@ impl<'a, 'b, 'resources, PathLocatorImpl: PathLocator> } } - fn require_call(&self, call: &FunctionCall) -> Option { + fn require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { if is_require_call(call, self) { - match_path_require_call(call) + self.path_locator.match_path_require_call(call, source) } else { None } } fn try_inline_call(&mut self, call: &FunctionCall) -> Option { - let literal_require_path = self.require_call(call)?; + let (literal_require_path, path_locator) = self.require_call(call, &self.source)?; if self.options.is_excluded(&literal_require_path) { log::info!( @@ -101,8 +101,7 @@ impl<'a, 'b, 'resources, PathLocatorImpl: PathLocator> return None; } - let require_path = match self - .path_locator + let require_path = match path_locator .find_require_path(&literal_require_path, &self.source) { Ok(path) => path, diff --git a/src/rules/bundle/require_mode.rs b/src/rules/bundle/require_mode.rs index d4706e36..a3d7f027 100644 --- a/src/rules/bundle/require_mode.rs +++ b/src/rules/bundle/require_mode.rs @@ -1,81 +1,123 @@ -use std::str::FromStr; - -use serde::{Deserialize, Serialize}; - use crate::rules::{ - RequireModeLike, RuleProcessResult, require::{LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator} + RequireMode, RequireModeLike, RobloxRequireMode, RuleProcessResult, SingularRequireMode, require::{HybridPathLocator, LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator, RobloxPathLocator} }; use crate::{nodes::Block, rules::Context}; use super::{path_require_mode, BundleOptions}; -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] -#[serde(deny_unknown_fields, rename_all = "snake_case", tag = "name")] -pub enum BundleRequireMode { - Path(PathRequireMode), - Luau(LuauRequireMode), +pub trait BundleRequireMode { + fn process_block( + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult; } -impl From for BundleRequireMode { - fn from(mode: PathRequireMode) -> Self { - Self::Path(mode) +impl BundleRequireMode for PathRequireMode { + fn process_block( + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { + let mut require_mode = self.clone(); + require_mode + .initialize(context) + .map_err(|err| err.to_string())?; + + let locator = RequirePathLocator::new( + &require_mode, + context.project_location(), + context.resources(), + ); + + path_require_mode::process_block(block, context, options, locator) } } -impl FromStr for BundleRequireMode { - type Err = String; +impl BundleRequireMode for LuauRequireMode { + fn process_block( + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { + let mut require_mode = self.clone(); + require_mode + .initialize(context) + .map_err(|err| err.to_string())?; + + let locator = LuauPathLocator::new( + &require_mode, + context.project_location(), + context.resources(), + ); - fn from_str(s: &str) -> Result { - Ok(match s { - "path" => Self::Path(Default::default()), - "luau" => Self::Luau(Default::default()), - _ => return Err(format!("invalid require mode `{}`", s)), - }) + path_require_mode::process_block(block, context, options, locator) } } -impl Default for BundleRequireMode { - fn default() -> Self { - Self::Path(Default::default()) +impl BundleRequireMode for RobloxRequireMode { + fn process_block( + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { + let mut require_mode = self.clone(); + require_mode + .initialize(context) + .map_err(|err| err.to_string())?; + + let locator = RobloxPathLocator::new( + &require_mode, + context.project_location(), + context.resources() + ); + + path_require_mode::process_block(block, context, options, locator) } } -impl BundleRequireMode { - pub(crate) fn process_block( +impl BundleRequireMode for SingularRequireMode { + fn process_block( &self, block: &mut Block, context: &Context, options: &BundleOptions, ) -> RuleProcessResult { match self { - Self::Path(path_require_mode) => { - let mut require_mode = path_require_mode.clone(); - require_mode - .initialize(context) - .map_err(|err| err.to_string())?; - - let locator = RequirePathLocator::new( - &require_mode, - context.project_location(), - context.resources(), - ); + Self::Path(path_require_mode) => path_require_mode.process_block(block, context, options), + Self::Luau(luau_require_mode) => luau_require_mode.process_block(block, context, options), + Self::Roblox(roblox_require_mode) => roblox_require_mode.process_block(block, context, options) + } + } +} - path_require_mode::process_block(block, context, options, locator) - } - Self::Luau(luau_require_mode) => { - let mut require_mode = luau_require_mode.clone(); - require_mode - .initialize(context) - .map_err(|err| err.to_string())?; +impl BundleRequireMode for RequireMode { + fn process_block( + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { + match self { + RequireMode::Single(singular_require_mode) => singular_require_mode.process_block(block, context, options), + RequireMode::Hybrid(singular_require_modes) => { + let mut modes = singular_require_modes.clone(); + for mode in modes.iter_mut() { + mode.initialize(context).map_err(|err| err.to_string())?; + } - let locator = LuauPathLocator::new( - &require_mode, + let locator = HybridPathLocator::new( + &modes, context.project_location(), context.resources(), ); path_require_mode::process_block(block, context, options, locator) - } + }, } } -} +} \ No newline at end of file diff --git a/src/rules/convert_require/mod.rs b/src/rules/convert_require/mod.rs index f6b67387..19730909 100644 --- a/src/rules/convert_require/mod.rs +++ b/src/rules/convert_require/mod.rs @@ -14,7 +14,7 @@ use crate::DarkluaError; use instance_path::InstancePath; pub use roblox_index_style::RobloxIndexStyle; -pub use roblox_require_mode::RobloxRequireMode; +pub use roblox_require_mode::{RobloxRequireMode, parse_roblox}; use super::{verify_required_properties, PathRequireMode, Rule, RuleProcessResult}; use crate::rules::require::LuauRequireMode; @@ -55,6 +55,28 @@ pub enum SingularRequireMode { Roblox(RobloxRequireMode), } +impl Default for SingularRequireMode { + fn default() -> Self { + Self::Path(Default::default()) + } +} + +impl From for SingularRequireMode { + fn from(value: PathRequireMode) -> Self { + Self::Path(value) + } +} +impl From for SingularRequireMode { + fn from(value: LuauRequireMode) -> Self { + Self::Luau(value) + } +} +impl From for SingularRequireMode { + fn from(value: RobloxRequireMode) -> Self { + Self::Roblox(value) + } +} + impl RequireModeLike for SingularRequireMode { fn find_require( &self, @@ -125,6 +147,51 @@ pub enum RequireMode { Hybrid(Vec), } +impl Default for RequireMode { + fn default() -> Self { + Self::Single(Default::default()) + } +} + +impl FromStr for RequireMode { + type Err = String; + + fn from_str(s: &str) -> Result { + Ok(match s { + "path" => Self::Single(SingularRequireMode::Path(Default::default())), + "luau" => Self::Single(SingularRequireMode::Luau(Default::default())), + "roblox" => Self::Single(SingularRequireMode::Roblox(Default::default())), + "hybrid" => Self::Hybrid(vec![ + SingularRequireMode::Path(Default::default()), + SingularRequireMode::Luau(Default::default()), + SingularRequireMode::Roblox(Default::default()) + ]), + _ => return Err(format!("invalid require mode name `{}`", s)), + }) + } +} + +impl From for RequireMode { + fn from(value: PathRequireMode) -> Self { + Self::Single(value.into()) + } +} +impl From for RequireMode { + fn from(value: LuauRequireMode) -> Self { + Self::Single(value.into()) + } +} +impl From for RequireMode { + fn from(value: RobloxRequireMode) -> Self { + Self::Single(value.into()) + } +} +impl> From> for RequireMode { + fn from(value: Vec) -> Self { + Self::Hybrid(value.into_iter().map(Into::into).collect()) + } +} + impl RequireModeLike for RequireMode { fn find_require( &self, @@ -136,7 +203,6 @@ impl RequireModeLike for RequireMode { singular_require_mode.find_require(call, context) } RequireMode::Hybrid(singular_require_modes) => { - println!("call"); for mode in singular_require_modes { match mode.find_require(call, context) { Ok(Some(x)) => return Ok(Some(x)), diff --git a/src/rules/require/hybrid_path_locator.rs b/src/rules/require/hybrid_path_locator.rs new file mode 100644 index 00000000..ce9d0e64 --- /dev/null +++ b/src/rules/require/hybrid_path_locator.rs @@ -0,0 +1,99 @@ +use std::path::{Path, PathBuf}; + +use crate::{Resources, nodes::FunctionCall, rules::{SingularRequireMode, require::{LuauPathLocator, PathLocator, RequirePathLocator, RobloxPathLocator}}}; + +#[derive(Debug)] +pub enum SingularPathLocator<'a, 'b, 'c> { + Path(RequirePathLocator<'a, 'b, 'c>), + Luau(LuauPathLocator<'a, 'b, 'c>), + Roblox(RobloxPathLocator<'a, 'b, 'c>), +} + +impl<'a, 'b, 'c> SingularPathLocator<'a, 'b, 'c> { + fn from( + value: &'a SingularRequireMode, + extra_module_relative_location: &'b Path, + resources: &'c Resources, + ) -> Self { + match value { + SingularRequireMode::Path(path_require_mode) => Self::Path(RequirePathLocator::new( + &path_require_mode, + extra_module_relative_location, + resources, + )), + SingularRequireMode::Luau(luau_require_mode) => Self::Luau(LuauPathLocator::new( + &luau_require_mode, + extra_module_relative_location, + resources, + )), + SingularRequireMode::Roblox(roblox_require_mode) => Self::Roblox(RobloxPathLocator::new( + &roblox_require_mode, + extra_module_relative_location, + resources, + )), + } + } +} + +impl PathLocator for SingularPathLocator<'_, '_, '_> { + fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + match self { + SingularPathLocator::Path(require_path_locator) => require_path_locator.match_path_require_call(call, source), + SingularPathLocator::Luau(luau_path_locator) => luau_path_locator.match_path_require_call(call, source), + SingularPathLocator::Roblox(roblox_path_locator) => roblox_path_locator.match_path_require_call(call, source), + } + } + + fn find_require_path( + &self, + path: impl Into, + source: &Path, + ) -> Result { + match self { + SingularPathLocator::Path(require_path_locator) => require_path_locator.find_require_path(path, source), + SingularPathLocator::Luau(luau_path_locator) => luau_path_locator.find_require_path(path, source), + SingularPathLocator::Roblox(roblox_path_locator) => roblox_path_locator.find_require_path(path, source), + } + } +} + +#[derive(Debug)] +pub(crate) struct HybridPathLocator<'a, 'b, 'resources> { + path_locators: Vec>, +} + +impl<'a, 'b, 'c> HybridPathLocator<'a, 'b, 'c> { + pub(crate) fn new( + require_modes: &'a Vec, + extra_module_relative_location: &'b Path, + resources: &'c Resources, + ) -> Self { + let mut path_locators = Vec::new(); + + for mode in require_modes { + path_locators.push(SingularPathLocator::from(&mode, extra_module_relative_location, resources)) + } + + Self { path_locators } + } +} + +impl PathLocator for HybridPathLocator<'_, '_, '_> { + fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + for locator in &self.path_locators { + if let Some(x) = locator.match_path_require_call(call, source) { + return Some(x) + } + } + + None + } + + fn find_require_path( + &self, + _path: impl Into, + _source: &Path, + ) -> Result { + Err(crate::DarkluaError::custom("this cannot be called within this context")) + } +} diff --git a/src/rules/require/luau_path_locator.rs b/src/rules/require/luau_path_locator.rs index e4f088b2..d3ee345b 100644 --- a/src/rules/require/luau_path_locator.rs +++ b/src/rules/require/luau_path_locator.rs @@ -2,12 +2,14 @@ use std::path::{Path, PathBuf}; use super::{path_iterator, LuauRequireMode}; use crate::rules::RequireModeLike; +use crate::rules::require::hybrid_path_locator::SingularPathLocator; +use crate::rules::require::match_path_require_call; use crate::rules::require::path_utils::{get_relative_parent_path, is_require_relative}; use crate::{utils, DarkluaError, Resources}; /// A path locator specifically for Luau require mode that implements /// the behavior defined in the Luau RFCs for module path resolution. -#[derive(Debug)] +#[derive(Clone, Debug)] pub(crate) struct LuauPathLocator<'a, 'b, 'resources> { luau_require_mode: &'a LuauRequireMode, extra_module_relative_location: &'b Path, @@ -29,6 +31,10 @@ impl<'a, 'b, 'c> LuauPathLocator<'a, 'b, 'c> { } impl super::PathLocator for LuauPathLocator<'_, '_, '_> { + fn match_path_require_call(&self, call: &crate::nodes::FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + match_path_require_call(call).map(|x| (x, SingularPathLocator::Luau(self.clone()))) + } + fn find_require_path( &self, path: impl Into, diff --git a/src/rules/require/mod.rs b/src/rules/require/mod.rs index 8feb1990..fcc15d28 100644 --- a/src/rules/require/mod.rs +++ b/src/rules/require/mod.rs @@ -1,22 +1,28 @@ +mod hybrid_path_locator; mod luau_path_locator; mod luau_require_mode; mod match_require; mod path_iterator; mod path_locator; mod path_require_mode; +mod roblox_path_locator; pub(crate) mod path_utils; use std::path::{Path, PathBuf}; +pub(crate) use hybrid_path_locator::HybridPathLocator; pub(crate) use luau_path_locator::LuauPathLocator; +pub(crate) use roblox_path_locator::RobloxPathLocator; pub use luau_require_mode::LuauRequireMode; pub(crate) use match_require::{is_require_call, match_path_require_call}; pub(crate) use path_locator::RequirePathLocator; pub use path_require_mode::PathRequireMode; - -use crate::DarkluaError; +pub use crate::rules::require::hybrid_path_locator::SingularPathLocator; +use crate::{DarkluaError, nodes::FunctionCall}; pub(crate) trait PathLocator { + fn match_path_require_call(&self, call: &FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)>; + fn find_require_path( &self, path: impl Into, diff --git a/src/rules/require/path_locator.rs b/src/rules/require/path_locator.rs index f7a5d6ee..1a0ab3ff 100644 --- a/src/rules/require/path_locator.rs +++ b/src/rules/require/path_locator.rs @@ -1,9 +1,9 @@ use std::path::{Path, PathBuf}; use super::{path_iterator, PathRequireMode}; -use crate::{rules::require::path_utils::is_require_relative, utils, DarkluaError, Resources}; +use crate::{DarkluaError, Resources, rules::require::{hybrid_path_locator::SingularPathLocator, match_path_require_call, path_utils::is_require_relative}, utils}; -#[derive(Debug)] +#[derive(Clone, Debug)] pub(crate) struct RequirePathLocator<'a, 'b, 'resources> { path_require_mode: &'a PathRequireMode, extra_module_relative_location: &'b Path, @@ -25,6 +25,10 @@ impl<'a, 'b, 'c> RequirePathLocator<'a, 'b, 'c> { } impl super::PathLocator for RequirePathLocator<'_, '_, '_> { + fn match_path_require_call(&self, call: &crate::nodes::FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + match_path_require_call(call).map(|x| (x, SingularPathLocator::Path(self.clone()))) + } + fn find_require_path( &self, path: impl Into, diff --git a/src/rules/require/roblox_path_locator.rs b/src/rules/require/roblox_path_locator.rs new file mode 100644 index 00000000..93da43a7 --- /dev/null +++ b/src/rules/require/roblox_path_locator.rs @@ -0,0 +1,81 @@ +use std::path::{Path, PathBuf}; + +use crate::{DarkluaError, Resources, nodes::FunctionCall, rules::{RobloxRequireMode, parse_roblox, require::{PathLocator, hybrid_path_locator::SingularPathLocator, path_iterator, path_utils::is_require_relative}}, utils}; + +#[derive(Clone, Debug)] +pub(crate) struct RobloxPathLocator<'a, 'b, 'resources> { + _roblox_require_mode: &'a RobloxRequireMode, + _extra_module_relative_location: &'b Path, + resources: &'resources Resources, +} + +impl<'a, 'b, 'c> RobloxPathLocator<'a, 'b, 'c> { + pub(crate) fn new( + roblox_require_mode: &'a RobloxRequireMode, + extra_module_relative_location: &'b Path, + resources: &'c Resources, + ) -> Self { + Self { + _roblox_require_mode: roblox_require_mode, + _extra_module_relative_location: extra_module_relative_location, + resources, + } + } +} + +impl PathLocator for RobloxPathLocator<'_, '_, '_> { + fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + parse_roblox(call, source) + .ok() + .flatten() + .and_then(|x| { + let mut source_parent = source.to_path_buf(); + source_parent.pop(); + pathdiff::diff_paths(x, source_parent).map(|x| PathBuf::from("./").join(x)) + }) + .map(|x| (x, SingularPathLocator::Roblox(self.clone()))) + } + + fn find_require_path( + &self, + path: impl Into, + source: &Path, + ) -> Result { + let mut path: PathBuf = path.into(); + log::trace!( + "find require path for `{}` from `{}`", + path.display(), + source.display() + ); + + if is_require_relative(&path) { + let mut new_path = source.to_path_buf(); + new_path.pop(); + new_path.push(path); + path = new_path; + } + + let normalized_path = utils::normalize_path_with_current_dir(&path); + for potential_path in path_iterator::find_require_paths( + &normalized_path, + "init", + ) { + if self.resources.is_file(&potential_path)? { + return Ok(utils::normalize_path_with_current_dir(potential_path)); + } + } + + Err( + DarkluaError::resource_not_found(&normalized_path).context(format!( + "tried `{}`", + path_iterator::find_require_paths( + &normalized_path, + "init" + ) + .map(|potential_path| potential_path.display().to_string()) + .collect::>() + .join("`, `") + )), + ) + } +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 548c775d..6a81f1f3 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -3,6 +3,7 @@ pub(crate) mod lines; mod luau_config; mod preserve_arguments_side_effects; mod scoped_hash_map; +mod serde_string_or_default; mod serde_string_or_struct; mod timer; @@ -10,6 +11,7 @@ pub(crate) use expressions_as_statement::{expressions_as_expression, expressions pub(crate) use luau_config::{clear_luau_configuration_cache, find_luau_configuration}; pub(crate) use preserve_arguments_side_effects::preserve_arguments_side_effects; pub(crate) use scoped_hash_map::ScopedHashMap; +pub(crate) use serde_string_or_default::string_or_default; pub(crate) use serde_string_or_struct::string_or_struct; use std::{ ffi::OsStr, diff --git a/src/utils/serde_string_or_default.rs b/src/utils/serde_string_or_default.rs new file mode 100644 index 00000000..2acc6622 --- /dev/null +++ b/src/utils/serde_string_or_default.rs @@ -0,0 +1,49 @@ +use std::{fmt, marker::PhantomData, str::FromStr}; + +use serde::{ + de::{value::MapAccessDeserializer, value::SeqAccessDeserializer, MapAccess, SeqAccess, Visitor}, + Deserialize, Deserializer, +}; + +pub(crate) fn string_or_default<'de, T, D>(deserializer: D) -> Result +where + T: Deserialize<'de> + FromStr, + D: Deserializer<'de>, +{ + struct StringOrStruct(PhantomData); + + impl<'de, T> Visitor<'de> for StringOrStruct + where + T: Deserialize<'de> + FromStr, + { + type Value = T; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("string or object") + } + + fn visit_str(self, value: &str) -> Result + where + E: serde::de::Error, + { + T::from_str(value).map_err(E::custom) + } + + fn visit_map(self, map: M) -> Result + where + M: MapAccess<'de>, + { + Deserialize::deserialize(MapAccessDeserializer::new(map)) + } + + fn visit_seq(self, seq: S) -> Result + where + S: SeqAccess<'de>, + { + // Delegate to the type's standard deserializer for sequences + Deserialize::deserialize(SeqAccessDeserializer::new(seq)) + } + } + + deserializer.deserialize_any(StringOrStruct(PhantomData)) +} From f819eaaaa026c342d4e116ce5e342ebf50a2a62a Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:04:31 +0000 Subject: [PATCH 6/8] Lint and format --- .gitignore | 1 + src/frontend/.configuration.rs.pending-snap | 1 + src/frontend/configuration.rs | 7 +- src/rules/bundle/mod.rs | 7 +- src/rules/bundle/path_require_mode/mod.rs | 11 ++- src/rules/bundle/require_mode.rs | 65 ++++++++------ src/rules/convert_require/mod.rs | 20 ++--- .../convert_require/roblox_require_mode.rs | 25 ++++-- src/rules/require/hybrid_path_locator.rs | 85 +++++++++++++------ src/rules/require/luau_path_locator.rs | 8 +- src/rules/require/luau_require_mode.rs | 30 +++++-- src/rules/require/mod.rs | 14 +-- src/rules/require/path_locator.rs | 16 +++- src/rules/require/path_require_mode.rs | 25 ++++-- src/rules/require/roblox_path_locator.rs | 43 ++++++---- src/rules/rule_property.rs | 37 ++++---- src/utils/serde_string_or_default.rs | 4 +- 17 files changed, 262 insertions(+), 137 deletions(-) create mode 100644 src/frontend/.configuration.rs.pending-snap diff --git a/.gitignore b/.gitignore index 8dd3e8f5..6a9d0eac 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .vscode bench_content/**/ +test \ No newline at end of file diff --git a/src/frontend/.configuration.rs.pending-snap b/src/frontend/.configuration.rs.pending-snap new file mode 100644 index 00000000..0b16f7d9 --- /dev/null +++ b/src/frontend/.configuration.rs.pending-snap @@ -0,0 +1 @@ +{"run_id":"1766955857-445258800","line":496,"new":{"module_name":"darklua_core__frontend__configuration__test__bundle_configuration","snapshot_name":"deserialize_unknown_require_mode_name","metadata":{"source":"src/frontend/configuration.rs","assertion_line":496,"expression":"result.expect_err(\"deserialization should fail\").to_string()"},"snapshot":"invalid require mode name `oops` at line 1 column 26"},"old":{"module_name":"darklua_core__frontend__configuration__test__bundle_configuration","metadata":{},"snapshot":"invalid require mode `oops` at line 1 column 26"}} diff --git a/src/frontend/configuration.rs b/src/frontend/configuration.rs index d2fb8102..97c7f8b5 100644 --- a/src/frontend/configuration.rs +++ b/src/frontend/configuration.rs @@ -7,9 +7,10 @@ use std::{ use serde::{Deserialize, Serialize}; use crate::{ - Parser, generator::{DenseLuaGenerator, LuaGenerator, ReadableLuaGenerator, TokenBasedLuaGenerator}, nodes::Block, rules::{ - RequireMode, Rule, bundle::Bundler, get_default_rules - } + generator::{DenseLuaGenerator, LuaGenerator, ReadableLuaGenerator, TokenBasedLuaGenerator}, + nodes::Block, + rules::{bundle::Bundler, get_default_rules, RequireMode, Rule}, + Parser, }; const DEFAULT_COLUMN_SPAN: usize = 80; diff --git a/src/rules/bundle/mod.rs b/src/rules/bundle/mod.rs index cbeb213f..9365cb3d 100644 --- a/src/rules/bundle/mod.rs +++ b/src/rules/bundle/mod.rs @@ -6,12 +6,13 @@ use std::path::Path; use crate::nodes::Block; use crate::rules::{ - Context, RequireMode, Rule, RuleConfiguration, RuleConfigurationError, RuleProcessResult, RuleProperties + Context, RequireMode, Rule, RuleConfiguration, RuleConfigurationError, RuleProcessResult, + RuleProperties, }; use crate::Parser; -pub use require_mode::BundleRequireMode; pub(crate) use rename_type_declaration::RenameTypeDeclarationProcessor; +pub use require_mode::BundleRequireMode; use wax::Pattern; pub const BUNDLER_RULE_NAME: &str = "bundler"; @@ -124,7 +125,7 @@ const DEFAULT_MODULE_IDENTIFIER: &str = "__DARKLUA_BUNDLE_MODULES"; #[cfg(test)] mod test { use super::*; - use crate::rules::{RequireMode, Rule, require::PathRequireMode}; + use crate::rules::{require::PathRequireMode, RequireMode, Rule}; use insta::assert_json_snapshot; diff --git a/src/rules/bundle/path_require_mode/mod.rs b/src/rules/bundle/path_require_mode/mod.rs index bb389384..801febb8 100644 --- a/src/rules/bundle/path_require_mode/mod.rs +++ b/src/rules/bundle/path_require_mode/mod.rs @@ -17,7 +17,7 @@ use crate::nodes::{ use crate::process::{ to_expression, DefaultVisitor, IdentifierTracker, NodeProcessor, NodeVisitor, ScopeVisitor, }; -use crate::rules::require::{PathLocator, SingularPathLocator, is_require_call}; +use crate::rules::require::{is_require_call, PathLocator, SingularPathLocator}; use crate::rules::{ Context, ContextBuilder, FlawlessRule, ReplaceReferencedTokens, RuleProcessResult, }; @@ -81,7 +81,11 @@ impl<'a, 'b, 'resources, PathLocatorImpl: PathLocator> } } - fn require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn require_call( + &self, + call: &FunctionCall, + source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { if is_require_call(call, self) { self.path_locator.match_path_require_call(call, source) } else { @@ -101,8 +105,7 @@ impl<'a, 'b, 'resources, PathLocatorImpl: PathLocator> return None; } - let require_path = match path_locator - .find_require_path(&literal_require_path, &self.source) + let require_path = match path_locator.find_require_path(&literal_require_path, &self.source) { Ok(path) => path, Err(err) => { diff --git a/src/rules/bundle/require_mode.rs b/src/rules/bundle/require_mode.rs index a3d7f027..f67fcee8 100644 --- a/src/rules/bundle/require_mode.rs +++ b/src/rules/bundle/require_mode.rs @@ -1,5 +1,9 @@ use crate::rules::{ - RequireMode, RequireModeLike, RobloxRequireMode, RuleProcessResult, SingularRequireMode, require::{HybridPathLocator, LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator, RobloxPathLocator} + require::{ + HybridPathLocator, LuauPathLocator, LuauRequireMode, PathRequireMode, RequirePathLocator, + RobloxPathLocator, + }, + RequireMode, RequireModeLike, RobloxRequireMode, RuleProcessResult, SingularRequireMode, }; use crate::{nodes::Block, rules::Context}; @@ -16,11 +20,11 @@ pub trait BundleRequireMode { impl BundleRequireMode for PathRequireMode { fn process_block( - &self, - block: &mut Block, - context: &Context, - options: &BundleOptions, - ) -> RuleProcessResult { + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { let mut require_mode = self.clone(); require_mode .initialize(context) @@ -38,11 +42,11 @@ impl BundleRequireMode for PathRequireMode { impl BundleRequireMode for LuauRequireMode { fn process_block( - &self, - block: &mut Block, - context: &Context, - options: &BundleOptions, - ) -> RuleProcessResult { + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { let mut require_mode = self.clone(); require_mode .initialize(context) @@ -60,11 +64,11 @@ impl BundleRequireMode for LuauRequireMode { impl BundleRequireMode for RobloxRequireMode { fn process_block( - &self, - block: &mut Block, - context: &Context, - options: &BundleOptions, - ) -> RuleProcessResult { + &self, + block: &mut Block, + context: &Context, + options: &BundleOptions, + ) -> RuleProcessResult { let mut require_mode = self.clone(); require_mode .initialize(context) @@ -73,7 +77,7 @@ impl BundleRequireMode for RobloxRequireMode { let locator = RobloxPathLocator::new( &require_mode, context.project_location(), - context.resources() + context.resources(), ); path_require_mode::process_block(block, context, options, locator) @@ -88,9 +92,15 @@ impl BundleRequireMode for SingularRequireMode { options: &BundleOptions, ) -> RuleProcessResult { match self { - Self::Path(path_require_mode) => path_require_mode.process_block(block, context, options), - Self::Luau(luau_require_mode) => luau_require_mode.process_block(block, context, options), - Self::Roblox(roblox_require_mode) => roblox_require_mode.process_block(block, context, options) + Self::Path(path_require_mode) => { + path_require_mode.process_block(block, context, options) + } + Self::Luau(luau_require_mode) => { + luau_require_mode.process_block(block, context, options) + } + Self::Roblox(roblox_require_mode) => { + roblox_require_mode.process_block(block, context, options) + } } } } @@ -103,21 +113,20 @@ impl BundleRequireMode for RequireMode { options: &BundleOptions, ) -> RuleProcessResult { match self { - RequireMode::Single(singular_require_mode) => singular_require_mode.process_block(block, context, options), + RequireMode::Single(singular_require_mode) => { + singular_require_mode.process_block(block, context, options) + } RequireMode::Hybrid(singular_require_modes) => { let mut modes = singular_require_modes.clone(); for mode in modes.iter_mut() { mode.initialize(context).map_err(|err| err.to_string())?; } - let locator = HybridPathLocator::new( - &modes, - context.project_location(), - context.resources(), - ); + let locator = + HybridPathLocator::new(&modes, context.project_location(), context.resources()); path_require_mode::process_block(block, context, options, locator) - }, + } } } -} \ No newline at end of file +} diff --git a/src/rules/convert_require/mod.rs b/src/rules/convert_require/mod.rs index 19730909..aaa1821b 100644 --- a/src/rules/convert_require/mod.rs +++ b/src/rules/convert_require/mod.rs @@ -14,7 +14,7 @@ use crate::DarkluaError; use instance_path::InstancePath; pub use roblox_index_style::RobloxIndexStyle; -pub use roblox_require_mode::{RobloxRequireMode, parse_roblox}; +pub use roblox_require_mode::{parse_roblox, RobloxRequireMode}; use super::{verify_required_properties, PathRequireMode, Rule, RuleProcessResult}; use crate::rules::require::LuauRequireMode; @@ -26,7 +26,7 @@ use std::str::FromStr; /// A representation of how require calls are handled and transformed. pub trait RequireModeLike { /// Parses the function to call to check for a `require` call. - /// + /// /// Returns the singular require mode used within the `require` call. fn find_require( &self, @@ -164,7 +164,7 @@ impl FromStr for RequireMode { "hybrid" => Self::Hybrid(vec![ SingularRequireMode::Path(Default::default()), SingularRequireMode::Luau(Default::default()), - SingularRequireMode::Roblox(Default::default()) + SingularRequireMode::Roblox(Default::default()), ]), _ => return Err(format!("invalid require mode name `{}`", s)), }) @@ -210,7 +210,7 @@ impl RequireModeLike for RequireMode { } } - return Err(DarkluaError::custom("unable to find valid require"))?; + Err(DarkluaError::custom("unable to find valid require"))? } } } @@ -232,7 +232,7 @@ impl RequireModeLike for RequireMode { } } - return Err(DarkluaError::custom("unable to find valid require"))?; + Err(DarkluaError::custom("unable to find valid require"))? } } } @@ -242,7 +242,9 @@ impl RequireModeLike for RequireMode { RequireMode::Single(singular_require_mode) => { singular_require_mode.is_module_folder_name(path) } - RequireMode::Hybrid(_singular_require_modes) => Err(DarkluaError::custom("cannot get module folder name of hybrid")), + RequireMode::Hybrid(_singular_require_modes) => Err(DarkluaError::custom( + "cannot get module folder name of hybrid", + )), } } @@ -251,12 +253,10 @@ impl RequireModeLike for RequireMode { RequireMode::Single(singular_require_mode) => singular_require_mode.initialize(context), RequireMode::Hybrid(singular_require_modes) => { for mode in singular_require_modes { - if let Err(err) = mode.initialize(context) { - return Err(err); - } + mode.initialize(context)?; } - return Ok(()) + Ok(()) } } } diff --git a/src/rules/convert_require/roblox_require_mode.rs b/src/rules/convert_require/roblox_require_mode.rs index cbc05da8..9bb4deaf 100644 --- a/src/rules/convert_require/roblox_require_mode.rs +++ b/src/rules/convert_require/roblox_require_mode.rs @@ -1,9 +1,14 @@ use serde::{Deserialize, Serialize}; use crate::{ - DarkluaError, frontend::DarkluaResult, nodes::{Arguments, Expression, FieldExpression, FunctionCall, IndexExpression, Prefix}, rules::{ - Context, RequireModeLike, SingularRequireMode, convert_require::rojo_sourcemap::RojoSourcemap, require::path_utils::{get_relative_parent_path, get_relative_path} - }, utils + frontend::DarkluaResult, + nodes::{Arguments, Expression, FieldExpression, FunctionCall, IndexExpression, Prefix}, + rules::{ + convert_require::rojo_sourcemap::RojoSourcemap, + require::path_utils::{get_relative_parent_path, get_relative_path}, + Context, RequireModeLike, SingularRequireMode, + }, + utils, DarkluaError, }; use std::path::{Component, Path, PathBuf}; @@ -54,7 +59,10 @@ impl RequireModeLike for RobloxRequireMode { } fn is_module_folder_name(&self, path: &Path) -> DarkluaResult { - Ok(matches!(path.file_stem().and_then(std::ffi::OsStr::to_str), Some("init"))) + Ok(matches!( + path.file_stem().and_then(std::ffi::OsStr::to_str), + Some("init") + )) } fn find_require( @@ -62,7 +70,8 @@ impl RequireModeLike for RobloxRequireMode { call: &FunctionCall, context: &Context, ) -> DarkluaResult> { - parse_roblox(call, context.current_path()).map(|x| x.map(|y| (y, SingularRequireMode::Roblox(self.clone())))) + parse_roblox(call, context.current_path()) + .map(|x| x.map(|y| (y, SingularRequireMode::Roblox(self.clone())))) } fn generate_require( @@ -262,7 +271,7 @@ pub fn parse_roblox(call: &FunctionCall, starting_path: &Path) -> DarkluaResult< parse_roblox_index(index, &mut path_builder, &mut current_path, &mut parented)? } Some(Expression::Call(call)) => { - parse_ffc_wfc(&call, &mut path_builder, &mut current_path, &mut parented)? + parse_ffc_wfc(call, &mut path_builder, &mut current_path, &mut parented)? } _ => Err(DarkluaError::custom( "unexpected require argument, only accepts fields or indexes", @@ -351,7 +360,7 @@ fn parse_roblox_prefix( Prefix::Identifier(x) => { handle_roblox_script_parent(x.get_name(), path_builder, current_path, parented)? } - Prefix::Call(x) => parse_ffc_wfc(&x, path_builder, current_path, parented)?, + Prefix::Call(x) => parse_ffc_wfc(x, path_builder, current_path, parented)?, _ => Err( DarkluaError::custom("unexpected prefix, only constants accepted") .context("while parsing roblox require"), @@ -378,7 +387,7 @@ fn parse_roblox_expression( current_path, parented, )?, - Expression::Call(x) => parse_ffc_wfc(&x, path_builder, current_path, parented)?, + Expression::Call(x) => parse_ffc_wfc(x, path_builder, current_path, parented)?, _ => Err( DarkluaError::custom("unexpected expression, only constants accepted") .context("while parsing roblox require"), diff --git a/src/rules/require/hybrid_path_locator.rs b/src/rules/require/hybrid_path_locator.rs index ce9d0e64..6671d5df 100644 --- a/src/rules/require/hybrid_path_locator.rs +++ b/src/rules/require/hybrid_path_locator.rs @@ -1,6 +1,13 @@ use std::path::{Path, PathBuf}; -use crate::{Resources, nodes::FunctionCall, rules::{SingularRequireMode, require::{LuauPathLocator, PathLocator, RequirePathLocator, RobloxPathLocator}}}; +use crate::{ + nodes::FunctionCall, + rules::{ + require::{LuauPathLocator, PathLocator, RequirePathLocator, RobloxPathLocator}, + SingularRequireMode, + }, + Resources, +}; #[derive(Debug)] pub enum SingularPathLocator<'a, 'b, 'c> { @@ -9,7 +16,7 @@ pub enum SingularPathLocator<'a, 'b, 'c> { Roblox(RobloxPathLocator<'a, 'b, 'c>), } -impl<'a, 'b, 'c> SingularPathLocator<'a, 'b, 'c> { +impl<'a, 'b, 'c> SingularPathLocator<'a, 'b, 'c> { fn from( value: &'a SingularRequireMode, extra_module_relative_location: &'b Path, @@ -17,31 +24,43 @@ impl<'a, 'b, 'c> SingularPathLocator<'a, 'b, 'c> { ) -> Self { match value { SingularRequireMode::Path(path_require_mode) => Self::Path(RequirePathLocator::new( - &path_require_mode, + path_require_mode, extra_module_relative_location, resources, )), SingularRequireMode::Luau(luau_require_mode) => Self::Luau(LuauPathLocator::new( - &luau_require_mode, - extra_module_relative_location, - resources, - )), - SingularRequireMode::Roblox(roblox_require_mode) => Self::Roblox(RobloxPathLocator::new( - &roblox_require_mode, + luau_require_mode, extra_module_relative_location, resources, )), + SingularRequireMode::Roblox(roblox_require_mode) => { + Self::Roblox(RobloxPathLocator::new( + roblox_require_mode, + extra_module_relative_location, + resources, + )) + } } } } impl PathLocator for SingularPathLocator<'_, '_, '_> { - fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn match_path_require_call( + &self, + call: &FunctionCall, + source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { match self { - SingularPathLocator::Path(require_path_locator) => require_path_locator.match_path_require_call(call, source), - SingularPathLocator::Luau(luau_path_locator) => luau_path_locator.match_path_require_call(call, source), - SingularPathLocator::Roblox(roblox_path_locator) => roblox_path_locator.match_path_require_call(call, source), - } + SingularPathLocator::Path(require_path_locator) => { + require_path_locator.match_path_require_call(call, source) + } + SingularPathLocator::Luau(luau_path_locator) => { + luau_path_locator.match_path_require_call(call, source) + } + SingularPathLocator::Roblox(roblox_path_locator) => { + roblox_path_locator.match_path_require_call(call, source) + } + } } fn find_require_path( @@ -50,9 +69,15 @@ impl PathLocator for SingularPathLocator<'_, '_, '_> { source: &Path, ) -> Result { match self { - SingularPathLocator::Path(require_path_locator) => require_path_locator.find_require_path(path, source), - SingularPathLocator::Luau(luau_path_locator) => luau_path_locator.find_require_path(path, source), - SingularPathLocator::Roblox(roblox_path_locator) => roblox_path_locator.find_require_path(path, source), + SingularPathLocator::Path(require_path_locator) => { + require_path_locator.find_require_path(path, source) + } + SingularPathLocator::Luau(luau_path_locator) => { + luau_path_locator.find_require_path(path, source) + } + SingularPathLocator::Roblox(roblox_path_locator) => { + roblox_path_locator.find_require_path(path, source) + } } } } @@ -71,7 +96,11 @@ impl<'a, 'b, 'c> HybridPathLocator<'a, 'b, 'c> { let mut path_locators = Vec::new(); for mode in require_modes { - path_locators.push(SingularPathLocator::from(&mode, extra_module_relative_location, resources)) + path_locators.push(SingularPathLocator::from( + mode, + extra_module_relative_location, + resources, + )) } Self { path_locators } @@ -79,10 +108,14 @@ impl<'a, 'b, 'c> HybridPathLocator<'a, 'b, 'c> { } impl PathLocator for HybridPathLocator<'_, '_, '_> { - fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn match_path_require_call( + &self, + call: &FunctionCall, + source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { for locator in &self.path_locators { if let Some(x) = locator.match_path_require_call(call, source) { - return Some(x) + return Some(x); } } @@ -90,10 +123,12 @@ impl PathLocator for HybridPathLocator<'_, '_, '_> { } fn find_require_path( - &self, - _path: impl Into, - _source: &Path, - ) -> Result { - Err(crate::DarkluaError::custom("this cannot be called within this context")) + &self, + _path: impl Into, + _source: &Path, + ) -> Result { + Err(crate::DarkluaError::custom( + "this cannot be called within this context", + )) } } diff --git a/src/rules/require/luau_path_locator.rs b/src/rules/require/luau_path_locator.rs index d3ee345b..02cfc274 100644 --- a/src/rules/require/luau_path_locator.rs +++ b/src/rules/require/luau_path_locator.rs @@ -1,10 +1,10 @@ use std::path::{Path, PathBuf}; use super::{path_iterator, LuauRequireMode}; -use crate::rules::RequireModeLike; use crate::rules::require::hybrid_path_locator::SingularPathLocator; use crate::rules::require::match_path_require_call; use crate::rules::require::path_utils::{get_relative_parent_path, is_require_relative}; +use crate::rules::RequireModeLike; use crate::{utils, DarkluaError, Resources}; /// A path locator specifically for Luau require mode that implements @@ -31,7 +31,11 @@ impl<'a, 'b, 'c> LuauPathLocator<'a, 'b, 'c> { } impl super::PathLocator for LuauPathLocator<'_, '_, '_> { - fn match_path_require_call(&self, call: &crate::nodes::FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn match_path_require_call( + &self, + call: &crate::nodes::FunctionCall, + _source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { match_path_require_call(call).map(|x| (x, SingularPathLocator::Luau(self.clone()))) } diff --git a/src/rules/require/luau_require_mode.rs b/src/rules/require/luau_require_mode.rs index f9242354..1de212c0 100644 --- a/src/rules/require/luau_require_mode.rs +++ b/src/rules/require/luau_require_mode.rs @@ -75,7 +75,10 @@ impl RequireModeLike for LuauRequireMode { let required_path = path_locator.find_require_path(literal_path, context.current_path())?; - Ok(Some((required_path, SingularRequireMode::Luau(self.clone())))) + Ok(Some(( + required_path, + SingularRequireMode::Luau(self.clone()), + ))) } else { Ok(None) } @@ -288,7 +291,10 @@ mod test { let context = make_context_with_files("/project/src/main.luau", &["/project/src/./module"]); let call = make_call("./module"); let result = mode.find_require(&call, &context).unwrap(); - assert_eq!(result.map(|(x, _)| x), Some(PathBuf::from("/project/src/./module"))); + assert_eq!( + result.map(|(x, _)| x), + Some(PathBuf::from("/project/src/./module")) + ); } #[test] @@ -325,35 +331,45 @@ mod test { fn is_false_for_regular_name() { let require_mode = LuauRequireMode::default(); - assert!(!require_mode.is_module_folder_name(Path::new("oops.lua")).unwrap()); + assert!(!require_mode + .is_module_folder_name(Path::new("oops.lua")) + .unwrap()); } #[test] fn is_true_for_init_lua() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.lua")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("init.lua")) + .unwrap()); } #[test] fn is_true_for_init_luau() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.luau")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("init.luau")) + .unwrap()); } #[test] fn is_true_for_folder_init_lua() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("folder/init.lua")) + .unwrap()); } #[test] fn is_true_for_folder_init_luau() { let require_mode = LuauRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("folder/init.luau")) + .unwrap()); } } diff --git a/src/rules/require/mod.rs b/src/rules/require/mod.rs index fcc15d28..a85213a9 100644 --- a/src/rules/require/mod.rs +++ b/src/rules/require/mod.rs @@ -5,23 +5,27 @@ mod match_require; mod path_iterator; mod path_locator; mod path_require_mode; -mod roblox_path_locator; pub(crate) mod path_utils; +mod roblox_path_locator; use std::path::{Path, PathBuf}; +pub use crate::rules::require::hybrid_path_locator::SingularPathLocator; +use crate::{nodes::FunctionCall, DarkluaError}; pub(crate) use hybrid_path_locator::HybridPathLocator; pub(crate) use luau_path_locator::LuauPathLocator; -pub(crate) use roblox_path_locator::RobloxPathLocator; pub use luau_require_mode::LuauRequireMode; pub(crate) use match_require::{is_require_call, match_path_require_call}; pub(crate) use path_locator::RequirePathLocator; pub use path_require_mode::PathRequireMode; -pub use crate::rules::require::hybrid_path_locator::SingularPathLocator; -use crate::{DarkluaError, nodes::FunctionCall}; +pub(crate) use roblox_path_locator::RobloxPathLocator; pub(crate) trait PathLocator { - fn match_path_require_call(&self, call: &FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)>; + fn match_path_require_call( + &self, + call: &FunctionCall, + _source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)>; fn find_require_path( &self, diff --git a/src/rules/require/path_locator.rs b/src/rules/require/path_locator.rs index 1a0ab3ff..3a73d536 100644 --- a/src/rules/require/path_locator.rs +++ b/src/rules/require/path_locator.rs @@ -1,7 +1,13 @@ use std::path::{Path, PathBuf}; use super::{path_iterator, PathRequireMode}; -use crate::{DarkluaError, Resources, rules::require::{hybrid_path_locator::SingularPathLocator, match_path_require_call, path_utils::is_require_relative}, utils}; +use crate::{ + rules::require::{ + hybrid_path_locator::SingularPathLocator, match_path_require_call, + path_utils::is_require_relative, + }, + utils, DarkluaError, Resources, +}; #[derive(Clone, Debug)] pub(crate) struct RequirePathLocator<'a, 'b, 'resources> { @@ -25,10 +31,14 @@ impl<'a, 'b, 'c> RequirePathLocator<'a, 'b, 'c> { } impl super::PathLocator for RequirePathLocator<'_, '_, '_> { - fn match_path_require_call(&self, call: &crate::nodes::FunctionCall, _source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn match_path_require_call( + &self, + call: &crate::nodes::FunctionCall, + _source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { match_path_require_call(call).map(|x| (x, SingularPathLocator::Path(self.clone()))) } - + fn find_require_path( &self, path: impl Into, diff --git a/src/rules/require/path_require_mode.rs b/src/rules/require/path_require_mode.rs index 521bcb3f..80a11d65 100644 --- a/src/rules/require/path_require_mode.rs +++ b/src/rules/require/path_require_mode.rs @@ -85,7 +85,10 @@ impl RequireModeLike for PathRequireMode { RequirePathLocator::new(self, context.project_location(), context.resources()) .find_require_path(literal_path, context.current_path())?; - Ok(Some((required_path, SingularRequireMode::Path(self.clone())))) + Ok(Some(( + required_path, + SingularRequireMode::Path(self.clone()), + ))) } else { Ok(None) } @@ -231,35 +234,45 @@ mod test { fn default_mode_is_false_for_regular_name() { let require_mode = PathRequireMode::default(); - assert!(!require_mode.is_module_folder_name(Path::new("oops.lua")).unwrap()); + assert!(!require_mode + .is_module_folder_name(Path::new("oops.lua")) + .unwrap()); } #[test] fn default_mode_is_true_for_init_lua() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.lua")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("init.lua")) + .unwrap()); } #[test] fn default_mode_is_true_for_init_luau() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("init.luau")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("init.luau")) + .unwrap()); } #[test] fn default_mode_is_true_for_folder_init_lua() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.lua")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("folder/init.lua")) + .unwrap()); } #[test] fn default_mode_is_true_for_folder_init_luau() { let require_mode = PathRequireMode::default(); - assert!(require_mode.is_module_folder_name(Path::new("folder/init.luau")).unwrap()); + assert!(require_mode + .is_module_folder_name(Path::new("folder/init.luau")) + .unwrap()); } } } diff --git a/src/rules/require/roblox_path_locator.rs b/src/rules/require/roblox_path_locator.rs index 93da43a7..9a76d02e 100644 --- a/src/rules/require/roblox_path_locator.rs +++ b/src/rules/require/roblox_path_locator.rs @@ -1,6 +1,17 @@ use std::path::{Path, PathBuf}; -use crate::{DarkluaError, Resources, nodes::FunctionCall, rules::{RobloxRequireMode, parse_roblox, require::{PathLocator, hybrid_path_locator::SingularPathLocator, path_iterator, path_utils::is_require_relative}}, utils}; +use crate::{ + nodes::FunctionCall, + rules::{ + parse_roblox, + require::{ + hybrid_path_locator::SingularPathLocator, path_iterator, + path_utils::is_require_relative, PathLocator, + }, + RobloxRequireMode, + }, + utils, DarkluaError, Resources, +}; #[derive(Clone, Debug)] pub(crate) struct RobloxPathLocator<'a, 'b, 'resources> { @@ -24,7 +35,11 @@ impl<'a, 'b, 'c> RobloxPathLocator<'a, 'b, 'c> { } impl PathLocator for RobloxPathLocator<'_, '_, '_> { - fn match_path_require_call(&self, call: &FunctionCall, source: &Path) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { + fn match_path_require_call( + &self, + call: &FunctionCall, + source: &Path, + ) -> Option<(PathBuf, SingularPathLocator<'_, '_, '_>)> { parse_roblox(call, source) .ok() .flatten() @@ -37,10 +52,10 @@ impl PathLocator for RobloxPathLocator<'_, '_, '_> { } fn find_require_path( - &self, - path: impl Into, - source: &Path, - ) -> Result { + &self, + path: impl Into, + source: &Path, + ) -> Result { let mut path: PathBuf = path.into(); log::trace!( "find require path for `{}` from `{}`", @@ -56,10 +71,7 @@ impl PathLocator for RobloxPathLocator<'_, '_, '_> { } let normalized_path = utils::normalize_path_with_current_dir(&path); - for potential_path in path_iterator::find_require_paths( - &normalized_path, - "init", - ) { + for potential_path in path_iterator::find_require_paths(&normalized_path, "init") { if self.resources.is_file(&potential_path)? { return Ok(utils::normalize_path_with_current_dir(potential_path)); } @@ -68,13 +80,10 @@ impl PathLocator for RobloxPathLocator<'_, '_, '_> { Err( DarkluaError::resource_not_found(&normalized_path).context(format!( "tried `{}`", - path_iterator::find_require_paths( - &normalized_path, - "init" - ) - .map(|potential_path| potential_path.display().to_string()) - .collect::>() - .join("`, `") + path_iterator::find_require_paths(&normalized_path, "init") + .map(|potential_path| potential_path.display().to_string()) + .collect::>() + .join("`, `") )), ) } diff --git a/src/rules/rule_property.rs b/src/rules/rule_property.rs index 23d09ed6..21c46579 100644 --- a/src/rules/rule_property.rs +++ b/src/rules/rule_property.rs @@ -5,7 +5,8 @@ use serde::{Deserialize, Serialize}; use crate::{ nodes::{DecimalNumber, Expression, StringExpression, TableEntry, TableExpression}, - process::to_expression, rules::SingularRequireMode, + process::to_expression, + rules::SingularRequireMode, }; use super::{ @@ -83,14 +84,12 @@ impl RulePropertyValue { ) -> Result { match self { Self::RequireMode(require_mode) => Ok(require_mode), - Self::String(value) => { - SingularRequireMode::from_str(&value) - .map(RequireMode::Single) - .map_err(|err: String| RuleConfigurationError::UnexpectedValue { - property: key.to_owned(), - message: err, - }) - } + Self::String(value) => SingularRequireMode::from_str(&value) + .map(RequireMode::Single) + .map_err(|err: String| RuleConfigurationError::UnexpectedValue { + property: key.to_owned(), + message: err, + }), _ => Err(RuleConfigurationError::RequireModeExpected(key.to_owned())), } } @@ -387,7 +386,9 @@ mod test { fn parse_require_mode_path_object() { parse_rule_property( r#"{"name": "path"}"#, - RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path(PathRequireMode::default()))), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path( + PathRequireMode::default(), + ))), ); } @@ -395,7 +396,9 @@ mod test { fn parse_require_mode_path_object_with_options() { parse_rule_property( r#"{"name": "path", "module_folder_name": "index"}"#, - RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path(PathRequireMode::new("index")))), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Path( + PathRequireMode::new("index"), + ))), ); } @@ -403,7 +406,9 @@ mod test { fn parse_require_mode_roblox_object() { parse_rule_property( r#"{"name": "roblox"}"#, - RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Roblox(RobloxRequireMode::default()))), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Roblox( + RobloxRequireMode::default(), + ))), ); } @@ -424,7 +429,9 @@ mod test { fn parse_require_mode_luau_object() { parse_rule_property( r#"{ "name": "luau" }"#, - RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Luau(LuauRequireMode::default()))), + RulePropertyValue::RequireMode(RequireMode::Single(SingularRequireMode::Luau( + LuauRequireMode::default(), + ))), ); } @@ -434,8 +441,8 @@ mod test { r#"[{ "name": "luau" }, { "name": "roblox" }]"#, RulePropertyValue::RequireMode(RequireMode::Hybrid(vec![ SingularRequireMode::Luau(Default::default()), - SingularRequireMode::Roblox(Default::default()) - ])) + SingularRequireMode::Roblox(Default::default()), + ])), ); } diff --git a/src/utils/serde_string_or_default.rs b/src/utils/serde_string_or_default.rs index 2acc6622..95538027 100644 --- a/src/utils/serde_string_or_default.rs +++ b/src/utils/serde_string_or_default.rs @@ -1,7 +1,9 @@ use std::{fmt, marker::PhantomData, str::FromStr}; use serde::{ - de::{value::MapAccessDeserializer, value::SeqAccessDeserializer, MapAccess, SeqAccess, Visitor}, + de::{ + value::MapAccessDeserializer, value::SeqAccessDeserializer, MapAccess, SeqAccess, Visitor, + }, Deserialize, Deserializer, }; From ea18beac6d5d68d880fdf36a3104672d17d30453 Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:13:29 +0000 Subject: [PATCH 7/8] Remove from testing --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6a9d0eac..54f0f8c9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,4 @@ .vscode -bench_content/**/ -test \ No newline at end of file +bench_content/**/ \ No newline at end of file From 926f46436181fa0d8a341987715638bf51ae0c60 Mon Sep 17 00:00:00 2001 From: Stefanuk12 <42220813+Stefanuk12@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:15:40 +0000 Subject: [PATCH 8/8] Remove pending snap --- src/frontend/.configuration.rs.pending-snap | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/frontend/.configuration.rs.pending-snap diff --git a/src/frontend/.configuration.rs.pending-snap b/src/frontend/.configuration.rs.pending-snap deleted file mode 100644 index 0b16f7d9..00000000 --- a/src/frontend/.configuration.rs.pending-snap +++ /dev/null @@ -1 +0,0 @@ -{"run_id":"1766955857-445258800","line":496,"new":{"module_name":"darklua_core__frontend__configuration__test__bundle_configuration","snapshot_name":"deserialize_unknown_require_mode_name","metadata":{"source":"src/frontend/configuration.rs","assertion_line":496,"expression":"result.expect_err(\"deserialization should fail\").to_string()"},"snapshot":"invalid require mode name `oops` at line 1 column 26"},"old":{"module_name":"darklua_core__frontend__configuration__test__bundle_configuration","metadata":{},"snapshot":"invalid require mode `oops` at line 1 column 26"}}