UNPKG

lua-types

Version:

TypeScript definitions for Lua standard library

142 lines (132 loc) 6.56 kB
// Based on https://www.lua.org/manual/5.3/manual.html#6.3 /** @noSelfInFile */ /** * Loads the given module. The function starts by looking into the * package.loaded table to determine whether modname is already loaded. If it * is, then require returns the value stored at package.loaded[modname]. * Otherwise, it tries to find a loader for the module. * * To find a loader, require is guided by the package.searchers sequence. By * changing this sequence, we can change how require looks for a module. The * following explanation is based on the default configuration for * package.searchers. * * First require queries package.preload[modname]. If it has a value, this value * (which must be a function) is the loader. Otherwise require searches for a * Lua loader using the path stored in package.path. If that also fails, it * searches for a C loader using the path stored in package.cpath. If that also * fails, it tries an all-in-one loader (see package.searchers). * * Once a loader is found, require calls the loader with two arguments: modname * and an extra value dependent on how it got the loader. (If the loader came * from a file, this extra value is the file name.) If the loader returns any * non-nil value, require assigns the returned value to package.loaded[modname]. * If the loader does not return a non-nil value and has not assigned any value * to package.loaded[modname], then require assigns true to this entry. In any * case, require returns the final value of package.loaded[modname]. * * If there is any error loading or running the module, or if it cannot find any * loader for the module, then require raises an error. */ declare function require(modname: string): any; /** * The package library provides basic facilities for loading modules in Lua. It * exports one function directly in the global environment: require. Everything * else is exported in a table package. */ declare namespace package { /** * A string describing some compile-time configurations for packages. This * string is a sequence of lines: * * The first line is the directory separator string. Default is '\' for * Windows and '/' for all other systems. * * The second line is the character that separates templates in a path. * Default is ';'. * * The third line is the string that marks the substitution points in a * template. Default is '?'. * * The fourth line is a string that, in a path in Windows, is replaced by * the executable's directory. Default is '!'. * * The fifth line is a mark to ignore all text after it when building the * luaopen_ function name. Default is '-'. */ var config: string; /** * The path used by require to search for a C loader. * * Lua initializes the C path package.cpath in the same way it initializes the * Lua path package.path, using the environment variable LUA_CPATH_5_3, or the * environment variable LUA_CPATH, or a default path defined in luaconf.h. */ var cpath: string; /** * A table used by require to control which modules are already loaded. When * you require a module modname and package.loaded[modname] is not false, * require simply returns the value stored there. * * This variable is only a reference to the real table; assignments to this * variable do not change the table used by require. */ const loaded: Record<string, any>; /** * Dynamically links the host program with the C library libname. * * If funcname is "*", then it only links with the library, making the symbols * exported by the library available to other dynamically linked libraries. * Otherwise, it looks for a function funcname inside the library and returns * this function as a C function. So, funcname must follow the lua_CFunction * prototype (see lua_CFunction). * * This is a low-level function. It completely bypasses the package and module * system. Unlike require, it does not perform any path searching and does not * automatically adds extensions. libname must be the complete file name of * the C library, including if necessary a path and an extension. funcname * must be the exact name exported by the C library (which may depend on the C * compiler and linker used). * * This function is not supported by Standard C. As such, it is only available * on some platforms (Windows, Linux, Mac OS X, Solaris, BSD, plus other Unix * systems that support the dlfcn standard). */ function loadlib( libname: string, funcname: string ): [Function] | [undefined, string, 'open' | 'init']; /** * The path used by require to search for a Lua loader. * * At start-up, Lua initializes this variable with the value of the * environment variable LUA_PATH_5_3 or the environment variable LUA_PATH or * with a default path defined in luaconf.h, if those environment variables * are not defined. Any ";;" in the value of the environment variable is * replaced by the default path. */ var path: string; /** * A table to store loaders for specific modules (see require). * * This variable is only a reference to the real table; assignments to this * variable do not change the table used by require. */ const preload: Record<string, (modname: string, fileName?: string) => any>; /** * Searches for the given name in the given path. * * A path is a string containing a sequence of templates separated by * semicolons. For each template, the function replaces each interrogation * mark (if any) in the template with a copy of name wherein all occurrences * of sep (a dot, by default) were replaced by rep (the system's directory * separator, by default), and then tries to open the resulting file name. * * For instance, if the path is the string * * `./?.lua;./?.lc;/usr/local/?/init.lua` * * the search for the name foo.a will try to open the files ./foo/a.lua, * ./foo/a.lc, and /usr/local/foo/a/init.lua, in that order. * * Returns the resulting name of the first file that it can open in read mode * (after closing the file), or nil plus an error message if none succeeds. * (This error message lists all file names it tried to open.) */ function searchpath(name: string, path: string, sep?: string, rep?: string): string; }