summaryrefslogtreecommitdiff
path: root/server/libs/@lua
diff options
context:
space:
mode:
authorsumneko <sumneko@hotmail.com>2019-04-09 14:04:36 +0800
committersumneko <sumneko@hotmail.com>2019-04-09 14:04:36 +0800
commit264e332acd1dbfb91c3f6633f6b48f3e4119f832 (patch)
tree7a5f78d6ed49f07cf1932550964532cccfc3f0ad /server/libs/@lua
parent96647a35c6977909df5d6c5f7e77d0a4a2dbe2c0 (diff)
downloadlua-language-server-264e332acd1dbfb91c3f6633f6b48f3e4119f832.zip
不要加载自定义库中的全局变量
Diffstat (limited to 'server/libs/@lua')
-rw-r--r--server/libs/@lua/basic.lni564
-rw-r--r--server/libs/@lua/bit32.lni136
-rw-r--r--server/libs/@lua/coroutine.lni102
-rw-r--r--server/libs/@lua/debug.lni269
-rw-r--r--server/libs/@lua/file.lni151
-rw-r--r--server/libs/@lua/io.lni270
-rw-r--r--server/libs/@lua/math.lni340
-rw-r--r--server/libs/@lua/os.lni167
-rw-r--r--server/libs/@lua/package.lni76
-rw-r--r--server/libs/@lua/string.lni265
-rw-r--r--server/libs/@lua/table.lni123
-rw-r--r--server/libs/@lua/utf8.lni174
12 files changed, 2637 insertions, 0 deletions
diff --git a/server/libs/@lua/basic.lni b/server/libs/@lua/basic.lni
new file mode 100644
index 00000000..14c4f669
--- /dev/null
+++ b/server/libs/@lua/basic.lni
@@ -0,0 +1,564 @@
+<default>
+type = 'function'
+
+[arg]
+type = 'table'
+
+[assert]
+[[.args]]
+name = 'v'
+``````````
+name = 'message'
+[[.returns]]
+
+[collectgarbage]
+[[.args]]
+name = 'opt'
+type = 'string'
+optional = 'after'
+``````````
+name = 'arg'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+[[.enums]]
+name = 'opt'
+enum = 'collect'
+default = true
+``````````
+name = 'opt'
+enum = 'stop'
+``````````
+name = 'opt'
+enum = 'restart'
+``````````
+name = 'opt'
+enum = 'count'
+``````````
+name = 'opt'
+enum = 'step'
+``````````
+name = 'opt'
+enum = 'setpause'
+``````````
+name = 'opt'
+enum = 'setstepmul'
+``````````
+name = 'opt'
+enum = 'isrunning'
+
+["collectgarbage Lua 5.4"]
+name = 'collectgarbage'
+version = 'Lua 5.4'
+[[.args]]
+name = 'opt'
+type = 'string'
+optional = 'after'
+``````````
+name = 'arg'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+[[.enums]]
+name = 'opt'
+enum = 'collect'
+default = true
+``````````
+name = 'opt'
+enum = 'stop'
+``````````
+name = 'opt'
+enum = 'restart'
+``````````
+name = 'opt'
+enum = 'count'
+``````````
+name = 'opt'
+enum = 'step'
+``````````
+name = 'opt'
+enum = 'setpause'
+``````````
+name = 'opt'
+enum = 'setstepmul'
+``````````
+name = 'opt'
+enum = 'incremental'
+``````````
+name = 'opt'
+enum = 'generational'
+``````````
+name = 'opt'
+enum = 'isrunning'
+
+[dofile]
+special = 'dofile'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'self'
+[[.returns]]
+
+[error]
+[[.args]]
+name = 'message'
+``````````
+name = 'level'
+type = 'integer'
+optional = 'self'
+
+[_G]
+type = 'table'
+
+[getfenv]
+version = 'Lua 5.1'
+[[.args]]
+name = f
+type = function
+optional = after
+default = 1
+[[.returns]]
+type = table
+
+[getmetatable]
+[[.args]]
+name = 'object'
+[[.returns]]
+name = 'metatable'
+type = 'table'
+
+[ipairs]
+[[.args]]
+name = 't'
+type = 'table'
+[[.returns]]
+name = 'iterator'
+type = 'function'
+args = {
+ 1 = {
+ name = 'table',
+ type = 'table',
+ },
+ 2 = {
+ name = 'i',
+ type = 'integer',
+ }
+}
+returns = {
+ 1 = {
+ name = 'i',
+ type = 'integer',
+ },
+ 2 = {
+ name = 'object',
+ },
+}
+``````````
+name = 't'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+default = 0
+
+[load]
+name = 'load'
+[[.args]]
+name = 'chunk'
+type = {'string', 'function'}
+``````````
+name = 'chunkname'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'after'
+``````````
+name = 'env'
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+[[.enums]]
+name = 'mode'
+enum = 'b'
+``````````
+name = 'mode'
+enum = 't'
+``````````
+name = 'mode'
+enum = 'bt'
+default = true
+
+['load Lua 5.1']
+name = 'load'
+version = {'Lua 5.1'}
+[[.args]]
+name = 'func'
+type = 'function'
+``````````
+name = 'chunkname'
+type = 'string'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[loadfile]
+special = 'loadfile'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'after'
+``````````
+name = 'env'
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+[[.enums]]
+name = 'mode'
+enum = 'b'
+``````````
+name = 'mode'
+enum = 't'
+``````````
+name = 'mode'
+enum = 'bt'
+default = true
+
+['loadfile Lua 5.1']
+name = 'loadfile'
+special = 'loadfile'
+version = 'Lua 5.1'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[loadstring]
+version = 'Lua 5.1'
+[[.args]]
+type = string
+`````````
+name = chunkname
+type = string
+optional = after
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[module]
+version = 'Lua 5.1'
+special = 'module'
+[[.args]]
+name = name
+type = string
+``````````
+type = '...'
+optional = after
+
+[next]
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+optional = 'self'
+[[.returns]]
+name = 'key'
+``````````
+name = 'value'
+
+[pairs]
+[[.args]]
+name = 't'
+type = 'table'
+[[.returns]]
+name = 'next'
+type = 'function'
+args = {
+ 1 = {
+ name = 'table',
+ type = 'table',
+ },
+ 2 = {
+ name = 'index',
+ optional = 'self',
+ },
+}
+returns = {
+ 1 = {
+ name = 'key',
+ },
+ 2 = {
+ name = 'value',
+ },
+}
+``````````
+name = 't'
+type = 'table'
+``````````
+type = 'nil'
+
+[pcall]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'arg1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[print]
+[[.args]]
+type = '...'
+
+[rawequal]
+[[.args]]
+name = 'v1'
+``````````
+name = 'v2'
+[[.returns]]
+type = 'boolean'
+
+[rawget]
+special = 'rawget'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+[[.returns]]
+
+[rawlen]
+[[.args]]
+name = 'v'
+type = {'table', 'string'}
+[[.returns]]
+name = 'len'
+type = 'integer'
+
+[rawset]
+special = 'rawset'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+``````````
+name = 'value'
+[[.returns]]
+name = 'table'
+type = 'table'
+
+[select]
+[[.args]]
+name = 'index'
+type = {'string', 'integer'}
+``````````
+type = '...'
+[[.returns]]
+[[.enums]]
+name = 'index'
+enum = '#'
+``````````
+name = 'index'
+code = 'integer'
+
+[setfenv]
+version = 'Lua 5.1'
+[[.args]]
+name = f
+type = function/integer
+`````````
+type = table
+[[.returns]]
+type = function
+
+[setmetatable]
+special = 'setmetatable'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'metatable'
+type = 'table'
+[[.returns]]
+type = 'table'
+
+[tonumber]
+[[.args]]
+name = 'e'
+type = {'string', 'number'}
+``````````
+name = 'base'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'number'
+
+[tostring]
+[[.args]]
+name = 'v'
+[[.returns]]
+type = 'string'
+
+[type]
+[[.args]]
+name = 'v'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = 'nil'
+``````````
+name = 'type'
+enum = 'number'
+``````````
+name = 'type'
+enum = 'string'
+``````````
+name = 'type'
+enum = 'boolean'
+``````````
+name = 'type'
+enum = 'table'
+``````````
+name = 'type'
+enum = 'function'
+``````````
+name = 'type'
+enum = 'thread'
+``````````
+name = 'type'
+enum = 'userdata'
+
+["_VERSION Lua 5.1"]
+version = 'Lua 5.1'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.1'
+
+["_VERSION Lua 5.2"]
+version = 'Lua 5.2'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.2'
+
+["_VERSION Lua 5.3"]
+version = 'Lua 5.3'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.3'
+
+["_VERSION Lua 5.4"]
+version = 'Lua 5.4'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.4'
+
+[warn]
+version = 'Lua 5.4'
+[[.args]]
+name = 'message'
+type = 'string'
+``````````
+name = 'tocont'
+type = 'boolean'
+optional = 'after'
+
+[xpcall]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'msgh'
+type = 'function'
+``````````
+name = 'arg1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[require]
+special = 'require'
+[[.args]]
+name = 'modname'
+type = 'string'
+[[.returns]]
+
+[unpack]
+version = {'Lua 5.1'}
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+type = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
diff --git a/server/libs/@lua/bit32.lni b/server/libs/@lua/bit32.lni
new file mode 100644
index 00000000..6920323c
--- /dev/null
+++ b/server/libs/@lua/bit32.lni
@@ -0,0 +1,136 @@
+[bit32]
+version = 'Lua 5.2'
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'bit32'
+
+<default>
+version = 'Lua 5.2'
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'bit32',
+ },
+ 2 = {
+ type = 'library',
+ name = 'bit32',
+ }
+}
+
+[arshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[band]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[bnot]
+[[.args]]
+name = x
+type = integer
+[[.returns]]
+type = integer
+
+[bor]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[btest]
+[[.args]]
+type = '...'
+[[.returns]]
+type = boolean
+
+[bxor]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[extract]
+[[.args]]
+name = n
+type = integer
+``````````
+name = field
+type = integer
+``````````
+name = width
+type = integer
+optional = after
+default = 1
+[[.returns]]
+type = integer
+
+[replace]
+[[.args]]
+name = n
+type = integer
+``````````
+name = v
+type = integer
+``````````
+name = field
+type = integer
+``````````
+name = width
+type = integer
+optional = false
+default = 1
+[[.returns]]
+type = integer
+
+[lrotate]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[lshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[rrotate]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[rshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
diff --git a/server/libs/@lua/coroutine.lni b/server/libs/@lua/coroutine.lni
new file mode 100644
index 00000000..be604cb8
--- /dev/null
+++ b/server/libs/@lua/coroutine.lni
@@ -0,0 +1,102 @@
+[coroutine]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'coroutine'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'coroutine',
+ },
+ 2 = {
+ type = 'library',
+ name = 'coroutine',
+ }
+}
+
+[create]
+[[.args]]
+name = 'f'
+type = 'function'
+[[.returns]]
+name = 'coroutine'
+type = 'thread'
+
+[isyieldable]
+[[.returns]]
+type = 'boolean'
+
+[kill]
+version = 'Lua 5.4'
+[[.args]]
+name = 'co'
+type = 'thread'
+[[.returns]]
+name = 'noerror'
+type = 'boolean'
+`````````
+name = 'errorobject'
+type = 'any'
+
+[resume]
+[[.args]]
+name = 'co'
+type = 'thread'
+``````````
+name = 'val1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[running]
+[[.returns]]
+name = 'running_co'
+type = 'thread'
+``````````
+name = 'is_main'
+type = 'boolean'
+
+[status]
+[[.args]]
+name = 'co'
+type = 'thread'
+[[.returns]]
+name = 'status'
+type = 'string'
+[[.enums]]
+name = 'status'
+enum = 'running'
+``````````
+name = 'status'
+enum = 'suspended'
+``````````
+name = 'status'
+enum = 'normal'
+``````````
+name = 'status'
+enum = 'dead'
+
+[wrap]
+[[.args]]
+name = 'f'
+type = 'function'
+[[.returns]]
+type = '...'
+
+[yield]
+[[.args]]
+type = '...'
+[[.returns]]
+type = '...'
diff --git a/server/libs/@lua/debug.lni b/server/libs/@lua/debug.lni
new file mode 100644
index 00000000..74d50161
--- /dev/null
+++ b/server/libs/@lua/debug.lni
@@ -0,0 +1,269 @@
+[debug]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'debug'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'debug',
+ },
+ 2 = {
+ type = 'library',
+ name = 'debug',
+ }
+}
+
+["debug.debug"]
+name = 'debug'
+
+[getfenv]
+version = 'Lua 5.1'
+[[.args]]
+name = o
+[[.returns]]
+type = table
+
+[gethook]
+[[.args]]
+type = 'thread'
+optional = 'self'
+[[.returns]]
+name = 'hook'
+type = 'function'
+``````````
+name = 'mask'
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+
+[getinfo]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'f'
+type = {'integer', 'function'}
+``````````
+name = 'what'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'info'
+type = 'table'
+[[.enums]]
+name = 'what'
+enum = 'n'
+``````````
+name = 'what'
+enum = 'S'
+``````````
+name = 'what'
+enum = 'l'
+``````````
+name = 'what'
+enum = 't'
+``````````
+name = 'what'
+enum = 'u'
+``````````
+name = 'what'
+enum = 'f'
+``````````
+name = 'what'
+enum = 'L'
+
+[getlocal]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'f'
+type = {'integer', 'function'}
+``````````
+name = 'local'
+type = 'integer'
+
+[getmetatable]
+[[.args]]
+name = 'value'
+[[.returns]]
+name = 'metatable'
+type = 'table'
+
+[getregistry]
+[[.returns]]
+type = 'table'
+
+[getupvalue]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'up'
+type = 'integer'
+[[.returns]]
+name = 'name'
+type = 'string'
+``````````
+name = 'value'
+
+[getuservalue]
+[[.args]]
+name = 'u'
+type = 'userdata'
+[[.returns]]
+
+["getuservalue Lua 5.4"]
+name = 'getuservalue'
+version = 'Lua 5.4'
+[[.args]]
+name = 'u'
+type = 'userdata'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'any'
+``````````
+type = 'boolean'
+
+[setfenv]
+version = 'Lua 5.1'
+[[.args]]
+name = 'object'
+``````````
+type = 'table'
+[[.returns]]
+name = 'object'
+
+[sethook]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'hook'
+type = 'function'
+``````````
+name = 'mask'
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+optional = 'self'
+[[.enums]]
+name = 'mask'
+enum = 'c'
+``````````
+name = 'mask'
+enum = 'r'
+``````````
+name = 'mask'
+enum = 'l'
+
+[setlocal]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'level'
+type = 'integer'
+``````````
+name = 'local'
+type = 'integer'
+``````````
+name = 'value'
+[[.returns]]
+name = 'name'
+type = 'string'
+
+[setmetatable]
+[[.args]]
+name = 'value'
+``````````
+type = 'table'
+[[.returns]]
+name = 'value'
+
+[setupvalue]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'up'
+type = 'integer'
+``````````
+name = 'value'
+[[.returns]]
+name = 'name'
+type = 'string'
+
+[setuservalue]
+[[.args]]
+name = 'udata'
+type = 'userdata'
+``````````
+name = 'value'
+[[.returns]]
+name = 'udata'
+type = 'userdata'
+
+["setuservalue Lua 5.4"]
+name = 'setuservalue'
+version = 'Lua 5.4'
+[[.args]]
+name = 'udata'
+type = 'userdata'
+``````````
+name = 'value'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+name = 'udata'
+type = 'userdata'
+
+[traceback]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'message'
+optional = 'after'
+``````````
+name = 'level'
+optional = 'self'
+default = 1
+[[.returns]]
+name = 'message'
+
+[upvalueid]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+name = 'id'
+type = 'userdata'
+
+[upvaluejoin]
+[[.args]]
+name = 'f1'
+type = 'function'
+``````````
+name = 'n1'
+type = 'integer'
+``````````
+name = 'f2'
+type = 'function'
+``````````
+name = 'n2'
+type = 'integer'
diff --git a/server/libs/@lua/file.lni b/server/libs/@lua/file.lni
new file mode 100644
index 00000000..889cbf2d
--- /dev/null
+++ b/server/libs/@lua/file.lni
@@ -0,0 +1,151 @@
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'object',
+ name = 'FILE*',
+ },
+}
+
+[close]
+[[.args]]
+type = 'FILE*'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = true
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+[[.enums]]
+type = 'type'
+enum = 'exit'
+``````````
+type = 'type'
+enum = 'signal'
+
+[flush]
+[[.args]]
+type = 'FILE*'
+
+[lines]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = 'n'
+``````````
+name = 'mode'
+enum = 'a'
+``````````
+name = 'mode'
+enum = 'l'
+default = true
+``````````
+name = 'mode'
+enum = 'L'
+``````````
+name = 'mode'
+code = 'number'
+
+[read]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = 'n'
+``````````
+name = 'mode'
+enum = 'a'
+``````````
+name = 'mode'
+enum = 'l'
+default = true
+``````````
+name = 'mode'
+enum = 'L'
+``````````
+name = 'mode'
+code = 'number'
+
+[seek]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'whence'
+type = 'string'
+optional = 'after'
+``````````
+name = 'offset'
+type = 'integer'
+default = 0
+optional = 'self'
+[[.returns]]
+name = 'offset'
+type = 'integer'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+[[.enums]]
+name = 'whence'
+enum = 'set'
+``````````
+name = 'whence'
+enum = 'cur'
+default = true
+``````````
+name = 'whence'
+enum = 'end'
+
+[setvbuf]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = 'string'
+``````````
+name = 'size'
+type = 'integer'
+[[.enums]]
+name = 'mode'
+enum = 'no'
+``````````
+name = 'mode'
+enum = 'full'
+``````````
+name = 'mode'
+enum = 'line'
+
+[write]
+[[.args]]
+type = 'FILE*'
+``````````
+type = '...'
+[[.returns]]
+type = 'FILE*'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
diff --git a/server/libs/@lua/io.lni b/server/libs/@lua/io.lni
new file mode 100644
index 00000000..bf59969f
--- /dev/null
+++ b/server/libs/@lua/io.lni
@@ -0,0 +1,270 @@
+[io]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'io'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'io',
+ },
+ 2 = {
+ type = 'library',
+ name = 'io',
+ }
+}
+
+[stdin]
+type = 'FILE*'
+
+[stdout]
+type = 'FILE*'
+
+[stderr]
+type = 'FILE*'
+
+[close]
+[[.args]]
+name = 'file'
+type = 'FILE*'
+optional = 'self'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = true
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+[[.enums]]
+type = 'type'
+enum = 'exit'
+``````````
+type = 'type'
+enum = 'signal'
+
+[flush]
+
+[input]
+[[.args]]
+name = 'file'
+type = {'string', 'FILE*'}
+optional = 'self'
+[[.returns]]
+type = 'FILE*'
+optional = 'self'
+
+["lines Lua 5.1"]
+name = 'lines'
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = '*n'
+``````````
+name = 'mode'
+enum = '*a'
+``````````
+name = 'mode'
+enum = '*l'
+default = true
+``````````
+name = 'mode'
+enum = '*L'
+``````````
+name = 'mode'
+code = 'number'
+
+["lines Lua 5.3"]
+name = 'lines'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = 'n'
+``````````
+name = 'mode'
+enum = 'a'
+``````````
+name = 'mode'
+enum = 'l'
+default = true
+``````````
+name = 'mode'
+enum = 'L'
+``````````
+name = 'mode'
+code = 'number'
+
+[open]
+[[.args]]
+name = 'filename'
+type = 'string'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'self'
+default = 'r'
+[[.returns]]
+type = 'FILE*'
+[[.enums]]
+name = 'mode'
+enum = 'r'
+default = true
+``````````
+name = 'mode'
+enum = 'w'
+``````````
+name = 'mode'
+enum = 'a'
+``````````
+name = 'mode'
+enum = 'r+'
+``````````
+name = 'mode'
+enum = 'w+'
+``````````
+name = 'mode'
+enum = 'a+'
+
+[output:input]
+
+[popen]
+[[.args]]
+name = 'prog'
+type = 'string'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'self'
+default = 'r'
+[[.returns]]
+name = 'file'
+type = 'FILE*'
+[[.enums]]
+name = 'mode'
+enum = 'r'
+default = true
+``````````
+name = 'mode'
+enum = 'w'
+
+["read Lua 5.1"]
+name = 'read'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = '*n'
+``````````
+name = 'mode'
+enum = '*a'
+``````````
+name = 'mode'
+enum = '*l'
+default = true
+``````````
+name = 'mode'
+enum = '*L'
+``````````
+name = 'mode'
+code = 'number'
+
+["read Lua 5.3"]
+name = 'read'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = 'n'
+``````````
+name = 'mode'
+enum = 'a'
+``````````
+name = 'mode'
+enum = 'l'
+default = true
+``````````
+name = 'mode'
+enum = 'L'
+``````````
+name = 'mode'
+code = 'number'
+
+[tmpfile]
+[[.returns]]
+type = 'FILE*'
+
+[type]
+[[.args]]
+name = 'obj'
+type = 'FILE*'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = 'file'
+``````````
+name = 'type'
+enum = 'closed file'
+``````````
+name = 'type'
+code = 'nil'
+
+[write]
+[[.args]]
+type = '...'
+[[.returns]]
+type = 'FILE*'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
diff --git a/server/libs/@lua/math.lni b/server/libs/@lua/math.lni
new file mode 100644
index 00000000..20f75315
--- /dev/null
+++ b/server/libs/@lua/math.lni
@@ -0,0 +1,340 @@
+[math]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'math'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'math',
+ },
+ 2 = {
+ type = 'library',
+ name = 'math',
+ }
+}
+
+[abs]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[acos]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[asin]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+["atan Lua 5.1"]
+name = 'atan'
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+["atan Lua 5.3"]
+name = 'atan'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'y'
+type = 'number'
+``````````
+name = 'x'
+type = 'number'
+optional = 'self'
+default = 1
+[[.returns]]
+type = 'number'
+
+[atan2]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'y'
+type = 'number'
+``````````
+name = 'x'
+type = 'number'
+optional = 'self'
+default = 1
+[[.returns]]
+type = 'number'
+
+[ceil]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[cos]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[cosh]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[deg]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[exp]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[floor]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[fmod]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[frexp]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+name = 'm'
+type = 'number'
+``````````
+name = 'e'
+type = 'number'
+
+[huge]
+type = 'number'
+
+[ldexp]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'm'
+type = 'number'
+``````````
+name = 'e'
+type = 'integer'
+[[.returns]]
+type = 'number'
+
+[log]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'base'
+type = 'number'
+optional = 'self'
+default = 'e'
+[[.returns]]
+type = 'number'
+
+['log Lua 5.1']
+name = log
+version = {'Lua 5.1'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[log10]
+version = 'Lua 5.1'
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[max]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+type = '...'
+[[.returns]]
+type = 'number'
+
+[maxinteger]
+type = 'integer'
+
+[min]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+type = '...'
+[[.returns]]
+type = 'number'
+
+[mininteger]
+type = 'integer'
+
+[modf]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+``````````
+type = 'number'
+
+[pi]
+type = 'number'
+
+[power]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[rad]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[random]
+[[.args]]
+name = 'm'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'n'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'number'
+
+[randomseed]
+[[.args]]
+name = 'x'
+type = 'integer'
+
+["randomseed Lua 5.4"]
+name = 'randomseed'
+version = 'Lua 5.4'
+[[.args]]
+name = 'x'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'y'
+type = 'integer'
+optional = 'after'
+default = 0
+
+[sin]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[sinh]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[sqrt]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tan]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tanh]
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tointeger]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[type]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = 'integer'
+``````````
+name = 'type'
+enum = 'float'
+``````````
+name = 'type'
+code = 'nil'
+
+[ult]
+[[.args]]
+name = 'm'
+type = 'integer'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'boolean'
diff --git a/server/libs/@lua/os.lni b/server/libs/@lua/os.lni
new file mode 100644
index 00000000..64d5f1c9
--- /dev/null
+++ b/server/libs/@lua/os.lni
@@ -0,0 +1,167 @@
+[os]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'os'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'os',
+ },
+ 2 = {
+ type = 'library',
+ name = 'os',
+ }
+}
+
+[clock]
+[[.returns]]
+type = 'number'
+
+[data]
+[[.args]]
+name = 'format'
+type = 'string'
+optional = 'after'
+``````````
+name = 'time'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'string'
+
+[difftime]
+[[.args]]
+name = 't2'
+type = 'integer'
+``````````
+name = 't1'
+type = 'integer'
+[[.returns]]
+type = 'integer'
+
+[execute]
+[[.args]]
+name = 'command'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = 'true'
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+type = 'integer'
+[[.enums]]
+type = 'type'
+enum = 'exit'
+``````````
+type = 'type'
+enum = 'signal'
+
+['execute Lua 5.1']
+name = 'execute'
+version = 'Lua 5.1'
+[[.args]]
+name = 'command'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'code'
+type = 'integer'
+
+[exit]
+[[.args]]
+name = 'code'
+type = {'boolean', 'integer'}
+optional = 'after'
+default = true
+``````````
+name = 'close'
+type = 'boolean'
+optional = 'self'
+
+[getenv]
+[[.args]]
+name = 'varname'
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[remove]
+[[.args]]
+name = 'filename'
+type = 'string'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+
+[rename]
+[[.args]]
+name = 'oldname'
+type = 'string'
+``````````
+name = 'newname'
+type = 'string'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+
+[setlocale]
+[[.args]]
+name = 'locale'
+type = 'string'
+``````````
+name = 'category'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'locale'
+type = 'string'
+[[.enums]]
+name = 'category'
+enum = 'all'
+default = true
+``````````
+name = 'category'
+enum = 'collate'
+``````````
+name = 'category'
+enum = 'ctype'
+``````````
+name = 'category'
+enum = 'monetary'
+``````````
+name = 'category'
+enum = 'numeric'
+``````````
+name = 'category'
+enum = 'time'
+
+[time]
+[[.args]]
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'integer'
+
+[tmpname]
+[[.returns]]
+type = 'string'
diff --git a/server/libs/@lua/package.lni b/server/libs/@lua/package.lni
new file mode 100644
index 00000000..43ae7344
--- /dev/null
+++ b/server/libs/@lua/package.lni
@@ -0,0 +1,76 @@
+[package]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'package'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'package',
+ },
+ 2 = {
+ type = 'library',
+ name = 'package',
+ }
+}
+
+[config]
+type = 'string'
+
+[cpath]
+type = 'string'
+
+[loaded]
+type = 'table'
+
+[loaders]
+version = {'Lua 5.1'}
+type = 'table'
+
+[loadlib]
+[[.args]]
+name = 'libname'
+type = 'string'
+``````````
+name = 'funcname'
+type = 'string'
+[[.returns]]
+
+[path]
+type = 'string'
+
+[preload]
+type = 'table'
+
+[searchers]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+type = 'table'
+
+[searchpath]
+[[.args]]
+name = 'name'
+type = 'string'
+``````````
+name = 'path'
+type = 'string'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'after'
+default = '.'
+``````````
+name = 'rep'
+type = 'string'
+optional = 'self'
+
+[seeall]
+version = 'Lua 5.1'
+special = seeall
+[[.args]]
+name = module
+type = table
diff --git a/server/libs/@lua/string.lni b/server/libs/@lua/string.lni
new file mode 100644
index 00000000..bd454fc0
--- /dev/null
+++ b/server/libs/@lua/string.lni
@@ -0,0 +1,265 @@
+[string]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'string'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'string',
+ },
+ 2 = {
+ type = 'library',
+ name = 'string',
+ },
+ 3 = {
+ type = 'object',
+ name = 'string',
+ }
+}
+
+[byte]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'integer'
+``````````
+type = '...'
+
+[char]
+[[.args]]
+name = 'byte'
+type = 'integer'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+``````````
+type = '...'
+
+[dump]
+[[.args]]
+type = 'function'
+``````````
+name = 'strip'
+type = 'boolean'
+[[.returns]]
+name = 'binary'
+type = 'string'
+
+[find]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'plain'
+type = 'boolean'
+optional = 'self'
+[[.returns]]
+name = 'start'
+type = 'integer'
+``````````
+name = 'end'
+type = 'integer'
+``````````
+name = 'captured'
+type = '...'
+
+[format]
+[[.args]]
+type = 'string'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+
+[gmatch]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ type = 'string'
+ },
+ 2 = {
+ type = '...'
+ },
+}
+
+["gmatch Lua 5.4"]
+name = 'gmatch'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'after'
+default = 1
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ type = 'string'
+ },
+ 2 = {
+ type = '...'
+ },
+}
+
+[gsub]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'repl'
+type = {'string', 'table', 'function'}
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+
+[len]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'integer'
+
+[lower]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[match]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'self'
+default = 1
+[[.returns]]
+name = 'captured'
+type = 'string'
+
+[pack]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+``````````
+name = 'v1'
+type = 'string'
+``````````
+name = 'v2'
+type = 'string'
+``````````
+type = '...'
+[[.returns]]
+name = 'binary'
+type = 'string'
+
+[packsize]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+[[.returns]]
+type = 'integer'
+
+[rep]
+[[.args]]
+type = 'string'
+``````````
+name = n
+type = 'integer'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'self'
+default = ''
+[[.returns]]
+type = 'string'
+
+[reverse]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[sub]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+default = -1
+[[.returns]]
+type = 'string'
+
+[unpack]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+``````````
+name = 's'
+type = 'string'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+default = 1
+[[.returns]]
+type = '...'
+``````````
+name = 'offset'
+type = 'integer'
+
+[upper]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
diff --git a/server/libs/@lua/table.lni b/server/libs/@lua/table.lni
new file mode 100644
index 00000000..c48417c3
--- /dev/null
+++ b/server/libs/@lua/table.lni
@@ -0,0 +1,123 @@
+[table]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'table'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'table',
+ },
+ 2 = {
+ type = 'library',
+ name = 'table',
+ }
+}
+
+[concat]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'after'
+default = ''
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'string'
+
+[insert]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+``````````
+name = 'value'
+type = 'any'
+
+[maxn]
+version = {'Lua 5.1'}
+[[.args]]
+type = table
+[[.returns]]
+type = integer
+
+[move]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'a1'
+type = 'table'
+``````````
+name = 'f'
+type = 'integer'
+``````````
+name = 'e'
+type = 'integer'
+``````````
+name = 't'
+type = 'integer'
+``````````
+name = 'a2'
+type = 'table'
+optional = 'self'
+[[.returns]]
+name = 'a2'
+type = 'table'
+
+[pack]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+type = '...'
+[[.returns]]
+type = 'table'
+
+[remove]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+
+[sort]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'comp'
+type = 'function'
+optional = 'self'
+
+[unpack]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+type = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
diff --git a/server/libs/@lua/utf8.lni b/server/libs/@lua/utf8.lni
new file mode 100644
index 00000000..876fdd9c
--- /dev/null
+++ b/server/libs/@lua/utf8.lni
@@ -0,0 +1,174 @@
+[utf8]
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'utf8'
+
+<default>
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'utf8',
+ },
+ 2 = {
+ type = 'library',
+ name = 'utf8',
+ }
+}
+
+[char]
+[[.args]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+
+[charpattern]
+type = 'string'
+code = [=['[\0-\x7F\xC2-\xF4][\x80-\xBF]*']=]
+
+[codes]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'p',
+ type = 'integer',
+ },
+ 2 = {
+ name = 'c',
+ type = 'integer',
+ }
+}
+
+["codes Lua 5.4"]
+name = 'codes'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'p',
+ type = 'integer',
+ },
+ 2 = {
+ name = 'c',
+ type = 'integer',
+ }
+}
+
+[codepoint]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+
+["codepoint Lua 5.4"]
+name = 'codepoint'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+
+[len]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+default = -1
+[[.returns]]
+type = 'integer'
+``````````
+name = 'errpos'
+type = 'integer'
+optional = 'self'
+
+["len Lua 5.4"]
+name = 'len'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'after'
+default = -1
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+type = 'integer'
+``````````
+name = 'errpos'
+type = 'integer'
+optional = 'self'
+
+[offset]
+[[.args]]
+type = 'string'
+``````````
+name = 'n'
+type = 'integer'
+``````````
+name = 'i'
+type = 'integer'
+[[.returns]]
+name = 'p'
+type = 'integer'