This commit is contained in:
2026-03-27 07:06:16 +01:00
commit 1541961403
340 changed files with 151916 additions and 0 deletions
@@ -0,0 +1,3 @@
---@meta file-browser
return require 'modules.apis.fb'
@@ -0,0 +1,39 @@
---@meta _
---@class KeybindFlags
---@field repeatable boolean?
---@field scalable boolean?
---@field complex boolean?
---@class KeybindCommandTable
---@class Keybind
---@field key string
---@field command KeybindCommand
---@field api_version string?
---
---@field name string?
---@field condition string?
---@field flags KeybindFlags?
---@field filter ('file'|'dir')?
---@field parser string?
---@field multiselect boolean?
---@field multi-type ('repeat'|'concat')?
---@field delay number?
---@field concat-string string?
---@field passthrough boolean?
---
---@field prev_key Keybind? The keybind that was previously set to the same key.
---@field codes Set<string>? Any substituation codes used by the command table.
---@field condition_codes Set<string>? Any substitution codes used by the condition string.
---@field addon boolean? Whether the keybind was created by an addon.
---@alias KeybindFunctionCallback async fun(keybind: Keybind, state: State, co: thread)
---@alias KeybindCommand KeybindFunctionCallback|KeybindCommandTable[]
---@alias KeybindTuple [string,string,KeybindCommand,KeybindFlags?]
---@alias KeybindTupleStrict [string,string,KeybindFunctionCallback,KeybindFlags?]
---@alias KeybindList (Keybind|KeybindTuple)[]
@@ -0,0 +1,25 @@
---@meta _
---@alias List Item[]
---Represents an item returned by the parsers.
---@class Item
---@field type 'file'|'dir'
---@field name string
---@field label string?
---@field path string?
---@field ass string?
---@field redirect boolean?
---@field mpv_options string|{[string]: unknown}?
---The Opts table returned by the parsers.
---@class Opts
---@field filtered boolean?
---@field sorted boolean?
---@field directory string?
---@field directory_label string?
---@field empty_text string?
---@field selected_index number?
---@field id string?
---@field parser Parser?
@@ -0,0 +1,148 @@
---@meta mp
---@class mp
local mp = {}
---@class AsyncReturn
---@class MPTimer
---@field stop fun(self: MPTimer)
---@field kill fun(self: MPTimer)
---@field resume fun(self: MPTimer)
---@field is_enabled fun(self: MPTimer): boolean
---@field timeout number
---@field oneshot boolean
---@class OSDOverlay
---@field data string
---@field res_x number
---@field res_y number
---@field z number
---@field update fun(self:OSDOverlay)
---@field remove fun(self: OSDOverlay)
---@class MPVSubprocessResult
---@field status number
---@field stdout string
---@field stderr string
---@field error_string ''|'killed'|'init'
---@field killed_by_us boolean
---@param key string
---@param name_or_fn string|function
---@param fn? async fun()
---@param flags? KeybindFlags
function mp.add_key_binding(key, name_or_fn, fn, flags) end
---@param key string
---@param name_or_fn string|function
---@param fn? async fun()
---@param flags? KeybindFlags
function mp.add_forced_key_binding(key, name_or_fn, fn, flags) end
---@param seconds number
---@param fn function
---@param disabled? boolean
---@return MPTimer
function mp.add_timeout(seconds, fn, disabled) end
---@param format 'ass-events'
---@return OSDOverlay
function mp.create_osd_overlay(format) end
---@param ... string
function mp.commandv(...) end
---@generic T
---@param t table
---@param def? T
---@return unknown|T result
---@return string? error
---@overload fun(t: table): (unknown|nil, string?)
function mp.command_native(t, def) end
---@nodiscard
---@param t table
---@param cb fun(success: boolean, result: unknown, error: string?)
---@return AsyncReturn
function mp.command_native_async(t, cb) end
---@param t AsyncReturn
function mp.abort_async_command(t) end
---@generic T
---@param name string
---@param def? T
---@return string|T
---@overload fun(name: string): string|nil
function mp.get_property(name, def) end
---@generic T
---@param name string
---@param def? T
---@return boolean|T
---@overload fun(name: string): boolean|nil
function mp.get_property_bool(name, def) end
---@generic T
---@param name string
---@param def? T
---@return number|T
---@overload fun(name: string): number|nil
function mp.get_property_number(name, def) end
---@generic T
---@param name string
---@param def? T
---@return unknown|T
---@overload fun(name: string): unknown|nil
function mp.get_property_native(name, def) end
---@return string|nil
function mp.get_script_directory() end
---@return string
function mp.get_script_name() end
---@param name string
---@param type 'native'|'bool'|'string'|'number'
---@param fn fun(name: string, v: unknown)
function mp.observe_property(name, type, fn) end
---@param name string
---@param fn function
---@return boolean
function mp.register_event(name, fn) end
---@param name string
---@param fn fun(...: string)
function mp.register_script_message(name, fn) end
---@param name string
function mp.remove_key_binding(name) end
---@param name string
---@param value string
---@return true? success # nil if error
---@return string? err
function mp.set_property(name, value) end
---@param name string
---@param value boolean
---@return true? success # nil if error
---@return string? err
function mp.set_property_bool(name, value) end
---@param name string
---@param value number
---@return true? success # nil if error
---@return string? err
function mp.set_property_number(name, value) end
---@param name string
---@param value any
---@return true? success # nil if error
---@return string? err
function mp.set_property_native(name, value) end
return mp
@@ -0,0 +1,21 @@
---@meta mp.input
---@class mp.input
local input = {}
---@class InputGetOpts
---@field prompt string?
---@field default_text string?
---@field id string?
---@field submit (fun(text: string))?
---@field opened (fun())?
---@field edited (fun(text: string))?
---@field complete (fun(text_before_cursor: string): string[], number)?
---@field closed (fun(text: string))?
---@param options InputGetOpts
function input.get(options) end
function input.terminate() end
return input
@@ -0,0 +1,32 @@
---@meta mp.msg
---@class mp.msg
local msg = {}
---@param level 'fatal'|'error'|'warn'|'info'|'v'|'debug'|'trace'
---@param ... any
function msg.log(level, ...) end
---@param ... any
function msg.fatal(...) end
---@param ... any
function msg.error(...) end
---@param ... any
function msg.warn(...) end
---@param ... any
function msg.info(...) end
---@param ... any
function msg.verbose(...) end
---@param ... any
function msg.debug(...) end
---@param ... any
function msg.trace(...) end
return msg
@@ -0,0 +1,11 @@
---@meta mp.options
---@class mp.options
local options = {}
---@param t table<string,string|number|boolean>
---@param identifier? string
---@param on_update? fun(list: table<string,true|nil>)
function options.read_options(t, identifier, on_update) end
return options
@@ -0,0 +1,43 @@
---@meta mp.utils
---@class mp.utils
local utils = {}
---@param v string|boolean|number|table|nil
---@return string? json # nil on error
---@return string? err # error
function utils.format_json(v) end
---@param p1 string
---@param p2 string
---@return string
function utils.join_path(p1, p2) end
---@param str string
---@param trail? boolean
---@return (table|unknown[])? t
---@return string? err # error
---@return string trail # trailing characters
function utils.parse_json(str, trail) end
---@param path string
---@param filter ('files'|'dirs'|'normal'|'all')?
---@return string[]? # nil on error
---@return string? err # error
function utils.readdir(path, filter) end
---@deprecated
---@param name string
---@param value string
function utils.shared_script_property_set(name, value) end
---@param path string
---@return string directory
---@return string filename
function utils.split_path(path) end
---@param v any
---@return string
function utils.to_string(v) end
return utils
@@ -0,0 +1,41 @@
---@meta _
---A ParserConfig object returned by addons
---@class (partial) ParserConfig: ParserAPI
---@field priority number?
---@field api_version string The minimum API version the string requires.
---@field version string? The minimum API version the string requires. @deprecated.
---
---@field can_parse (async fun(self: Parser, directory: string, parse_state: ParseState): boolean)?
---@field parse (async fun(self: Parser, directory: string, parse_state: ParseState): List?, Opts?)?
---@field setup fun(self: Parser)?
---
---@field name string?
---@field keybind_name string?
---@field keybinds KeybindList?
---The parser object used by file-browser once the parsers have been loaded and initialised.
---@class Parser: ParserAPI, ParserConfig
---@field name string
---@field priority number
---@field api_version string
---@field can_parse async fun(self: Parser, directory: string, parse_state: ParseState): boolean
---@field parse async fun(self: Parser, directory: string, parse_state: ParseState): List?, Opts?
---@alias ParseStateSource 'browser'|'loadlist'|'script-message'|'addon'|string
---@alias ParseProperties table<string,any>
---The Parse State object passed to the can_parse and parse methods
---@class ParseStateFields
---@field source ParseStateSource
---@field directory string
---@field already_deferred boolean?
---@field properties ParseProperties
---@class ParseState: ParseStateFields, ParseStateAPI
---@class ParseStateTemplate
---@field source ParseStateSource?
---@field properties ParseProperties?
@@ -0,0 +1,21 @@
---@meta _
---@class Set<T>: {[T]: boolean}
---@class (exact) State
---@field list List
---@field selected number
---@field hidden boolean
---@field flag_update boolean
---@field keybinds KeybindTupleStrict[]?
---
---@field parser Parser?
---@field directory string?
---@field directory_label string?
---@field prev_directory string
---@field empty_text string
---@field co thread?
---
---@field multiselect_start number?
---@field initial_selection Set<number>?
---@field selection Set<number>?
@@ -0,0 +1,28 @@
---@meta user-input-module
---@class user_input_module
local user_input_module = {}
---@class UserInputOpts
---@field id string?
---@field source string?
---@field request_text string?
---@field default_input string?
---@field cursor_pos number?
---@field queueable boolean?
---@field replace boolean?
---@class UserInputRequest
---@field callback function?
---@field passthrough_args any[]?
---@field pending boolean
---@field cancel fun(self: UserInputRequest)
---@field update fun(self: UserInputRequest, opts: UserInputOpts)
---@param fn function
---@param opts UserInputOpts
---@param ... any passthrough arguments
---@return UserInputRequest
function user_input_module.get_user_input(fn, opts, ...) end
return user_input_module