diff --git a/README.md b/README.md index 1438503..28ef4a5 100644 --- a/README.md +++ b/README.md @@ -27,35 +27,36 @@ It is highly configurable, any component can be used with or without others. Som ## Components - [Inventory](#inventory) - - [Unlimited carry weight](#unlimited-carry-weight) - - [Unlimited trunk](#unlimited-trunk) - - [Auto reload](#auto-reload) - - [Don't drop items on death](#dont-drop-items-on-death) + - [Unlimited carry weight](#unlimited-carry-weight) + - [Unlimited trunk](#unlimited-trunk) + - [Auto reload](#auto-reload) + - [Don't drop items on death](#dont-drop-items-on-death) - [Party](#party) - - [Unlimited party](#unlimited-party) - - [Party level match](#party-level-match) + - [Unlimited party](#unlimited-party) + - [Party level match](#party-level-match) - [Speed](#speed) - - [General game speedup](#general-game-speedup) - - [Party run speed](#party-run-speed) + - [General game speedup](#general-game-speedup) + - [Party run speed](#party-run-speed) - [Combat](#combat) - - [Ammobox](#ammobox) - - [Damage mod](#damage-mod) - - [Limit knockback](#limit-knockback) - - [Molotov cocktail: fire damage](#molotov-cocktail-fire-damage) - - [Improved grenades](#improved-grenades) - - [No close range penalty for scoped weapons](#no-close-range-penalty-for-scoped-weapons) - - [HP over head](#hp-over-head) - - [Auto cursor](#auto-cursor) - - [Action Points rollover](#action-points-rollover) + - [Ammobox](#ammobox) + - [Damage mod](#damage-mod) + - [Limit knockback](#limit-knockback) + - [Molotov cocktail: fire damage](#molotov-cocktail-fire-damage) + - [Improved grenades](#improved-grenades) + - [No close range penalty for scoped weapons](#no-close-range-penalty-for-scoped-weapons) + - [HP over head](#hp-over-head) + - [Auto cursor](#auto-cursor) + - [Action Points rollover](#action-points-rollover) - [Miscellaneous](#miscellaneous) - - [Autodoors](#autodoors) - - [Healing revision](#healing-revision) - - [Level 5 after Temple of Trials](#level-5-after-temple-of-trials) - - [Map hotkey](#map-hotkey) - - [Keymap](#keymap) - - [Modoc brahmin](#modoc-brahmin) - - [Expanded highlighting](#expanded-highlighting) - - [Light level](#light-level) + - [Autodoors](#autodoors) + - [Healing revision](#healing-revision) + - [Level 5 after Temple of Trials](#level-5-after-temple-of-trials) + - [Map hotkey](#map-hotkey) + - [Keymap](#keymap) + - [Modoc brahmin](#modoc-brahmin) + - [Expanded highlighting](#expanded-highlighting) + - [Light level](#light-level) + - [Alternative Gigolo implementation](#alternative-gigolo-implementation) ### Inventory @@ -121,8 +122,8 @@ Are you tired of Marcus, Skynet, Lenny lagging behind? Then this coomponent is f - Make PC's run speed constant. In vanilla game, wearing heavy armor descreases run speed by approximately 20%. This option disables the penalty for the PC. - Increase companions run speed: - - All NPCs get a slight boost (like PC above). - - NPCs who have no running animation (Marcus, Skynet, Lenny) get one, so they will be able to catch up with the PC. + - All NPCs get a slight boost (like PC above). + - NPCs who have no running animation (Marcus, Skynet, Lenny) get one, so they will be able to catch up with the PC. ### Combat @@ -254,6 +255,12 @@ Designed for Restoration Project users. Unfortunately, many areas in RP are quit This allows to set a lower limit for the ambient light level. Refer to the [wiki](https://falloutmods.fandom.com/wiki/Fallout_2_light_levels) to understand how light works in Fallout. +#### Alternative Gigolo implementation + +Original Gigolo perk is given to PC after having sex 10 times, no other conditions. + +Alternative implementation grants Gigolo once PC had sex with 10 different people (number is configurable). + ## Installation - Download `fo2tweaks_v*.zip` from the [latest release](https://github.com/BGforgeNet/FO2tweaks/releases/latest) page. @@ -279,11 +286,11 @@ Delete `mods/fo2tweaks.*` files. 1. Discussion and questions: see the [forum](https://forums.bgforge.net/viewforum.php?f=26). 1. Bug reports: - - describe the bug - - attach a savegame - - detail the steps to trigger the bug - - note versions: FO2tweaks, `ddraw.dll`, any other mods you have installed. _Actual_ versions, don't just say "latest". - - also attach [`debug.log`](https://github.com/BGforgeNet/Fallout2_Unofficial_Patch/blob/master/docs/debug.md) + - describe the bug + - attach a savegame + - detail the steps to trigger the bug + - note versions: FO2tweaks, `ddraw.dll`, any other mods you have installed. _Actual_ versions, don't just say "latest". + - also attach [`debug.log`](https://github.com/BGforgeNet/Fallout2_Unofficial_Patch/blob/master/docs/debug.md) 1. For feature requests: free form, but please be descriptive. ## Author diff --git a/data/text/po/spanish.po b/data/text/po/spanish.po index 53cfd99..f1e906e 100644 --- a/data/text/po/spanish.po +++ b/data/text/po/spanish.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: Spanish (Fallout)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-05-04-12:22+0000\n" -"PO-Revision-Date: 2025-01-28 02:40+0000\n" -"Last-Translator: Genzek Spanish \n" +"PO-Revision-Date: 2026-01-15 14:52+0000\n" +"Last-Translator: Kharma \n" "Language-Team: Spanish \n" "Language: spanish\n" @@ -33,7 +33,7 @@ msgstr "No crees que haya alguna posibilidad de curar esto." #: game/g_healing_revision.msg:5 msgid " is already healthy." -msgstr " ya está en buen estado." +msgstr " ya está sano." #: game/g_healing_revision.msg:6 msgid "%1% has already been healed with %2% skill today. Try tomorrow." @@ -49,7 +49,7 @@ msgstr "¡Vaya! ¡Ahora realmente sé cómo herir a alguien!" #: game/g_healing_revision.msg:9 msgid "has earned Living Anatomy perk." -msgstr "ha ganado Anatomía Vital." +msgstr "ha ganado la habilidad Anatomía Viviente." #: game/g_healing_revision.msg:10 msgid "You receive %1% experience for successful use of %2% skill." diff --git a/data/text/spanish/game/g_healing_revision.msg b/data/text/spanish/game/g_healing_revision.msg index 95a4895..a409eef 100644 --- a/data/text/spanish/game/g_healing_revision.msg +++ b/data/text/spanish/game/g_healing_revision.msg @@ -2,11 +2,11 @@ {2}{}{No se pudieron curar las discapacidades.} {3}{}{No puedes hacer esto en combate.} {4}{}{No crees que haya alguna posibilidad de curar esto.} -{5}{}{ ya está en buen estado.} +{5}{}{ ya está sano.} {6}{}{%1% ya ha sido curado con la habilidad de %2% hoy. Inténtalo mañana.} {7}{}{No consigues curar nada.} {8}{}{¡Vaya! ¡Ahora realmente sé cómo herir a alguien!} -{9}{}{ha ganado Anatomía Vital.} +{9}{}{ha ganado la habilidad Anatomía Viviente.} {10}{}{Ganas %1% puntos de experiencia por el uso de %2%.} {11}{}{%1% curado para %2% PS.} {12}{}{Muerto. Demasiado tarde para ayudarlo.} diff --git a/docs/changelog.md b/docs/changelog.md index df3d0d0..acd0da9 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,23 @@ ## Changelog +### Version 14.3 + +[Fixed](https://github.com/BGforgeNet/FO2tweaks/issues/121) level match not working for custom companions. + +### Version 14.2 + +[Fixed](https://github.com/BGforgeNet/FO2tweaks/issues/120) AP rollover not working, introduced in v14. + +### Version 14.1 + +Fixed: wrong ammo damage mod displayed, introduced in v14. + +### Version 14 + +Rewritten in TSSL. + +- Fix: alternative Gigolo implementation actually works. + ### Version 13 - [Changed](https://forums.bgforge.net/viewtopic.php?t=129) damage formula implementation. diff --git a/eslint.config.mjs b/eslint.config.mjs index 807f119..395413c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,618 +1,3 @@ -import tseslint from 'typescript-eslint'; -import tsParser from "@typescript-eslint/parser"; -import unusedImports from 'eslint-plugin-unused-imports'; +import tsslConfig from 'folib/eslint-config' -// Engine entry points and special variables - not directly referenced but called by engine -const IGNORE_UNUSED = [ - // Engine procedures - 'barter_init_p_proc', - 'barter_p_proc', - 'combat_p_proc', - 'create_p_proc', - 'critter_p_proc', - 'damage_p_proc', - 'description_p_proc', - 'destroy_p_proc', - 'drop_p_proc', - 'look_at_p_proc', - 'map_enter_p_proc', - 'map_exit_p_proc', - 'map_update_p_proc', - 'pickup_p_proc', - 'spatial_p_proc', - 'start', - 'talk_p_proc', - 'timed_event_p_proc', - 'use_ad_on_p_proc', - 'use_disad_on_p_proc', - 'use_obj_on_p_proc', - 'use_p_proc', - 'use_skill_on_p_proc', - // Special variables - 'SCRIPT_NAME', - 'SCRIPT_REALNAME', -]; - -// SSL reserved words - engine globals and builtins that should not be shadowed (from folib/base.d.ts) -const SSL_RESERVED_WORDS = [ - "action_being_used", - "add_mult_objs_to_inven", - "AddNamedEvent", - "AddNamedHandler", - "add_obj_to_inven", - "add_timer_event", - "anim", - "anim_action_frame", - "anim_busy", - "animate_move_obj_to_tile", - "animate_rotation", - "animate_run_to_tile", - "animate_set_frame", - "animate_stand", - "animate_stand_obj", - "animate_stand_reverse", - "animate_stand_reverse_obj", - "art_anim", - "attack_complex", - "attack_setup", - "ClearNamed", - "combat_difficulty", - "combat_is_initialized", - "create_object_sid", - "critter_add_trait", - "critter_attempt_placement", - "critter_dmg", - "critter_heal", - "critter_injure", - "critter_inven_obj", - "critter_is_fleeing", - "critter_mod_skill", - "critter_rm_trait", - "critter_set_flee_state", - "critter_state", - "critter_stop_attacking", - "cur_map_index", - "days_since_visited", - "debug_msg", - "destroy_mult_objs", - "destroy_object", - "dialogue_reaction", - "dialogue_system_enter", - "difficulty_level", - "display_msg", - "do_check", - "drop_obj", - "dude_obj", - "elevation", - "end_dialogue", - "endgame_movie", - "endgame_slideshow", - "explosion", - "fixed_param", - "float_msg", - "floor", - "format", - "game_ticks", - "game_time", - "game_time_advance", - "game_time_hour", - "game_ui_disable", - "game_ui_enable", - "game_ui_is_disabled", - "gdialog_mod_barter", - "gdialog_set_barter_mod", - "get_critter_stat", - "get_day", - "get_month", - "get_pc_stat", - "get_poison", - "gfade_in", - "gfade_out", - "giQ_Option", - "give_exp_points", - "global_var", - "gSay_End", - "gSay_Message", - "gSay_Option", - "gSay_Reply", - "gSay_Start", - "has_skill", - "has_trait", - "how_much", - "inven_cmds", - "is_critical", - "is_success", - "item_caps_adjust", - "item_caps_total", - "jam_lock", - "kill_critter", - "kill_critter_type", - "load_map", - "local_var", - "map_var", - "message_str", - "metarule", - "metarule3", - "move_obj_inven_to_obj", - "move_to", - "obj_art_fid", - "obj_being_used_with", - "obj_can_hear_obj", - "obj_can_see_obj", - "obj_carrying_pid_obj", - "obj_close", - "obj_is_carrying_obj_pid", - "obj_is_locked", - "obj_is_open", - "obj_item_subtype", - "obj_lock", - "obj_name", - "obj_on_screen", - "obj_open", - "obj_pid", - "obj_set_light_level", - "obj_type", - "obj_unlock", - "override_map_start", - "party_add", - "party_member_obj", - "party_remove", - "pickup_obj", - "play_gmovie", - "play_sfx", - "poison", - "proto_data", - "radiation_dec", - "radiation_inc", - "random", - "reg_anim_animate", - "reg_anim_animate_forever", - "reg_anim_animate_reverse", - "reg_anim_end", - "reg_anim_func", - "reg_anim_obj_move_to_obj", - "reg_anim_obj_move_to_tile", - "reg_anim_obj_run_to_obj", - "reg_anim_obj_run_to_tile", - "reg_anim_play_sfx", - "rm_mult_objs_from_inven", - "rm_obj_from_inven", - "rm_timer_event", - "roll_vs_skill", - "rotation_to_tile", - "running_burning_guy", - "script_action", - "script_overrides", - "scr_return", - "self_obj", - "set_critter_stat", - "set_exit_grids", - "set_global_var", - "set_light_level", - "set_local_var", - "set_map_music", - "set_map_start", - "set_map_var", - "set_obj_visibility", - "SignalNamed", - "skill_contest", - "source_obj", - "start_gdialog", - "target_obj", - "terminate_combat", - "tile_contains_obj_pid", - "tile_contains_pid_obj", - "tile_distance", - "tile_distance_objs", - "tile_is_visible", - "tile_num", - "tile_num_in_direction", - "tokenize", - "town_map", - "use_obj", - "use_obj_on_obj", - "using_skill", - "wield_obj_critter", - "wm_area_set_pos", - "world_map", -]; - -// Sfall reserved words (from folib/sfall/sfall.d.ts) -const SFALL_RESERVED_WORDS = [ - "abs", - "activate_shader", - "active_hand", - "add_g_timer_event", - "apply_heaveho_fix", - "arctan", - "array_key", - "arrayexpr", - "art_exists", - "atof", - "atoi", - "available_global_script_types", - "block_combat", - "call_offset_r0", - "call_offset_r1", - "call_offset_r2", - "call_offset_r3", - "call_offset_r4", - "call_offset_v0", - "call_offset_v1", - "call_offset_v2", - "call_offset_v3", - "call_offset_v4", - "ceil", - "charcode", - "clear_selectable_perks", - "cos", - "create_array", - "create_message_window", - "create_spatial", - "deactivate_shader", - "disable_aimed_shots", - "div", - "eax_available", - "exponent", - "fix_array", - "force_aimed_shots", - "force_encounter", - "force_encounter_with_flags", - "force_graphics_refresh", - "free_array", - "free_shader", - "fs_copy", - "fs_create", - "fs_delete", - "fs_find", - "fs_pos", - "fs_read_byte", - "fs_read_float", - "fs_read_int", - "fs_read_short", - "fs_resize", - "fs_seek", - "fs_size", - "fs_write_bstring", - "fs_write_byte", - "fs_write_float", - "fs_write_int", - "fs_write_short", - "fs_write_string", - "game_loaded", - "gdialog_get_barter_mod", - "get_array", - "get_attack_type", - "get_available_skill_points", - "get_bodypart_hit_modifier", - "get_critical_table", - "get_critter_base_stat", - "get_critter_current_ap", - "get_critter_extra_stat", - "get_critter_skill_points", - "get_game_mode", - "get_ini_setting", - "get_ini_string", - "get_inven_ap_cost", - "get_kill_counter", - "get_last_attacker", - "get_last_target", - "get_light_level", - "get_map_enter_position", - "get_metarule_table", - "get_mouse_buttons", - "get_mouse_x", - "get_mouse_y", - "get_npc_level", - "get_pc_base_stat", - "get_pc_extra_stat", - "get_perk_available", - "get_perk_owed", - "get_proto_data", - "get_screen_height", - "get_screen_width", - "get_script", - "get_sfall_arg", - "get_sfall_args", - "get_sfall_global_float", - "get_sfall_global_int", - "get_shader_texture", - "get_shader_version", - "get_stat_max", - "get_stat_min", - "get_string_pointer", - "get_tile_fid", - "get_unspent_ap_bonus", - "get_unspent_ap_perk_bonus", - "get_uptime", - "get_viewport_x", - "get_viewport_y", - "get_weapon_ammo_count", - "get_weapon_ammo_pid", - "get_window_attribute", - "get_window_under_mouse", - "get_world_map_x_pos", - "get_world_map_y_pos", - "get_year", - "graphics_funcs_available", - "has_fake_perk", - "has_fake_trait", - "hero_select_win", - "hide_iface_tag", - "hide_real_perks", - "in_world_map", - "inc_npc_level", - "init_hook", - "input_funcs_available", - "interface_overlay", - "is_iface_tag_active", - "key_pressed", - "len_array", - "list", - "list_as_array", - "list_begin", - "list_end", - "list_next", - "load_array", - "load_shader", - "log", - "map", - "mark_movie_played", - "message_box", - "message_str_game", - "metarule2_explosions", - "metarule3", - "mod_kill_counter", - "mod_skill_points_per_level", - "modified_ini", - "nb_create_char", - "obj_blocking_line", - "obj_blocking_tile", - "obj_is_carrying_obj", - "party_member_list", - "path_find_to", - "perk_add_mode", - "play_sfall_sound", - "read_byte", - "read_int", - "read_short", - "read_string", - "refresh_pc_art", - "reg_anim_animate_and_hide", - "reg_anim_callback", - "reg_anim_change_fid", - "reg_anim_combat_check", - "reg_anim_destroy", - "reg_anim_light", - "reg_anim_take_out", - "reg_anim_turn_towards", - "register_hook", - "register_hook_proc", - "register_hook_proc_spec", - "remove_attacker_knockback", - "remove_script", - "remove_target_knockback", - "remove_trait", - "remove_weapon_knockback", - "reset_critical_table", - "resize_array", - "resume_game", - "round", - "save_array", - "scan_array", - "seq_perk_freq", - "set_array", - "set_attacker_knockback", - "set_available_skill_points", - "set_base_hit_chance_mod", - "set_base_pickpocket_mod", - "set_base_skill_mod", - "set_bodypart_hit_modifier", - "set_car_current_town", - "set_critical_table", - "set_critter_base_stat", - "set_critter_burst_disable", - "set_critter_current_ap", - "set_critter_extra_stat", - "set_critter_hit_chance_mod", - "set_critter_pickpocket_mod", - "set_critter_skill_mod", - "set_critter_skill_points", - "set_df_model", - "set_dm_model", - "set_eax_environment", - "set_fake_perk", - "set_fake_trait", - "set_global_script_repeat", - "set_global_script_type", - "set_hero_race", - "set_hero_style", - "set_hit_chance_max", - "set_hp_per_level_mod", - "set_inven_ap_cost", - "set_map_time_multi", - "set_movie_path", - "set_npc_stat_max", - "set_npc_stat_min", - "set_palette", - "set_pc_base_stat", - "set_pc_extra_stat", - "set_pc_stat_max", - "set_pc_stat_min", - "set_perk_agl", - "set_perk_chr", - "set_perk_desc", - "set_perk_end", - "set_perk_freq", - "set_perk_image", - "set_perk_int", - "set_perk_lck", - "set_perk_level", - "set_perk_level_mod", - "set_perk_name", - "set_perk_owed", - "set_perk_per", - "set_perk_ranks", - "set_perk_skill1", - "set_perk_skill1_mag", - "set_perk_skill2", - "set_perk_skill2_mag", - "set_perk_stat", - "set_perk_stat_mag", - "set_perk_str", - "set_perk_type", - "set_perkbox_title", - "set_pickpocket_max", - "set_pipboy_available", - "set_proto_data", - "set_pyromaniac_mod", - "set_script", - "set_selectable_perk", - "set_self", - "set_sfall_arg", - "set_sfall_global", - "set_sfall_return", - "set_shader_float", - "set_shader_int", - "set_shader_mode", - "set_shader_texture", - "set_shader_vector", - "set_skill_max", - "set_stat_max", - "set_stat_min", - "set_swiftlearner_mod", - "set_target_knockback", - "set_unspent_ap_bonus", - "set_unspent_ap_perk_bonus", - "set_viewport_x", - "set_viewport_y", - "set_weapon_ammo_count", - "set_weapon_ammo_pid", - "set_weapon_knockback", - "set_world_map_pos", - "set_xp_mod", - "sfall_func0", - "sfall_func1", - "sfall_func2", - "sfall_func3", - "sfall_func4", - "sfall_func5", - "sfall_func6", - "sfall_func7", - "sfall_func8", - "sfall_typeof", - "sfall_ver_build", - "sfall_ver_major", - "sfall_ver_minor", - "show_iface_tag", - "show_real_perks", - "sin", - "sneak_success", - "sprintf", - "sqrt", - "stop_game", - "stop_sfall_sound", - "string_format", - "string_format_array", - "string_replace", - "string_split", - "string_to_case", - "strlen", - "substr", - "tan", - "tap_key", - "temp_array", - "tile_get_objs", - "tile_light", - "tile_under_cursor", - "toggle_active_hand", - "write_byte", - "write_int", - "write_short", - "write_string", -]; - -// TypeScript syntax that breaks transpilation or produces broken SSL -const TSSL_FORBIDDEN_SYNTAX = [ - ["ArrowFunctionExpression", "Arrow functions are not supported. Use regular function declarations."], - ["TemplateLiteral", "Template literals are not supported. Use string concatenation with +."], - ["ChainExpression", "Optional chaining (?.) is not supported in SSL."], - ["LogicalExpression[operator='??']", "Nullish coalescing (??) is not supported. Use explicit null/0 checks."], - ["SpreadElement", "Spread operator (...) is not supported in SSL."], - ["BinaryExpression[operator='**']", "Exponentiation (**) is not supported. Use power() or manual multiplication."], - ["Property[shorthand=true]", "Shorthand properties ({x}) are not supported. Use explicit {x: x}."], - ["ArrayPattern:not(ForOfStatement ArrayPattern)", "Array destructuring is not supported. Access elements by index. (for-of [k,v] is OK)"], - ["ObjectPattern", "Object destructuring is not supported. Access properties explicitly."], - ["UnaryExpression[operator='typeof']", "typeof is not supported. Use typeof_() sfall function."], - ["BinaryExpression[operator='instanceof']", "instanceof is not supported in SSL."], - ["NewExpression", "new keyword is not supported. SSL has no constructors."], - ["AwaitExpression", "await is not supported. SSL is synchronous."], - ["YieldExpression", "yield is not supported. SSL has no generators."], - ["AssignmentExpression[operator='??=']", "Nullish assignment (??=) is not supported."], - ["AssignmentExpression[operator='||=']", "Logical OR assignment (||=) is not supported."], - ["AssignmentExpression[operator='&&=']", "Logical AND assignment (&&=) is not supported."], - ["BinaryExpression[operator='in']", "'in' operator is not supported. Use is_in_array() or scan_array()."], - ["ClassDeclaration", "Classes are not supported in SSL."], - ["ClassExpression", "Classes are not supported in SSL."], - ["TaggedTemplateExpression", "Tagged templates are not supported in SSL."], -]; - -// JS globals not available in SSL runtime -const JS_UNAVAILABLE_GLOBALS = [ - ["Array", "Array constructor is not available in SSL runtime. Use sfall temp_array or create_array."], - ["Date", "Date is not available in SSL runtime."], - ["JSON", "JSON is not available in SSL runtime."], - ["Map", "Map is not available in SSL runtime. Use sfall temp_array_map."], - ["Math", "Math is not available in SSL runtime. Use sfall functions (floor2, ceil2, abs2, etc)."], - ["Object", "Object is not available in SSL runtime. Use sfall arrays and scan_array for iteration."], - ["Promise", "Promise is not available in SSL runtime."], - ["Proxy", "Proxy is not available in SSL runtime."], - ["Reflect", "Reflect is not available in SSL runtime."], - ["Set", "Set is not available in SSL runtime."], -]; - -export default tseslint.config( - ...tseslint.configs.recommendedTypeChecked.map(config => ({ - ...config, - files: ["**/*.ts", "**/*.tssl"], - })), - { - files: ["**/*.ts", "**/*.tssl"], - languageOptions: { - ecmaVersion: 2020, - sourceType: "module", - parser: tsParser, - parserOptions: { - projectService: true, - extraFileExtensions: ['.tssl'], - tsconfigRootDir: import.meta.dirname, - }, - }, - plugins: { - 'unused-imports': unusedImports, - }, - rules: { - 'unused-imports/no-unused-imports': 'error', - '@typescript-eslint/no-unused-vars': ['warn', { - varsIgnorePattern: `^(${IGNORE_UNUSED.join('|')}|_)`, - argsIgnorePattern: '^_', - }], - '@typescript-eslint/no-explicit-any': 'off', - "no-restricted-globals": [ - "error", - ...JS_UNAVAILABLE_GLOBALS.map(([name, message]) => ({ name, message })), - ], - "no-restricted-syntax": [ - "error", - ...[...new Set([...SSL_RESERVED_WORDS, ...SFALL_RESERVED_WORDS])].map(name => ({ - selector: `:matches(VariableDeclarator[id.name='${name}'], FunctionDeclaration[id.name='${name}'], Property[key.name='${name}'])`, - message: `'${name}' is a reserved word in SSL and cannot be used as a variable/function/parameter name.`, - })), - ...TSSL_FORBIDDEN_SYNTAX.map(([selector, message]) => ({ selector, message })), - ], - }, - }, - { - ignores: ['node_modules/**', '**/*.mjs', 'source/*.ts'], - } -); +export default tsslConfig({ tsconfigRootDir: import.meta.dirname }) diff --git a/extra/env.sh b/extra/env.sh index 0f5865b..96033dd 100755 --- a/extra/env.sh +++ b/extra/env.sh @@ -5,13 +5,13 @@ set -xeu -o pipefail # Tool versions and URLs export SFALL_VERSION="4.4.8" export SFALL_GIT_VERSION="v$SFALL_VERSION" -SSLC_VERSION="2025-06-18-01-40-04" +SSLC_VERSION="2026-02-07-11-20-26" export SSLC_URL="https://github.com/sfall-team/sslc/releases/download/${SSLC_VERSION}/sslc-linux" -DAT3_VERSION="v0.5.0" +DAT3_VERSION="v0.6.0" export DAT3_URL="https://github.com/BGforgeNet/dat3/releases/download/${DAT3_VERSION}/dat3" # Repository URLs -export RPU_VERSION="v2.3.33" +export RPU_VERSION="v2.3.34" export RPU_REPO_URL="https://github.com/BGforgeNet/Fallout2_Restoration_Project.git" export RPU_HEADERS_PATH="scripts_src/headers" export PARTY_ORDERS_VERSION="v1.16" diff --git a/package.json b/package.json index 622c923..d705d82 100644 --- a/package.json +++ b/package.json @@ -4,14 +4,14 @@ "lint": "eslint source/" }, "devDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "esbuild": "^0.27.3", - "eslint": "^9.39.2", + "@typescript-eslint/parser": "^8.58.0", + "esbuild": "^0.27.4", + "eslint": "^10.1.0", "eslint-plugin-unused-imports": "^4.4.1", - "typescript": "^5.9.3", - "typescript-eslint": "^8.55.0" + "typescript": "^6.0.2", + "typescript-eslint": "^8.58.0" }, "dependencies": { - "folib": "^0.1.2" + "folib": "^0.4.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62627d2..b86bd3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,182 +9,182 @@ importers: .: dependencies: folib: - specifier: ^0.1.2 - version: 0.1.2 + specifier: ^0.4.1 + version: 0.4.1(eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0))(eslint@10.1.0)(typescript-eslint@8.58.0(eslint@10.1.0)(typescript@6.0.2)) devDependencies: '@typescript-eslint/parser': - specifier: ^8.55.0 - version: 8.55.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.58.0 + version: 8.58.0(eslint@10.1.0)(typescript@6.0.2) esbuild: - specifier: ^0.27.3 - version: 0.27.3 + specifier: ^0.27.4 + version: 0.27.4 eslint: - specifier: ^9.39.2 - version: 9.39.2 + specifier: ^10.1.0 + version: 10.1.0 eslint-plugin-unused-imports: specifier: ^4.4.1 - version: 4.4.1(@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0) typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.2 + version: 6.0.2 typescript-eslint: - specifier: ^8.55.0 - version: 8.55.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.58.0 + version: 8.58.0(eslint@10.1.0)(typescript@6.0.2) packages: - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -199,33 +199,25 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.3': + resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.3': + resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -243,69 +235,72 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@typescript-eslint/eslint-plugin@8.55.0': - resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.55.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser': ^8.58.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.55.0': - resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.55.0': - resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.55.0': - resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.55.0': - resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.55.0': - resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.55.0': - resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.55.0': - resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.55.0': - resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.55.0': - resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -313,47 +308,21 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -371,8 +340,8 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} hasBin: true @@ -389,21 +358,21 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@10.1.0: + resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -411,9 +380,9 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} @@ -461,24 +430,27 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - folib@0.1.2: - resolution: {integrity: sha512-Yav3lcxxWJcDNPpaTcOshIyu695hsBDJbofWLL19fYTOGj+R0Z+zuPgSTXpG5buwyGwPqxRykpwFuIiJBlmtBA==} + folib@0.4.1: + resolution: {integrity: sha512-UOZ/T0RWtjIuhMbQBXTbx7p7jJkvaQU/EK6mbm6BstPVvXbQTDNn2wxdv/EUN+6RScEDQ/XpD+HUxWhqUThd/w==} + peerDependencies: + eslint: ^9.0.0 + eslint-plugin-unused-imports: ^4.0.0 + typescript-eslint: ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true + eslint-plugin-unused-imports: + optional: true + typescript-eslint: + optional: true glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -487,10 +459,6 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -506,10 +474,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -530,15 +494,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -558,10 +516,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -570,8 +524,8 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} prelude-ls@1.2.1: @@ -582,10 +536,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -599,20 +549,12 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -621,15 +563,15 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.55.0: - resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -651,128 +593,112 @@ packages: snapshots: - '@esbuild/aix-ppc64@0.27.3': + '@esbuild/aix-ppc64@0.27.4': optional: true - '@esbuild/android-arm64@0.27.3': + '@esbuild/android-arm64@0.27.4': optional: true - '@esbuild/android-arm@0.27.3': + '@esbuild/android-arm@0.27.4': optional: true - '@esbuild/android-x64@0.27.3': + '@esbuild/android-x64@0.27.4': optional: true - '@esbuild/darwin-arm64@0.27.3': + '@esbuild/darwin-arm64@0.27.4': optional: true - '@esbuild/darwin-x64@0.27.3': + '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/freebsd-arm64@0.27.3': + '@esbuild/freebsd-arm64@0.27.4': optional: true - '@esbuild/freebsd-x64@0.27.3': + '@esbuild/freebsd-x64@0.27.4': optional: true - '@esbuild/linux-arm64@0.27.3': + '@esbuild/linux-arm64@0.27.4': optional: true - '@esbuild/linux-arm@0.27.3': + '@esbuild/linux-arm@0.27.4': optional: true - '@esbuild/linux-ia32@0.27.3': + '@esbuild/linux-ia32@0.27.4': optional: true - '@esbuild/linux-loong64@0.27.3': + '@esbuild/linux-loong64@0.27.4': optional: true - '@esbuild/linux-mips64el@0.27.3': + '@esbuild/linux-mips64el@0.27.4': optional: true - '@esbuild/linux-ppc64@0.27.3': + '@esbuild/linux-ppc64@0.27.4': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@esbuild/linux-riscv64@0.27.4': optional: true - '@esbuild/linux-s390x@0.27.3': + '@esbuild/linux-s390x@0.27.4': optional: true - '@esbuild/linux-x64@0.27.3': + '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@esbuild/netbsd-arm64@0.27.4': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@esbuild/netbsd-x64@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@esbuild/openbsd-arm64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@esbuild/openharmony-arm64@0.27.4': optional: true - '@esbuild/sunos-x64@0.27.3': + '@esbuild/sunos-x64@0.27.4': optional: true - '@esbuild/win32-arm64@0.27.3': + '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.27.3': + '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.27.3': + '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0)': dependencies: - eslint: 9.39.2 + eslint: 10.1.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.3 debug: 4.4.3 - minimatch: 3.1.2 + minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.1 - '@eslint/core@0.17.0': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.3': - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.2': {} - - '@eslint/object-schema@2.1.7': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -786,145 +712,121 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 - eslint: 9.39.2 + '@typescript-eslint/parser': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.0 + eslint: 10.1.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - eslint: 9.39.2 - typescript: 5.9.3 + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.0(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.55.0': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@6.0.2)': dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) debug: 4.4.3 - eslint: 9.39.2 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + eslint: 10.1.0 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.55.0': {} + '@typescript-eslint/types@8.58.0': {} - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/project-service': 8.58.0(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@6.0.2) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.58.0(eslint@10.1.0)(typescript@6.0.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - eslint: 9.39.2 - typescript: 5.9.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.55.0': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 8.55.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.58.0 + eslint-visitor-keys: 5.0.1 - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 - acorn@8.15.0: {} + acorn@8.16.0: {} - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - argparse@2.0.1: {} - - balanced-match@1.0.2: {} - - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - callsites@3.1.0: {} + balanced-match@4.0.4: {} - chalk@4.1.2: + brace-expansion@5.0.5: dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - concat-map@0.0.1: {} + balanced-match: 4.0.4 cross-spawn@7.0.6: dependencies: @@ -938,74 +840,73 @@ snapshots: deep-is@0.1.4: {} - esbuild@0.27.3: + esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 escape-string-regexp@4.0.0: {} - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0): dependencies: - eslint: 9.39.2 + eslint: 10.1.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2) - eslint-scope@8.4.0: + eslint-scope@9.1.2: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} - eslint@9.39.2: + eslint@10.1.0: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.3 + '@eslint/config-helpers': 0.5.3 + '@eslint/core': 1.1.1 + '@eslint/plugin-kit': 0.6.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 - chalk: 4.1.2 + ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -1016,18 +917,17 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 10.2.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.2.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 esquery@1.7.0: dependencies: @@ -1047,9 +947,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 file-entry-cache@8.0.0: dependencies: @@ -1062,30 +962,25 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.4.2: {} - folib@0.1.2: {} + folib@0.4.1(eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0))(eslint@10.1.0)(typescript-eslint@8.58.0(eslint@10.1.0)(typescript@6.0.2)): + optionalDependencies: + eslint: 10.1.0 + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0) + typescript-eslint: 8.58.0(eslint@10.1.0)(typescript@6.0.2) glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - globals@14.0.0: {} - - has-flag@4.0.0: {} - ignore@5.3.2: {} ignore@7.0.5: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - imurmurhash@0.1.4: {} is-extglob@2.1.1: {} @@ -1096,10 +991,6 @@ snapshots: isexe@2.0.0: {} - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -1119,15 +1010,9 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.merge@4.6.2: {} - - minimatch@3.1.2: + minimatch@10.2.5: dependencies: - brace-expansion: 1.1.12 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 + brace-expansion: 5.0.5 ms@2.1.3: {} @@ -1150,22 +1035,16 @@ snapshots: dependencies: p-limit: 3.1.0 - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - path-exists@4.0.0: {} path-key@3.1.1: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} prelude-ls@1.2.1: {} punycode@2.3.1: {} - resolve-from@4.0.0: {} - semver@7.7.4: {} shebang-command@2.0.0: @@ -1174,37 +1053,31 @@ snapshots: shebang-regex@3.0.0: {} - strip-json-comments@3.1.1: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 - ts-api-utils@2.4.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@6.0.2): dependencies: - typescript: 5.9.3 + typescript: 6.0.2 type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.55.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.58.0(eslint@10.1.0)(typescript@6.0.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 - typescript: 5.9.3 + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@10.1.0)(typescript@6.0.2))(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/parser': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@6.0.2) + '@typescript-eslint/utils': 8.58.0(eslint@10.1.0)(typescript@6.0.2) + eslint: 10.1.0 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - typescript@5.9.3: {} + typescript@6.0.2: {} uri-js@4.4.1: dependencies: diff --git a/source/fo2tweaks.ts b/source/fo2tweaks.ts index 19e1aaa..ed045f3 100644 --- a/source/fo2tweaks.ts +++ b/source/fo2tweaks.ts @@ -575,7 +575,7 @@ import { PID_ROBOBRAIN_CHIMP, PID_ROBOBRAIN_HUMAN, PID_SULIK, PID_VIC -} from "folib/rp/critterpid"; +} from "folib/rpu/critterpid"; // Ammo PIDs - imported from folib/rp/itempid import { @@ -602,7 +602,7 @@ import { PID_ROCKET_AP, PID_SHOTGUN_SHELLS, PID_SMALL_ENERGY_CELL -} from "folib/rp/itempid"; +} from "folib/rpu/itempid"; /** * Get list of Fallout 2 party member PIDs diff --git a/source/gl_g_ap_rollover.ssl b/source/gl_g_ap_rollover.ssl index 9f9c75c..4c7f26a 100644 --- a/source/gl_g_ap_rollover.ssl +++ b/source/gl_g_ap_rollover.ssl @@ -12,6 +12,7 @@ #define ndebug(msg) debug_msg(SCRIPT_REALNAME + ": " + msg) #define get_sfall_arg_at(index) sfall_func1("get_sfall_arg_at", index) +procedure create_array_map(); procedure fo2tweaks_setting(variable section, variable setting); procedure mode_started(variable mode_to_check, variable old_mode, variable new_mode); procedure combatturn_handler(); @@ -19,6 +20,9 @@ procedure gamemode_handler(); procedure start(); /* ===== bundled ===== */ +procedure create_array_map() begin + return create_array(-1, 0); +end procedure fo2tweaks_setting(variable section, variable setting) begin return get_ini_setting(fo2tweaks_ini + "|" + section + "|" + setting); end @@ -64,7 +68,7 @@ procedure gamemode_handler() begin variable old_mode = get_sfall_arg_at(1); variable new_mode = get_game_mode; if (mode_started(COMBAT, old_mode, new_mode)) then begin - leftover_ap_map = {}; + leftover_ap_map = create_array_map(); end end procedure start() begin @@ -74,7 +78,7 @@ procedure start() begin ndebug("" + max_rollover); register_hook_proc(HOOK_COMBATTURN, combatturn_handler); register_hook_proc(HOOK_GAMEMODECHANGE, gamemode_handler); - leftover_ap_map = {}; + leftover_ap_map = create_array_map(); set_unspent_ap_bonus(0); ndebug("enabled"); end diff --git a/source/gl_g_ap_rollover.tssl b/source/gl_g_ap_rollover.tssl index 75fdbab..4ebdd49 100644 --- a/source/gl_g_ap_rollover.tssl +++ b/source/gl_g_ap_rollover.tssl @@ -1,10 +1,10 @@ import { ndebug, obj_name, ObjectPtr, SfallMap } from "folib"; import { COMBAT, + create_array_map, game_loaded, get_critter_current_ap, get_game_mode, get_sfall_arg, get_sfall_arg_at, HOOK_COMBATTURN, HOOK_GAMEMODECHANGE, - map, register_hook_proc, set_critter_current_ap, set_unspent_ap_bonus, } from "folib/sfall"; @@ -55,7 +55,7 @@ function gamemode_handler() { const old_mode = get_sfall_arg_at(1); const new_mode = get_game_mode(); if (mode_started(COMBAT, old_mode, new_mode)) { - leftover_ap_map = map({}); + leftover_ap_map = create_array_map(); } } @@ -66,7 +66,7 @@ function start() { ndebug("" + max_rollover); register_hook_proc(HOOK_COMBATTURN, combatturn_handler); register_hook_proc(HOOK_GAMEMODECHANGE, gamemode_handler); - leftover_ap_map = map({}); + leftover_ap_map = create_array_map(); set_unspent_ap_bonus(0); ndebug("enabled"); } diff --git a/source/gl_g_auto_cursor.tssl b/source/gl_g_auto_cursor.tssl index b6b837b..2fbdf35 100644 --- a/source/gl_g_auto_cursor.tssl +++ b/source/gl_g_auto_cursor.tssl @@ -1,6 +1,6 @@ import { ndebug, ObjectPtr, tile_num } from "folib"; -import { dude_elevation } from "folib/rp/command"; -import { tile_is_blocked } from "folib/rp/scenepid"; +import { dude_elevation } from "folib/rpu/command"; +import { tile_is_blocked } from "folib/rpu/scenepid"; import { CURSOR_MOVEMENT, CURSOR_TARGETING, DIK_M, diff --git a/source/gl_g_auto_reload.tssl b/source/gl_g_auto_reload.tssl index ee8e020..70256cd 100644 --- a/source/gl_g_auto_reload.tssl +++ b/source/gl_g_auto_reload.tssl @@ -12,8 +12,8 @@ import { obj_pid, rm_mult_objs_from_inven } from "folib"; -import { reg_anim_clear } from "folib/rp/animcomd"; -import { PID_SOLAR_SCORCHER } from "folib/rp/itempid"; +import { reg_anim_clear } from "folib/rpu/animcomd"; +import { PID_SOLAR_SCORCHER } from "folib/rpu/itempid"; import { COMBAT, HOOK_GAMEMODECHANGE, PROTO_AM_PACK_SIZE, PROTO_WP_CALIBER, PROTO_WP_MAG_SIZE, ceil, critter_inven_obj2, game_loaded, get_game_mode, get_light_level, diff --git a/source/gl_g_autodoors.tssl b/source/gl_g_autodoors.tssl index e42a11c..5c42dcd 100644 --- a/source/gl_g_autodoors.tssl +++ b/source/gl_g_autodoors.tssl @@ -8,8 +8,8 @@ import { obj_pid, tile_distance_objs } from "folib"; -import { MAP_VAULT_CITY_VAULT } from "folib/rp/maps"; -import { SCRIPT_VIVLTDOR } from "folib/rp/scripts"; +import { MAP_VAULT_CITY_VAULT } from "folib/rpu/maps"; +import { SCRIPT_VIVLTDOR } from "folib/rpu/scripts"; import { COMBAT, FLAG_WALKTHRU, game_loaded, get_game_mode, get_script, get_sfall_arg_at, diff --git a/source/gl_g_damage_mod.ssl b/source/gl_g_damage_mod.ssl index 45df568..ab1dfe5 100644 --- a/source/gl_g_damage_mod.ssl +++ b/source/gl_g_damage_mod.ssl @@ -381,7 +381,7 @@ procedure check_damage_formula() begin ndebug("check_damage_formula()"); variable damage_formula = get_ini_setting("ddraw.ini|Misc|DamageFormula"); if (damage_formula != 0) then begin - ndebug("Damage Formula set to, resetting" + damage_formula); + ndebug("Damage Formula set to " + damage_formula + ", resetting"); set_ini_setting("ddraw.ini|Misc|DamageFormula", 0); float_msg(dude_obj, "FO2tweaks: damage formula setting in ddraw.ini was incorrect, damage mod failed to load. The setting is fixed now. EXIT AND RE-LAUNCH THE GAME now.", FLOAT_MSG_WARNING); return false; @@ -427,14 +427,16 @@ procedure update_weapons() begin end procedure fix_ammo_stats(variable pids) begin ndebug("fix_ammo_stats(), " + len_array(pids) + " items"); + variable divisor; + variable mult; foreach (variable pid in pids) begin - variable divisor = 100; + divisor = 100; if (not is_ammo_pid(pid)) then begin ndebug("warning | item pid " + pid + " is not ammo"); continue; end variable dr_mod = get_proto_data(pid, PROTO_AM_DR_MOD); - variable mult = 100 + dr_mod; + mult = 100 + dr_mod; variable cd = gcd(divisor, mult); divisor = divisor / cd; mult = mult / cd; diff --git a/source/gl_g_damage_mod.tssl b/source/gl_g_damage_mod.tssl index 807729f..7c320a8 100644 --- a/source/gl_g_damage_mod.tssl +++ b/source/gl_g_damage_mod.tssl @@ -15,7 +15,7 @@ import { PID_HK_G11E, PID_HN_AP_NEEDLER_CARTRIDGE, PID_HN_NEEDLER_CARTRIDGE, PID_M72_GAUSS_RIFLE, PID_MINIGUN, PID_NEEDLER_PISTOL, PID_PK12_GAUSS_PISTOL, PID_ROBO_ROCKET_AMMO, PID_ROCKET_AP, PID_VINDICATOR_MINIGUN -} from "folib/rp/itempid"; +} from "folib/rpu/itempid"; import { BODY, CRITICAL_VALUE_EFFECTS, @@ -118,7 +118,7 @@ function start() { function load_ammo_damage_type(type_ammo_arg: SfallMap): SfallMap { ndebug("load_ammo_damage_type()"); - const ar: SfallMap = map({}); + const ar: SfallMap = map(); for (const [k, v] of type_ammo_arg) { const tmp = string_split(v, ","); for (const t of tmp) { @@ -170,7 +170,7 @@ function check_damage_formula() { ndebug("check_damage_formula()"); const damage_formula = get_ini_setting("ddraw.ini|Misc|DamageFormula"); if (damage_formula != 0) { - ndebug("Damage Formula set to, resetting" + damage_formula); + ndebug("Damage Formula set to " + damage_formula + ", resetting"); set_ini_setting("ddraw.ini|Misc|DamageFormula", 0); float_msg(dude_obj, "FO2tweaks: damage formula setting in ddraw.ini was incorrect, damage mod failed to load. The setting is fixed now. EXIT AND RE-LAUNCH THE GAME now.", FLOAT_MSG_WARNING); return false; @@ -178,7 +178,7 @@ function check_damage_formula() { return true; } -function update_dr_mod(dr_mod_list_arg: SfallMap) { +function update_dr_mod(dr_mod_list_arg: SfallMap) { // have to pass strings, as 0's can't be stored in a map for (const [pid, mod] of dr_mod_list_arg) { let pidInt = pid as number; @@ -236,9 +236,12 @@ function update_weapons() { function fix_ammo_stats(pids: SfallList) { ndebug("fix_ammo_stats(), " + len_array(pids) + " items"); - // let divisor: number; + // sslc only initializes `variable x = constant` once in a loop body, + // so divisor and mult must be declared outside and reassigned each iteration. + let divisor; + let mult; for (const pid of pids) { - let divisor = 100; + divisor = 100; if (!is_ammo_pid(pid)) { // not ammo, how did it get here? ndebug("warning | item pid " + pid + " is not ammo"); @@ -246,7 +249,7 @@ function fix_ammo_stats(pids: SfallList) { } const dr_mod = get_proto_data(pid, PROTO_AM_DR_MOD); - let mult = 100 + dr_mod; + mult = 100 + dr_mod; const cd = gcd(divisor, mult); divisor = divisor / cd; diff --git a/source/gl_g_gigolo.tssl b/source/gl_g_gigolo.tssl index 11592d6..de99075 100644 --- a/source/gl_g_gigolo.tssl +++ b/source/gl_g_gigolo.tssl @@ -1,6 +1,6 @@ import { dude_obj, global_var, item_caps_total, ndebug, ObjectPtr, set_global_var, SfallList } from "folib"; -import { GVAR_GIGALO, GVAR_SEX_COUNTER } from "folib/rp/global"; -import { SCRIPT_ECRAVPTY, SCRIPT_ECTRAPPR, SCRIPT_KCSALLY, SCRIPT_NCKITTY } from "folib/rp/scripts"; +import { GVAR_GIGALO, GVAR_SEX_COUNTER } from "folib/rpu/global"; +import { SCRIPT_ECRAVPTY, SCRIPT_ECTRAPPR, SCRIPT_KCSALLY, SCRIPT_NCKITTY } from "folib/rpu/scripts"; import { array_push, dialog_obj, game_loaded, get_script, get_sfall_arg, get_sfall_global_int, diff --git a/source/gl_g_highlighting.tssl b/source/gl_g_highlighting.tssl index 342aed3..6008464 100644 --- a/source/gl_g_highlighting.tssl +++ b/source/gl_g_highlighting.tssl @@ -9,7 +9,7 @@ import { tile_contains_obj_pid, tile_num } from "folib"; -import { PID_MOTION_SENSOR } from "folib/rp/itempid"; +import { PID_MOTION_SENSOR } from "folib/rpu/itempid"; import { PID_CAVE_FLOOR_TRAP_DEPRESSED, PID_CAVE_FLOOR_TRAP_DISARMED, @@ -20,7 +20,7 @@ import { PRODATA_SC_TYPE, SC_TYPE_LADDER_BOTTOM, SC_TYPE_LADDER_TOP, SC_TYPE_STAIRS -} from "folib/rp/scenepid"; +} from "folib/rpu/scenepid"; import { AUTOMAP, BARTER, BLOCKING_TYPE_SHOOT, CFLG_NOSTEAL, CHARSCREEN, COMBAT, CURSOR_COMMAND, CURSOR_TARGETING, DIALOG, DIALOGVIEW, ESCMENU, diff --git a/source/gl_g_keymap.tssl b/source/gl_g_keymap.tssl index 4eeda47..ae3123b 100644 --- a/source/gl_g_keymap.tssl +++ b/source/gl_g_keymap.tssl @@ -50,7 +50,7 @@ function start() { enabled = fo2tweaks_setting(sec_main, set_keymap); if (enabled == 1) { const tmp = get_ini_section(fo2tweaks_ini, sec_keymap); - keymap = map({}); + keymap = map(); for (const [k, v] of tmp) { ndebug("remapping key " + v + " to " + k); const k_code = char_to_dik(k); diff --git a/source/gl_g_level5.tssl b/source/gl_g_level5.tssl index ca33f68..12cf67e 100644 --- a/source/gl_g_level5.tssl +++ b/source/gl_g_level5.tssl @@ -1,5 +1,5 @@ import { cur_map_index, display_msg, give_exp_points, ndebug } from "folib"; -import { MAP_ARROYO_VILLAGE } from "folib/rp/maps"; +import { MAP_ARROYO_VILLAGE } from "folib/rpu/maps"; import { add_extra_msg_file, map_first_run, message_str_game } from "folib/sfall"; import { fo2tweaks_setting, sec_main } from "./fo2tweaks"; diff --git a/source/gl_g_map_hotkey.tssl b/source/gl_g_map_hotkey.tssl index 4e5ab00..0a29c44 100644 --- a/source/gl_g_map_hotkey.tssl +++ b/source/gl_g_map_hotkey.tssl @@ -1,7 +1,7 @@ import { cur_map_index, dude_obj, float_msg, ndebug, world_map } from "folib"; -import { dude_has_car } from "folib/rp/command"; -import { MAP_MODOC_DOWNTHESHITTER } from "folib/rp/maps"; -import { SCRIPT_MISHTRKS, shitter_has_blown } from "folib/rp/modoc"; +import { dude_has_car } from "folib/rpu/command"; +import { MAP_MODOC_DOWNTHESHITTER } from "folib/rpu/maps"; +import { SCRIPT_MISHTRKS, shitter_has_blown } from "folib/rpu/modoc"; import { add_extra_msg_file, car_give_to_party, DIK_0, DIK_T, FLOAT_MSG_NORMAL, game_loaded, get_game_mode, get_script, get_sfall_arg, HOOK_KEYPRESS, in_world_map, list_as_array, LIST_SCENERY, message_str_game, register_hook_proc, tap_key diff --git a/source/gl_g_modoc_brahmin.tssl b/source/gl_g_modoc_brahmin.tssl index 0d21c63..c505634 100644 --- a/source/gl_g_modoc_brahmin.tssl +++ b/source/gl_g_modoc_brahmin.tssl @@ -1,6 +1,6 @@ import { critter_add_trait, cur_map_index, ndebug } from "folib"; -import { TEAM_PLAYER } from "folib/rp/command"; -import { MAP_MODOC_BRAHMINPASTURES } from "folib/rp/maps"; +import { TEAM_PLAYER } from "folib/rpu/command"; +import { MAP_MODOC_BRAHMINPASTURES } from "folib/rpu/maps"; import { critter_kill_type, HOOK_COMBATTURN, KILL_TYPE_brahmin_kills, diff --git a/source/gl_g_molotov.tssl b/source/gl_g_molotov.tssl index f596b00..9670f64 100644 --- a/source/gl_g_molotov.tssl +++ b/source/gl_g_molotov.tssl @@ -1,5 +1,5 @@ import { CritterPtr, HitResult, HITRESULT_MISS, ItemPtr, ndebug, obj_name, obj_pid, ObjectPtr } from "folib"; -import { PID_MOLOTOV_COCKTAIL } from "folib/rp/itempid"; +import { PID_MOLOTOV_COCKTAIL } from "folib/rpu/itempid"; import { DMG_fire, game_loaded, get_sfall_arg, get_sfall_arg_at, diff --git a/source/gl_g_no_drop_items_on_death.tssl b/source/gl_g_no_drop_items_on_death.tssl index c1ba38d..e0f1f8b 100644 --- a/source/gl_g_no_drop_items_on_death.tssl +++ b/source/gl_g_no_drop_items_on_death.tssl @@ -11,8 +11,8 @@ import { rm_obj_from_inven, SfallMap } from "folib"; -import { ANIM_electrified_to_nothing, ANIM_exploded_to_nothing } from "folib/rp/animcomd"; -import { PID_FOOTLOCKER_CLEAN_LEFT } from "folib/rp/itempid"; +import { ANIM_electrified_to_nothing, ANIM_exploded_to_nothing } from "folib/rpu/animcomd"; +import { PID_FOOTLOCKER_CLEAN_LEFT } from "folib/rpu/itempid"; import { critter_inven_obj2, fix_array, game_loaded, get_sfall_arg, HOOK_DEATHANIM2, HOOK_ONDEATH, @@ -84,7 +84,7 @@ function start() { if (enabled == 1) { register_hook_proc(HOOK_DEATHANIM2, deathanim2_handler); register_hook_proc(HOOK_ONDEATH, ondeath_handler); - critters_boxes = map({}); + critters_boxes = map(); fix_array(critters_boxes); ndebug("initialized"); } diff --git a/source/gl_g_party_level_match.ssl b/source/gl_g_party_level_match.ssl index 63b837a..1b61e40 100644 --- a/source/gl_g_party_level_match.ssl +++ b/source/gl_g_party_level_match.ssl @@ -8,6 +8,7 @@ #define DIALOG 4 #define COMBAT 64 #define HOOK_GAMEMODECHANGE 31 +#define VALTYPE_INT 1 #define PID_VIC 16777278 #define PID_BRAINBOT 16777295 #define PID_JOHN_MACRAE 16777305 @@ -85,14 +86,17 @@ procedure levelup() begin variable pc_level = get_pc_stat(PCSTAT_level); variable party = party_member_list_critters(); foreach (variable who in party) begin + if (who == dude_obj) then begin + continue; + end variable pid = obj_pid(who); ndebug("pc_level = " + pc_level); ndebug("npc is " + obj_name(who) + ", pid " + pid); - variable present = pid_mlevel[pid]; - if (present == 0) then begin + variable min_level = pid_mlevel[pid]; + ndebug("pid_mlevel for pid " + pid + " is " + min_level); + if (min_level == 0) then begin continue; end - variable min_level = pid_mlevel[pid]; variable step = pid_step[pid]; ndebug("step = " + step); variable cur_stage = get_npc_level(pid); @@ -133,8 +137,14 @@ procedure parse_stages(variable npc_list) begin variable mlevel_step = string_split(mlevel_step_str, ","); variable min_level = atoi(mlevel_step[0]); variable step = atoi(mlevel_step[1]); - pid_mlevel[pid] = min_level; - pid_step[pid] = step; + variable pid_key; + if (typeof(pid) != VALTYPE_INT) then begin + pid_key = atoi(pid); + end else begin + pid_key = pid; + end + pid_mlevel[pid_key] = min_level; + pid_step[pid_key] = step; end end procedure start() begin diff --git a/source/gl_g_party_level_match.tssl b/source/gl_g_party_level_match.tssl index fe22449..ec12604 100644 --- a/source/gl_g_party_level_match.tssl +++ b/source/gl_g_party_level_match.tssl @@ -1,16 +1,18 @@ -import { get_pc_stat, ndebug, obj_name, obj_pid, SfallMap } from "folib"; -import { true_party_size } from "folib/rp/command"; -import { f2rp_npc_stages } from "folib/rp/critterpid"; +import { dude_obj, get_pc_stat, map, ndebug, obj_name, obj_pid, SfallMap } from "folib"; +import { true_party_size } from "folib/rpu/command"; +import { f2rp_npc_stages } from "folib/rpu/critterpid"; import { atoi, COMBAT, DIALOG, fix_array, floor2, game_loaded, get_game_mode, get_ini_section, get_npc_level, get_sfall_arg_at, HOOK_GAMEMODECHANGE, - inc_npc_level, len_array, map, party_member_list_critters, + inc_npc_level, len_array, party_member_list_critters, PCSTAT_level, register_hook_proc, + sfall_typeof, string_split, + VALTYPE_INT, } from "folib/sfall"; import { fo2tweaks_ini, fo2tweaks_setting, mode_ended, mode_started, sec_main } from "./fo2tweaks"; @@ -29,15 +31,22 @@ function levelup() { const pc_level = get_pc_stat(PCSTAT_level); const party = party_member_list_critters(); for (const who of party) { + if (who == dude_obj) { + continue; + } const pid = obj_pid(who); ndebug("pc_level = " + pc_level); ndebug("npc is " + obj_name(who) + ", pid " + pid); - const present = pid_mlevel[pid]; - if (present == 0) continue; // not in config - const min_level = pid_mlevel[pid]; + ndebug("pid_mlevel for pid " + pid + " is " + min_level); + + // not in config + if (min_level == 0) { + continue; + } + const step = pid_step[pid]; ndebug("step = " + step); @@ -71,13 +80,20 @@ function map_enter_p_proc() { if (enabled == 1) levelup(); } -function parse_stages(npc_list: SfallMap) { +function parse_stages(npc_list: SfallMap) { for (const [pid, mlevel_step_str] of npc_list) { const mlevel_step = string_split(mlevel_step_str, ","); const min_level = atoi(mlevel_step[0]); const step = atoi(mlevel_step[1]); - pid_mlevel[pid] = min_level; - pid_step[pid] = step; + let pid_key; + if (sfall_typeof(pid) != VALTYPE_INT) { + pid_key = atoi(pid); + } else { + // TS can't infer type from VALTYPE_INT + pid_key = pid as number; + } + pid_mlevel[pid_key] = min_level; + pid_step[pid_key] = step; } } @@ -85,8 +101,8 @@ function start() { if (game_loaded()) { enabled = fo2tweaks_setting(sec_main, set_party_level_match); if (enabled == 1) { - pid_mlevel = map({}); - pid_step = map({}); + pid_mlevel = map(); + pid_step = map(); // load default, override from ini parse_stages(f2rp_npc_stages); diff --git a/source/gl_g_trunk_space.tssl b/source/gl_g_trunk_space.tssl index c6d5264..6aae37f 100644 --- a/source/gl_g_trunk_space.tssl +++ b/source/gl_g_trunk_space.tssl @@ -1,5 +1,5 @@ import { ndebug } from "folib"; -import { PID_CAR_TRUNK } from "folib/rp/itempid"; +import { PID_CAR_TRUNK } from "folib/rpu/itempid"; import { get_proto_data, OBJ_TYPE_ITEM, PROTO_CN_MAX_SIZE, PROTO_IT_TYPE, set_proto_data } from "folib/sfall"; import { fo2tweaks_setting, sec_main } from "./fo2tweaks"; diff --git a/source/gl_g_unlimited_party.tssl b/source/gl_g_unlimited_party.tssl index 1a1b83d..ffb4a9b 100644 --- a/source/gl_g_unlimited_party.tssl +++ b/source/gl_g_unlimited_party.tssl @@ -8,8 +8,8 @@ import { set_critter_stat, SfallList } from "folib"; -import { dude_charisma } from "folib/rp/command"; -import { f2rp_party_member_pids, PID_DOGMEAT } from "folib/rp/critterpid"; +import { dude_charisma } from "folib/rpu/command"; +import { f2rp_party_member_pids, PID_DOGMEAT } from "folib/rpu/critterpid"; import { array_append, critter_inven_obj2, diff --git a/source_test/gl_g_debug.ssl b/source_test/gl_g_debug.ssl index 2eaecfe..d313791 100644 --- a/source_test/gl_g_debug.ssl +++ b/source_test/gl_g_debug.ssl @@ -88,7 +88,7 @@ procedure list_all_critters begin variable c; foreach c in list_as_array(LIST_CRITTERS) begin ndebug(c + " is " + obj_name(c)); - END + end end procedure map_enter_p_proc begin