-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathglobal.d.ts
More file actions
297 lines (266 loc) · 11.3 KB
/
global.d.ts
File metadata and controls
297 lines (266 loc) · 11.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
// Based on https://www.lua.org/manual/5.3/manual.html#6.1
/// <reference lib="es2015.iterable" />
/** @noSelfInFile */
type LuaThread = { readonly __internal__: unique symbol };
type LuaUserdata = { readonly __internal__: unique symbol };
/**
* A global variable (not a function) that holds a string containing the running
* Lua version.
*/
declare const _VERSION:
| ('Lua 5.0' | 'Lua 5.0.1' | 'Lua 5.0.2' | 'Lua 5.0.3')
| 'Lua 5.1'
| 'Lua 5.2'
| 'Lua 5.3'
| 'Lua 5.4';
/**
* A global variable (not a function) that holds the global environment (see
* §2.2). Lua itself does not use this variable; changing its value does not
* affect any environment, nor vice versa.
*/
declare const _G: typeof globalThis;
/**
* Calls error if the value of its argument `v` is false (i.e., nil or false);
* otherwise, returns all its arguments. In case of error, `message` is the
* error object; when absent, it defaults to "assertion failed!"
*/
declare function assert<V>(v: V): Exclude<V, undefined | null | false>;
declare function assert<V, A extends any[]>(
v: V,
...args: A
): LuaMultiReturn<[Exclude<V, undefined | null | false>, ...A]>;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Performs a full garbage-collection cycle. This is the default option.
*/
declare function collectgarbage(opt?: 'collect'): void;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Stops automatic execution of the garbage collector. The collector will run
* only when explicitly invoked, until a call to restart it.
*/
declare function collectgarbage(opt: 'stop'): void;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Restarts automatic execution of the garbage collector.
*/
declare function collectgarbage(opt: 'restart'): void;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Sets arg as the new value for the pause of the collector (see §2.5). Returns
* the previous value for pause.
*/
declare function collectgarbage(opt: 'setpause', arg: number): number;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Sets arg as the new value for the step multiplier of the collector (see
* §2.5). Returns the previous value for step.
*/
declare function collectgarbage(opt: 'setstepmul', arg: number): number;
/**
* This function is a generic interface to the garbage collector. It performs
* different functions according to its first argument, opt.
*
* Performs a garbage-collection step. The step "size" is controlled by arg.
* With a zero value, the collector will perform one basic (indivisible) step.
* For non-zero values, the collector will perform as if that amount of memory
* (in KBytes) had been allocated by Lua. Returns true if the step finished a
* collection cycle.
*/
declare function collectgarbage(opt: 'step', arg: number): boolean;
/**
* Opens the named file and executes its contents as a Lua chunk. When called
* without arguments, dofile executes the contents of the standard input
* (stdin). Returns all values returned by the chunk. In case of errors, dofile
* propagates the error to its caller (that is, dofile does not run in protected
* mode).
*/
declare function dofile(filename?: string): any;
/**
* Terminates the last protected function called and returns message as the
* error object. Function error never returns.
*
* Usually, error adds some information about the error position at the
* beginning of the message, if the message is a string. The level argument
* specifies how to get the error position. With level 1 (the default), the
* error position is where the error function was called. Level 2 points the
* error to where the function that called error was called; and so on. Passing
* a level 0 avoids the addition of error position information to the message.
*/
declare function error(message: string, level?: number): never;
/**
* If object does not have a metatable, returns nil. Otherwise, if the object's
* metatable has a __metatable field, returns the associated value. Otherwise,
* returns the metatable of the given object.
*/
declare function getmetatable<T>(object: T): LuaMetatable<T> | undefined;
/**
* Returns three values (an iterator function, the table t, and 0) so that the
* construction
*
* `for i,v in ipairs(t) do body end`
*
* will iterate over the key–value pairs (1,t[1]), (2,t[2]), ..., up to the
* first nil value.
*/
declare function ipairs<T>(
t: Record<number, T>
): LuaIterable<LuaMultiReturn<[number, NonNullable<T>]>>;
/**
* Allows a program to traverse all fields of a table. Its first argument is a
* table and its second argument is an index in this table. next returns the
* next index of the table and its associated value. When called with nil as its
* second argument, next returns an initial index and its associated value. When
* called with the last index, or with nil in an empty table, next returns nil.
* If the second argument is absent, then it is interpreted as nil. In
* particular, you can use next(t) to check whether a table is empty.
*
* The order in which the indices are enumerated is not specified, even for
* numeric indices. (To traverse a table in numerical order, use a numerical
* for.)
*
* The behavior of next is undefined if, during the traversal, you assign any
* value to a non-existent field in the table. You may however modify existing
* fields. In particular, you may clear existing fields.
*/
declare function next(table: object, index?: any): LuaMultiReturn<[any, any] | []>;
/**
* If t has a metamethod __pairs, calls it with t as argument and returns the
* first three results from the call. Otherwise, returns three values: the next
* function, the table t, and nil, so that the construction
*
* `for k,v in pairs(t) do body end`
*
* will iterate over all key–value pairs of table t.
*
* See function next for the caveats of modifying the table during its
* traversal.
*/
declare function pairs<TKey extends AnyNotNil, TValue>(
t: LuaTable<TKey, TValue>
): LuaIterable<LuaMultiReturn<[TKey, NonNullable<TValue>]>>;
declare function pairs<T>(t: T): LuaIterable<LuaMultiReturn<[keyof T, NonNullable<T[keyof T]>]>>;
/**
* Calls function f with the given arguments in protected mode. This means that
* any error inside f is not propagated; instead, pcall catches the error and
* returns a status code. Its first result is the status code (a boolean), which
* is true if the call succeeds without errors. In such case, pcall also returns
* all results from the call, after this first result. In case of any error,
* pcall returns false plus the error message.
*/
declare function pcall<This, Args extends any[], R>(
f: (this: This, ...args: Args) => R,
context: This,
...args: Args
): LuaMultiReturn<[true, R] | [false, string]>;
declare function pcall<A extends any[], R>(
f: (this: void, ...args: A) => R,
...args: A
): LuaMultiReturn<[true, R] | [false, string]>;
/**
* Receives any number of arguments and prints their values to stdout, using the
* tostring function to convert each argument to a string. print is not intended
* for formatted output, but only as a quick way to show a value, for instance
* for debugging. For complete control over the output, use string.format and
* io.write.
*/
declare function print(...args: any[]): void;
/**
* Checks whether v1 is equal to v2, without invoking the __eq metamethod.
* Returns a boolean.
*/
declare function rawequal<T>(v1: T, v2: T): boolean;
/**
* Gets the real value of table[index], without invoking the __index metamethod.
* table must be a table; index may be any value.
*/
declare function rawget<T extends object, K extends keyof T>(table: T, index: K): T[K];
/**
* Returns the length of the object v, which must be a table or a string,
* without invoking the __len metamethod. Returns an integer.
*/
declare function rawlen(v: object | string): number;
/**
* Sets the real value of table[index] to value, without invoking the __newindex
* metamethod. table must be a table, index any value different from nil and
* NaN, and value any Lua value.
*
* This function returns table.
*/
declare function rawset<T extends object, K extends keyof T>(table: T, index: K, value: T[K]): T;
/**
* If index is a number, returns all arguments after argument number index; a
* negative number indexes from the end (-1 is the last argument). Otherwise,
* index must be the string "#", and select returns the total number of extra
* arguments it received.
*/
declare function select<T>(index: number, ...args: T[]): LuaMultiReturn<T[]>;
/**
* If index is a number, returns all arguments after argument number index; a
* negative number indexes from the end (-1 is the last argument). Otherwise,
* index must be the string "#", and select returns the total number of extra
* arguments it received.
*/
declare function select<T>(index: '#', ...args: T[]): number;
/**
* Sets the metatable for the given table. (To change the metatable of other
* types from Lua code, you must use the debug library (§6.10).) If metatable is
* nil, removes the metatable of the given table. If the original metatable has
* a __metatable field, raises an error.
*
* This function returns table.
*/
declare function setmetatable<
T extends object,
TIndex extends object | ((this: T, key: any) => any) | undefined = undefined
>(
table: T,
metatable?: LuaMetatable<T, TIndex> | null
): TIndex extends (this: T, key: infer TKey) => infer TValue
? T & { [K in TKey & string]: TValue }
: TIndex extends object
? T & TIndex
: T;
/**
* When called with no base, tonumber tries to convert its argument to a number.
* If the argument is already a number or a string convertible to a number, then
* tonumber returns this number; otherwise, it returns nil.
*
* The conversion of strings can result in integers or floats, according to the
* lexical conventions of Lua (see §3.1). (The string may have leading and
* trailing spaces and a sign.)
*
* When called with base, then e must be a string to be interpreted as an
* integer numeral in that base. The base may be any integer between 2 and 36,
* inclusive. In bases above 10, the letter 'A' (in either upper or lower case)
* represents 10, 'B' represents 11, and so forth, with 'Z' representing 35. If
* the string e is not a valid numeral in the given base, the function returns
* nil.
*/
declare function tonumber(e: any, base?: number): number | undefined;
/**
* Receives a value of any type and converts it to a string in a human-readable
* format. (For complete control of how numbers are converted, use
* string.format.)
*
* If the metatable of v has a __tostring field, then tostring calls the
* corresponding value with v as argument, and uses the result of the call as
* its result.
*/
declare function tostring(v: any): string;
/**
* Returns the type of its only argument, coded as a string.
*/
declare function type(
v: any
): 'nil' | 'number' | 'string' | 'boolean' | 'table' | 'function' | 'thread' | 'userdata';