lua-obfuscator 1.0.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4552 -0
- package/dist/index.d.cts +399 -0
- package/dist/index.d.ts +397 -12
- package/dist/index.js +4505 -65
- package/package.json +24 -19
- package/.github/workflows/release.yml +0 -40
- package/dist/prometheus/LICENSE +0 -661
- package/dist/prometheus/benchmark.lua +0 -34
- package/dist/prometheus/build.bat +0 -10
- package/dist/prometheus/cli.lua +0 -12
- package/dist/prometheus/doc/README.md +0 -11
- package/dist/prometheus/doc/SUMMARY.md +0 -27
- package/dist/prometheus/doc/advanced/using-prometheus-in-your-lua-application.md +0 -31
- package/dist/prometheus/doc/getting-started/command-line-options.md +0 -13
- package/dist/prometheus/doc/getting-started/installation.md +0 -11
- package/dist/prometheus/doc/getting-started/obfuscating-your-first-script.md +0 -50
- package/dist/prometheus/doc/getting-started/presets.md +0 -10
- package/dist/prometheus/doc/getting-started/the-config-object.md +0 -58
- package/dist/prometheus/doc/getting-started/writing-a-custom-config-file.md +0 -56
- package/dist/prometheus/doc/steps/anti-tamper.md +0 -11
- package/dist/prometheus/doc/steps/constantarray.md +0 -71
- package/dist/prometheus/doc/steps/encryptstrings.md +0 -86
- package/dist/prometheus/doc/steps/proxifylocals.md +0 -47
- package/dist/prometheus/doc/steps/splitstrings.md +0 -40
- package/dist/prometheus/doc/steps/vmify.md +0 -9
- package/dist/prometheus/doc/steps/wrapinfunction.md +0 -29
- package/dist/prometheus/prometheus-main.lua +0 -1
- package/dist/prometheus/readme.md +0 -57
- package/dist/prometheus/readme.txt +0 -5
- package/dist/prometheus/src/cli.lua +0 -154
- package/dist/prometheus/src/colors.lua +0 -61
- package/dist/prometheus/src/config.lua +0 -35
- package/dist/prometheus/src/highlightlua.lua +0 -61
- package/dist/prometheus/src/logger.lua +0 -62
- package/dist/prometheus/src/presets.lua +0 -174
- package/dist/prometheus/src/prometheus/ast.lua +0 -792
- package/dist/prometheus/src/prometheus/bit.lua +0 -521
- package/dist/prometheus/src/prometheus/compiler/compiler.lua +0 -2365
- package/dist/prometheus/src/prometheus/enums.lua +0 -106
- package/dist/prometheus/src/prometheus/namegenerators/Il.lua +0 -41
- package/dist/prometheus/src/prometheus/namegenerators/confuse.lua +0 -169
- package/dist/prometheus/src/prometheus/namegenerators/mangled.lua +0 -26
- package/dist/prometheus/src/prometheus/namegenerators/mangled_shuffled.lua +0 -35
- package/dist/prometheus/src/prometheus/namegenerators/number.lua +0 -11
- package/dist/prometheus/src/prometheus/namegenerators.lua +0 -7
- package/dist/prometheus/src/prometheus/parser.lua +0 -969
- package/dist/prometheus/src/prometheus/pipeline.lua +0 -250
- package/dist/prometheus/src/prometheus/randomLiterals.lua +0 -41
- package/dist/prometheus/src/prometheus/randomStrings.lua +0 -24
- package/dist/prometheus/src/prometheus/scope.lua +0 -332
- package/dist/prometheus/src/prometheus/step.lua +0 -79
- package/dist/prometheus/src/prometheus/steps/AddVararg.lua +0 -33
- package/dist/prometheus/src/prometheus/steps/AntiTamper.lua +0 -194
- package/dist/prometheus/src/prometheus/steps/ConstantArray.lua +0 -521
- package/dist/prometheus/src/prometheus/steps/EncryptStrings.lua +0 -239
- package/dist/prometheus/src/prometheus/steps/NumbersToExpressions.lua +0 -82
- package/dist/prometheus/src/prometheus/steps/ProxifyLocals.lua +0 -313
- package/dist/prometheus/src/prometheus/steps/SplitStrings.lua +0 -338
- package/dist/prometheus/src/prometheus/steps/Vmify.lua +0 -30
- package/dist/prometheus/src/prometheus/steps/Watermark.lua +0 -61
- package/dist/prometheus/src/prometheus/steps/WatermarkCheck.lua +0 -50
- package/dist/prometheus/src/prometheus/steps/WrapInFunction.lua +0 -45
- package/dist/prometheus/src/prometheus/steps.lua +0 -12
- package/dist/prometheus/src/prometheus/tokenizer.lua +0 -546
- package/dist/prometheus/src/prometheus/unparser.lua +0 -866
- package/dist/prometheus/src/prometheus/util.lua +0 -297
- package/dist/prometheus/src/prometheus/visitast.lua +0 -245
- package/dist/prometheus/src/prometheus.lua +0 -71
- package/dist/prometheus/tests/closures.lua +0 -12
- package/dist/prometheus/tests/fibonacci.lua +0 -10
- package/dist/prometheus/tests/loops.lua +0 -8
- package/dist/prometheus/tests/primes.lua +0 -18
- package/dist/prometheus/tests.lua +0 -149
- package/src/index.ts +0 -100
- package/tsconfig.json +0 -13
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,399 @@
|
|
|
1
|
-
type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
type DialectName = 'lua5.1' | 'luaU';
|
|
2
|
+
declare class UnknownDialectError extends Error {
|
|
3
|
+
constructor(given: string);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
interface Position {
|
|
7
|
+
line: number;
|
|
8
|
+
column: number;
|
|
9
|
+
}
|
|
10
|
+
interface SourceLocation {
|
|
11
|
+
start: Position;
|
|
12
|
+
end: Position;
|
|
13
|
+
}
|
|
14
|
+
interface BaseNode {
|
|
15
|
+
type: string;
|
|
16
|
+
range: [number, number];
|
|
17
|
+
loc: SourceLocation;
|
|
18
|
+
}
|
|
19
|
+
interface Chunk extends BaseNode {
|
|
20
|
+
type: 'Chunk';
|
|
21
|
+
body: Statement[];
|
|
22
|
+
}
|
|
23
|
+
type Statement = LocalStatement | CallStatement | WhileStatement | RepeatStatement | AssignmentStatement | CompoundAssignmentStatement | FunctionDeclaration | ForNumericStatement | ForGenericStatement | IfStatement | DoStatement | ReturnStatement | BreakStatement | ContinueStatement | GotoStatement | LabelStatement;
|
|
24
|
+
interface LocalStatement extends BaseNode {
|
|
25
|
+
type: 'LocalStatement';
|
|
26
|
+
variables: Identifier[];
|
|
27
|
+
init: Expression[];
|
|
28
|
+
}
|
|
29
|
+
interface CallStatement extends BaseNode {
|
|
30
|
+
type: 'CallStatement';
|
|
31
|
+
expression: CallExpression | TableCallExpression | StringCallExpression;
|
|
32
|
+
}
|
|
33
|
+
interface WhileStatement extends BaseNode {
|
|
34
|
+
type: 'WhileStatement';
|
|
35
|
+
condition: Expression;
|
|
36
|
+
body: Statement[];
|
|
37
|
+
}
|
|
38
|
+
interface RepeatStatement extends BaseNode {
|
|
39
|
+
type: 'RepeatStatement';
|
|
40
|
+
condition: Expression;
|
|
41
|
+
body: Statement[];
|
|
42
|
+
}
|
|
43
|
+
interface AssignmentStatement extends BaseNode {
|
|
44
|
+
type: 'AssignmentStatement';
|
|
45
|
+
variables: AssignmentTarget[];
|
|
46
|
+
init: Expression[];
|
|
47
|
+
}
|
|
48
|
+
interface CompoundAssignmentStatement extends BaseNode {
|
|
49
|
+
type: 'CompoundAssignmentStatement';
|
|
50
|
+
operator: '+=' | '-=' | '*=' | '/=' | '//=' | '%=' | '^=' | '..=';
|
|
51
|
+
variable: AssignmentTarget;
|
|
52
|
+
value: Expression;
|
|
53
|
+
}
|
|
54
|
+
type AssignmentTarget = Identifier | MemberExpression | IndexExpression;
|
|
55
|
+
interface FunctionDeclaration extends BaseNode {
|
|
56
|
+
type: 'FunctionDeclaration';
|
|
57
|
+
identifier: Identifier | MemberExpression | null;
|
|
58
|
+
isLocal: boolean;
|
|
59
|
+
isMethod: boolean;
|
|
60
|
+
parameters: FunctionParameter[];
|
|
61
|
+
body: Statement[];
|
|
62
|
+
hasVararg: boolean;
|
|
63
|
+
varargTypeAnnotation: Type | null;
|
|
64
|
+
generics: GenericTypeParameter[];
|
|
65
|
+
returnTypeAnnotation: TypeList | null;
|
|
66
|
+
}
|
|
67
|
+
type FunctionParameter = Identifier | VarargLiteral;
|
|
68
|
+
interface ForNumericStatement extends BaseNode {
|
|
69
|
+
type: 'ForNumericStatement';
|
|
70
|
+
variable: Identifier;
|
|
71
|
+
start: Expression;
|
|
72
|
+
end: Expression;
|
|
73
|
+
step: Expression | null;
|
|
74
|
+
body: Statement[];
|
|
75
|
+
}
|
|
76
|
+
interface ForGenericStatement extends BaseNode {
|
|
77
|
+
type: 'ForGenericStatement';
|
|
78
|
+
variables: Identifier[];
|
|
79
|
+
iterators: Expression[];
|
|
80
|
+
body: Statement[];
|
|
81
|
+
}
|
|
82
|
+
interface IfClause extends BaseNode {
|
|
83
|
+
type: 'IfClause';
|
|
84
|
+
condition: Expression;
|
|
85
|
+
body: Statement[];
|
|
86
|
+
}
|
|
87
|
+
interface ElseifClause extends BaseNode {
|
|
88
|
+
type: 'ElseifClause';
|
|
89
|
+
condition: Expression;
|
|
90
|
+
body: Statement[];
|
|
91
|
+
}
|
|
92
|
+
interface ElseClause extends BaseNode {
|
|
93
|
+
type: 'ElseClause';
|
|
94
|
+
body: Statement[];
|
|
95
|
+
}
|
|
96
|
+
interface IfStatement extends BaseNode {
|
|
97
|
+
type: 'IfStatement';
|
|
98
|
+
clauses: Array<IfClause | ElseifClause | ElseClause>;
|
|
99
|
+
}
|
|
100
|
+
interface DoStatement extends BaseNode {
|
|
101
|
+
type: 'DoStatement';
|
|
102
|
+
body: Statement[];
|
|
103
|
+
}
|
|
104
|
+
interface ReturnStatement extends BaseNode {
|
|
105
|
+
type: 'ReturnStatement';
|
|
106
|
+
arguments: Expression[];
|
|
107
|
+
}
|
|
108
|
+
interface BreakStatement extends BaseNode {
|
|
109
|
+
type: 'BreakStatement';
|
|
110
|
+
}
|
|
111
|
+
interface ContinueStatement extends BaseNode {
|
|
112
|
+
type: 'ContinueStatement';
|
|
113
|
+
}
|
|
114
|
+
interface GotoStatement extends BaseNode {
|
|
115
|
+
type: 'GotoStatement';
|
|
116
|
+
label: string;
|
|
117
|
+
}
|
|
118
|
+
interface LabelStatement extends BaseNode {
|
|
119
|
+
type: 'LabelStatement';
|
|
120
|
+
name: string;
|
|
121
|
+
}
|
|
122
|
+
type Expression = Identifier | StringLiteral | NumericLiteral | BooleanLiteral | NilLiteral | VarargLiteral | InterpolatedStringExpression | FunctionDeclaration | TableConstructorExpression | BinaryExpression | LogicalExpression | UnaryExpression | MemberExpression | IndexExpression | CallExpression | TableCallExpression | StringCallExpression | ParenthesizedExpression | IfExpression;
|
|
123
|
+
interface Attribute {
|
|
124
|
+
type: 'Attribute';
|
|
125
|
+
name: 'const' | 'close';
|
|
126
|
+
}
|
|
127
|
+
interface Identifier extends BaseNode {
|
|
128
|
+
type: 'Identifier';
|
|
129
|
+
name: string;
|
|
130
|
+
attribute: Attribute['name'] | null;
|
|
131
|
+
typeAnnotation: Type | null;
|
|
132
|
+
scope: 'global' | 'local' | 'parameter' | 'upvalue';
|
|
133
|
+
isField: boolean;
|
|
134
|
+
bindingId: number | null;
|
|
135
|
+
}
|
|
136
|
+
interface StringLiteral extends BaseNode {
|
|
137
|
+
type: 'StringLiteral';
|
|
138
|
+
value: string;
|
|
139
|
+
raw: string;
|
|
140
|
+
}
|
|
141
|
+
interface NumericLiteral extends BaseNode {
|
|
142
|
+
type: 'NumericLiteral';
|
|
143
|
+
value: number;
|
|
144
|
+
raw: string;
|
|
145
|
+
}
|
|
146
|
+
interface BooleanLiteral extends BaseNode {
|
|
147
|
+
type: 'BooleanLiteral';
|
|
148
|
+
value: boolean;
|
|
149
|
+
}
|
|
150
|
+
interface NilLiteral extends BaseNode {
|
|
151
|
+
type: 'NilLiteral';
|
|
152
|
+
}
|
|
153
|
+
interface VarargLiteral extends BaseNode {
|
|
154
|
+
type: 'VarargLiteral';
|
|
155
|
+
value: '...';
|
|
156
|
+
}
|
|
157
|
+
interface InterpolatedStringExpression extends BaseNode {
|
|
158
|
+
type: 'InterpolatedStringExpression';
|
|
159
|
+
strings: string[];
|
|
160
|
+
expressions: Expression[];
|
|
161
|
+
}
|
|
162
|
+
type TableField = TableKey | TableKeyString | TableValue;
|
|
163
|
+
interface TableKey extends BaseNode {
|
|
164
|
+
type: 'TableKey';
|
|
165
|
+
key: Expression;
|
|
166
|
+
value: Expression;
|
|
167
|
+
}
|
|
168
|
+
interface TableKeyString extends BaseNode {
|
|
169
|
+
type: 'TableKeyString';
|
|
170
|
+
key: Identifier;
|
|
171
|
+
value: Expression;
|
|
172
|
+
}
|
|
173
|
+
interface TableValue extends BaseNode {
|
|
174
|
+
type: 'TableValue';
|
|
175
|
+
value: Expression;
|
|
176
|
+
}
|
|
177
|
+
interface TableConstructorExpression extends BaseNode {
|
|
178
|
+
type: 'TableConstructorExpression';
|
|
179
|
+
fields: TableField[];
|
|
180
|
+
}
|
|
181
|
+
type BinaryOperator = '+' | '-' | '*' | '/' | '//' | '%' | '^' | '..' | '==' | '~=' | '<' | '<=' | '>' | '>=' | '&' | '|' | '~' | '<<' | '>>';
|
|
182
|
+
interface BinaryExpression extends BaseNode {
|
|
183
|
+
type: 'BinaryExpression';
|
|
184
|
+
operator: BinaryOperator;
|
|
185
|
+
left: Expression;
|
|
186
|
+
right: Expression;
|
|
187
|
+
}
|
|
188
|
+
interface LogicalExpression extends BaseNode {
|
|
189
|
+
type: 'LogicalExpression';
|
|
190
|
+
operator: 'and' | 'or';
|
|
191
|
+
left: Expression;
|
|
192
|
+
right: Expression;
|
|
193
|
+
}
|
|
194
|
+
interface UnaryExpression extends BaseNode {
|
|
195
|
+
type: 'UnaryExpression';
|
|
196
|
+
operator: '-' | 'not' | '#';
|
|
197
|
+
argument: Expression;
|
|
198
|
+
}
|
|
199
|
+
interface MemberExpression extends BaseNode {
|
|
200
|
+
type: 'MemberExpression';
|
|
201
|
+
indexer: '.' | ':';
|
|
202
|
+
base: Expression;
|
|
203
|
+
identifier: Identifier;
|
|
204
|
+
optional: boolean;
|
|
205
|
+
}
|
|
206
|
+
interface IndexExpression extends BaseNode {
|
|
207
|
+
type: 'IndexExpression';
|
|
208
|
+
base: Expression;
|
|
209
|
+
index: Expression;
|
|
210
|
+
optional: boolean;
|
|
211
|
+
}
|
|
212
|
+
interface CallExpression extends BaseNode {
|
|
213
|
+
type: 'CallExpression';
|
|
214
|
+
base: Expression;
|
|
215
|
+
arguments: Expression[];
|
|
216
|
+
}
|
|
217
|
+
interface TableCallExpression extends BaseNode {
|
|
218
|
+
type: 'TableCallExpression';
|
|
219
|
+
base: Expression;
|
|
220
|
+
arguments: [TableConstructorExpression];
|
|
221
|
+
}
|
|
222
|
+
interface StringCallExpression extends BaseNode {
|
|
223
|
+
type: 'StringCallExpression';
|
|
224
|
+
base: Expression;
|
|
225
|
+
argument: StringLiteral;
|
|
226
|
+
}
|
|
227
|
+
interface ParenthesizedExpression extends BaseNode {
|
|
228
|
+
type: 'ParenthesizedExpression';
|
|
229
|
+
expression: Expression;
|
|
230
|
+
}
|
|
231
|
+
interface IfExpression extends BaseNode {
|
|
232
|
+
type: 'IfExpression';
|
|
233
|
+
clauses: Array<{
|
|
234
|
+
condition: Expression | null;
|
|
235
|
+
body: Expression;
|
|
236
|
+
}>;
|
|
237
|
+
}
|
|
238
|
+
type Type = TypeReference | TypeUnion | TypeIntersection | TypeOptional | TypeFunction | TypeTable | TypeLiteralString | TypeLiteralBoolean | TypeTypeof | TypeParenthesized | TypeVariadic;
|
|
239
|
+
interface GenericTypeParameter {
|
|
240
|
+
name: string;
|
|
241
|
+
defaultType: Type | null;
|
|
242
|
+
}
|
|
243
|
+
interface TypeList {
|
|
244
|
+
types: Type[];
|
|
245
|
+
vararg: TypeVariadic | null;
|
|
246
|
+
}
|
|
247
|
+
interface TypeReference extends BaseNode {
|
|
248
|
+
type: 'TypeReference';
|
|
249
|
+
name: string;
|
|
250
|
+
typeArguments: Type[];
|
|
251
|
+
}
|
|
252
|
+
interface TypeUnion extends BaseNode {
|
|
253
|
+
type: 'TypeUnion';
|
|
254
|
+
types: Type[];
|
|
255
|
+
}
|
|
256
|
+
interface TypeIntersection extends BaseNode {
|
|
257
|
+
type: 'TypeIntersection';
|
|
258
|
+
types: Type[];
|
|
259
|
+
}
|
|
260
|
+
interface TypeOptional extends BaseNode {
|
|
261
|
+
type: 'TypeOptional';
|
|
262
|
+
base: Type;
|
|
263
|
+
}
|
|
264
|
+
interface TypeFunction extends BaseNode {
|
|
265
|
+
type: 'TypeFunction';
|
|
266
|
+
generics: GenericTypeParameter[];
|
|
267
|
+
parameters: Array<{
|
|
268
|
+
name: string | null;
|
|
269
|
+
type: Type;
|
|
11
270
|
}>;
|
|
271
|
+
returns: TypeList;
|
|
272
|
+
}
|
|
273
|
+
interface TypeTableField {
|
|
274
|
+
key: string | Type | null;
|
|
275
|
+
value: Type;
|
|
276
|
+
}
|
|
277
|
+
interface TypeTable extends BaseNode {
|
|
278
|
+
type: 'TypeTable';
|
|
279
|
+
fields: TypeTableField[];
|
|
280
|
+
}
|
|
281
|
+
interface TypeLiteralString extends BaseNode {
|
|
282
|
+
type: 'TypeLiteralString';
|
|
283
|
+
value: string;
|
|
284
|
+
}
|
|
285
|
+
interface TypeLiteralBoolean extends BaseNode {
|
|
286
|
+
type: 'TypeLiteralBoolean';
|
|
287
|
+
value: boolean;
|
|
288
|
+
}
|
|
289
|
+
interface TypeTypeof extends BaseNode {
|
|
290
|
+
type: 'TypeTypeof';
|
|
291
|
+
expression: Expression;
|
|
292
|
+
}
|
|
293
|
+
interface TypeParenthesized extends BaseNode {
|
|
294
|
+
type: 'TypeParenthesized';
|
|
295
|
+
type_: Type;
|
|
296
|
+
}
|
|
297
|
+
interface TypeVariadic extends BaseNode {
|
|
298
|
+
type: 'TypeVariadic';
|
|
299
|
+
base: Type;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
declare class LexError extends Error {
|
|
303
|
+
line: number;
|
|
304
|
+
column: number;
|
|
305
|
+
constructor(message: string, line: number, column: number);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
declare class ParseError extends Error {
|
|
309
|
+
line: number;
|
|
310
|
+
column: number;
|
|
311
|
+
constructor(message: string, line: number, column: number);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
type BindingKind = 'local' | 'parameter' | 'for-loop' | 'for-in' | 'local-function';
|
|
315
|
+
interface Binding {
|
|
316
|
+
id: number;
|
|
317
|
+
name: string;
|
|
318
|
+
kind: BindingKind;
|
|
319
|
+
declaration: Identifier;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Resolves every Identifier's lexical scope in place, mutating the tree.
|
|
323
|
+
* Run this once, right after parsing and before any obfuscation pass reads
|
|
324
|
+
* `.scope` / `.bindingId` — renaming, global-mapping, vmify, etc. all depend
|
|
325
|
+
* on this having already run.
|
|
326
|
+
*/
|
|
327
|
+
declare function resolveScopes(chunk: Chunk): Chunk;
|
|
328
|
+
|
|
329
|
+
interface GeneratorOptions {
|
|
330
|
+
/** Emit everything on a single line, statements separated by `;`, instead of pretty-printed/indented. */
|
|
331
|
+
minify?: boolean;
|
|
332
|
+
}
|
|
333
|
+
declare function generate(chunk: Chunk, options?: GeneratorOptions): string;
|
|
334
|
+
|
|
335
|
+
type StepConfig = {
|
|
336
|
+
name: 'Vmify';
|
|
337
|
+
} | {
|
|
338
|
+
name: 'RenameVariables';
|
|
339
|
+
} | {
|
|
340
|
+
name: 'ConstantArray';
|
|
341
|
+
} | {
|
|
342
|
+
name: 'EncryptStrings';
|
|
343
|
+
} | {
|
|
344
|
+
name: 'EncryptNumbers';
|
|
345
|
+
} | {
|
|
346
|
+
name: 'StringsToExpressions';
|
|
347
|
+
min?: number;
|
|
348
|
+
max?: number;
|
|
349
|
+
} | {
|
|
350
|
+
name: 'NumbersToExpressions';
|
|
351
|
+
min?: number;
|
|
352
|
+
max?: number;
|
|
353
|
+
} | {
|
|
354
|
+
name: 'InsertJunk';
|
|
355
|
+
probability?: number;
|
|
356
|
+
maxPerBlock?: number;
|
|
357
|
+
} | {
|
|
358
|
+
name: "GlobalMapping";
|
|
359
|
+
globalTableName?: string;
|
|
360
|
+
} | {
|
|
361
|
+
name: "WrapInFunction";
|
|
362
|
+
};
|
|
363
|
+
interface ObfuscateOptions {
|
|
364
|
+
steps: StepConfig[];
|
|
365
|
+
/** Emit the final output as a single `;`-joined line instead of pretty-printed/indented. Default: false. */
|
|
366
|
+
minify?: boolean;
|
|
12
367
|
}
|
|
13
|
-
|
|
14
|
-
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Obfuscates Lua/Luau source code by parsing it and running the requested
|
|
371
|
+
* pipeline of passes over the AST, in the order given, then re-emitting
|
|
372
|
+
* source.
|
|
373
|
+
*
|
|
374
|
+
* obfuscate(src, 'luaU', { steps: [
|
|
375
|
+
* { name: 'Vmify' },
|
|
376
|
+
* { name: 'RenameVariables' },
|
|
377
|
+
* { name: 'ConstantArray' },
|
|
378
|
+
* { name: 'EncryptStrings' },
|
|
379
|
+
* { name: 'StringsToExpressions', min: 5, max: 20 },
|
|
380
|
+
* { name: 'NumbersToExpressions', min: 5, max: 20 },
|
|
381
|
+
* ]})
|
|
382
|
+
*/
|
|
383
|
+
declare function obfuscate(source: string, dialect: DialectName, options: ObfuscateOptions): string;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Parses source code and returns an AST (Chunk) with lexical scope already
|
|
387
|
+
* resolved: every Identifier's `.scope` ('local' | 'parameter' | 'upvalue' |
|
|
388
|
+
* 'global') and `.bindingId` accurately reflect where it's actually bound,
|
|
389
|
+
* not just the parser's syntactic guess at the declaration site.
|
|
390
|
+
*
|
|
391
|
+
* parse(source, 'lua5.1') -> parse as standard Lua 5.1 syntax
|
|
392
|
+
* parse(source, 'luaU') -> parse as Luau syntax (types, continue, string interpolation, attributes, etc.)
|
|
393
|
+
*
|
|
394
|
+
* Throws a ParseError when it encounters syntax the dialect doesn't support
|
|
395
|
+
* (e.g. parsing `local x <const> = 1` while the dialect is lua5.1).
|
|
396
|
+
*/
|
|
397
|
+
declare function parse(source: string, dialect: DialectName): Chunk;
|
|
398
|
+
|
|
399
|
+
export { type AssignmentStatement, type AssignmentTarget, type Attribute, type BaseNode, type BinaryExpression, type BinaryOperator, type Binding, type BindingKind, type BooleanLiteral, type BreakStatement, type CallExpression, type CallStatement, type Chunk, type CompoundAssignmentStatement, type ContinueStatement, type DialectName, type DoStatement, type ElseClause, type ElseifClause, type Expression, type ForGenericStatement, type ForNumericStatement, type FunctionDeclaration, type FunctionParameter, type GeneratorOptions, type GenericTypeParameter, type GotoStatement, type Identifier, type IfClause, type IfExpression, type IfStatement, type IndexExpression, type InterpolatedStringExpression, type LabelStatement, LexError, type LocalStatement, type LogicalExpression, type MemberExpression, type NilLiteral, type NumericLiteral, type ObfuscateOptions, type ParenthesizedExpression, ParseError, type Position, type RepeatStatement, type ReturnStatement, type SourceLocation, type Statement, type StepConfig, type StringCallExpression, type StringLiteral, type TableCallExpression, type TableConstructorExpression, type TableField, type TableKey, type TableKeyString, type TableValue, type Type, type TypeFunction, type TypeIntersection, type TypeList, type TypeLiteralBoolean, type TypeLiteralString, type TypeOptional, type TypeParenthesized, type TypeReference, type TypeTable, type TypeTableField, type TypeTypeof, type TypeUnion, type TypeVariadic, type UnaryExpression, UnknownDialectError, type VarargLiteral, type WhileStatement, generate, obfuscate, parse, resolveScopes };
|