@casual-simulation/aux-common 3.1.8 → 3.1.9-alpha.3341326932
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/bots/Bot.d.ts +1 -1
- package/bots/Bot.js.map +1 -1
- package/bots/BotEvents.d.ts +24 -0
- package/bots/BotEvents.js.map +1 -1
- package/math/Vector2.js +6 -1
- package/math/Vector2.js.map +1 -1
- package/math/Vector3.js +6 -1
- package/math/Vector3.js.map +1 -1
- package/package.json +4 -2
- package/runtime/AuxCompiler.d.ts +74 -1
- package/runtime/AuxCompiler.js +332 -25
- package/runtime/AuxCompiler.js.map +1 -1
- package/runtime/AuxGlobalContext.d.ts +14 -4
- package/runtime/AuxGlobalContext.js +9 -1
- package/runtime/AuxGlobalContext.js.map +1 -1
- package/runtime/AuxLibrary.d.ts +191 -10
- package/runtime/AuxLibrary.js +172 -37
- package/runtime/AuxLibrary.js.map +1 -1
- package/runtime/AuxLibraryDefinitions.def +495 -83
- package/runtime/AuxRuntime.d.ts +66 -7
- package/runtime/AuxRuntime.js +976 -118
- package/runtime/AuxRuntime.js.map +1 -1
- package/runtime/AuxRuntimeDynamicImports.d.ts +14 -0
- package/runtime/AuxRuntimeDynamicImports.js +24 -0
- package/runtime/AuxRuntimeDynamicImports.js.map +1 -0
- package/runtime/CompiledBot.d.ts +59 -1
- package/runtime/CompiledBot.js +2 -0
- package/runtime/CompiledBot.js.map +1 -1
- package/runtime/RuntimeBot.d.ts +17 -0
- package/runtime/RuntimeBot.js +85 -5
- package/runtime/RuntimeBot.js.map +1 -1
- package/runtime/Transpiler.d.ts +21 -0
- package/runtime/Transpiler.js +27 -0
- package/runtime/Transpiler.js.map +1 -1
- package/runtime/Utils.d.ts +11 -0
- package/runtime/Utils.js +30 -1
- package/runtime/Utils.js.map +1 -1
- package/runtime/test/RuntimeTestHelpers.d.ts +5 -0
- package/runtime/test/RuntimeTestHelpers.js +11 -0
- package/runtime/test/RuntimeTestHelpers.js.map +1 -1
- package/test/TestHelpers.js +2 -2
- package/test/TestHelpers.js.map +1 -1
package/runtime/AuxCompiler.js
CHANGED
|
@@ -1,12 +1,52 @@
|
|
|
1
|
-
import { calculateOriginalLineLocation, Transpiler, } from './Transpiler';
|
|
1
|
+
import { calculateFinalLineLocation, calculateOriginalLineLocation, Transpiler, } from './Transpiler';
|
|
2
2
|
import { isScript, parseScript, hasValue } from '../bots';
|
|
3
3
|
import { flatMap } from 'lodash';
|
|
4
4
|
import ErrorStackParser from '@casual-simulation/error-stack-parser';
|
|
5
5
|
import StackFrame from 'stackframe';
|
|
6
|
+
import { unwind, INTERPRETER_OBJECT, } from '@casual-simulation/js-interpreter/InterpreterUtils';
|
|
6
7
|
/**
|
|
7
8
|
* A symbol that identifies a function as having been compiled using the AuxCompiler.
|
|
8
9
|
*/
|
|
9
10
|
export const COMPILED_SCRIPT_SYMBOL = Symbol('compiled_script');
|
|
11
|
+
/**
|
|
12
|
+
* The symbol that is used to tag specific functions as interpretable.
|
|
13
|
+
*/
|
|
14
|
+
export const INTERPRETABLE_FUNCTION = Symbol('interpretable_function');
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new interpretable function based on the given function.
|
|
17
|
+
* @param interpretableFunc
|
|
18
|
+
*/
|
|
19
|
+
export function createInterpretableFunction(interpretableFunc) {
|
|
20
|
+
const normalFunc = ((...args) => unwind(interpretableFunc(...args)));
|
|
21
|
+
normalFunc[INTERPRETABLE_FUNCTION] = interpretableFunc;
|
|
22
|
+
return normalFunc;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sets the INTERPRETABLE_FUNCTION property on the given object (semantically a function) to the given interpretable version and returns the object.
|
|
26
|
+
* @param interpretableFunc The version of the function that should be used as the interpretable version of the function.
|
|
27
|
+
* @param normalFunc The function that should be tagged.
|
|
28
|
+
*/
|
|
29
|
+
export function tagAsInterpretableFunction(interpretableFunc, normalFunc) {
|
|
30
|
+
normalFunc[INTERPRETABLE_FUNCTION] = interpretableFunc;
|
|
31
|
+
return normalFunc;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Determines if the given object has been tagged with the GENERATOR_FUNCTION_TAG.
|
|
35
|
+
* @param obj The object.
|
|
36
|
+
*/
|
|
37
|
+
export function isInterpretableFunction(obj) {
|
|
38
|
+
return ((typeof obj === 'function' || typeof obj === 'object') &&
|
|
39
|
+
obj !== null &&
|
|
40
|
+
!!obj[INTERPRETABLE_FUNCTION]);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Gets the interpretable version of the given function.
|
|
44
|
+
*/
|
|
45
|
+
export function getInterpretableFunction(obj) {
|
|
46
|
+
return isInterpretableFunction(obj)
|
|
47
|
+
? obj[INTERPRETABLE_FUNCTION]
|
|
48
|
+
: null;
|
|
49
|
+
}
|
|
10
50
|
const JSX_FACTORY = 'html.h';
|
|
11
51
|
const JSX_FRAGMENT_FACTORY = 'html.f';
|
|
12
52
|
/**
|
|
@@ -37,6 +77,107 @@ export class AuxCompiler {
|
|
|
37
77
|
* @param error The error that occurred.
|
|
38
78
|
*/
|
|
39
79
|
calculateOriginalStackTrace(functionNameMap, error) {
|
|
80
|
+
if (INTERPRETER_OBJECT in error) {
|
|
81
|
+
return this._calculateInterpreterErrorOriginalStackTrace(functionNameMap, error);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
return this._calculateNativeErrorOriginalStackTrace(functionNameMap, error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
_calculateInterpreterErrorOriginalStackTrace(functionNameMap, error) {
|
|
88
|
+
var _a, _b, _c, _d, _e, _f;
|
|
89
|
+
const frames = ErrorStackParser.parse(error);
|
|
90
|
+
if (frames.length < 1) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
let transformedFrames = [];
|
|
94
|
+
let lastScriptFrameIndex = -1;
|
|
95
|
+
let lastScript;
|
|
96
|
+
for (let i = frames.length - 1; i >= 0; i--) {
|
|
97
|
+
const frame = frames[i];
|
|
98
|
+
let savedFrame = false;
|
|
99
|
+
let functionName = frame.functionName;
|
|
100
|
+
const lastDotIndex = functionName.lastIndexOf('.');
|
|
101
|
+
if (lastDotIndex >= 0) {
|
|
102
|
+
functionName = functionName.slice(lastDotIndex + 1);
|
|
103
|
+
}
|
|
104
|
+
const script = functionNameMap.get(functionName);
|
|
105
|
+
let isWrapperFunc = false;
|
|
106
|
+
if (!/^__wrapperFunc/.test(frame.functionName)) {
|
|
107
|
+
if (script) {
|
|
108
|
+
lastScript = script;
|
|
109
|
+
const location = {
|
|
110
|
+
lineNumber: frame.lineNumber + this.functionErrorLineOffset,
|
|
111
|
+
column: frame.columnNumber,
|
|
112
|
+
};
|
|
113
|
+
const originalLocation = this.calculateOriginalLineLocation(script, location);
|
|
114
|
+
savedFrame = true;
|
|
115
|
+
if (lastScriptFrameIndex < 0) {
|
|
116
|
+
lastScriptFrameIndex = i;
|
|
117
|
+
}
|
|
118
|
+
transformedFrames.unshift(new StackFrame({
|
|
119
|
+
functionName: (_a = lastScript.metadata.diagnosticFunctionName) !== null && _a !== void 0 ? _a : functionName,
|
|
120
|
+
fileName: (_b = script.metadata.fileName) !== null && _b !== void 0 ? _b : functionName,
|
|
121
|
+
lineNumber: Math.max(originalLocation.lineNumber + 1, 1),
|
|
122
|
+
columnNumber: Math.max(originalLocation.column + 1, 1),
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
else if (lastScript) {
|
|
126
|
+
if (typeof frame.lineNumber === 'number' &&
|
|
127
|
+
typeof frame.columnNumber === 'number') {
|
|
128
|
+
const location = {
|
|
129
|
+
lineNumber: frame.lineNumber + this.functionErrorLineOffset,
|
|
130
|
+
column: frame.columnNumber,
|
|
131
|
+
};
|
|
132
|
+
const originalLocation = this.calculateOriginalLineLocation(lastScript, location);
|
|
133
|
+
savedFrame = true;
|
|
134
|
+
transformedFrames.unshift(new StackFrame({
|
|
135
|
+
functionName: (_c = lastScript.metadata
|
|
136
|
+
.diagnosticFunctionName) !== null && _c !== void 0 ? _c : functionName,
|
|
137
|
+
fileName: (_d = lastScript.metadata.fileName) !== null && _d !== void 0 ? _d : functionName,
|
|
138
|
+
lineNumber: Math.max(originalLocation.lineNumber + 1, 1),
|
|
139
|
+
columnNumber: Math.max(originalLocation.column + 1, 1),
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
savedFrame = true;
|
|
144
|
+
transformedFrames.unshift(new StackFrame({
|
|
145
|
+
functionName: (_e = lastScript.metadata
|
|
146
|
+
.diagnosticFunctionName) !== null && _e !== void 0 ? _e : functionName,
|
|
147
|
+
fileName: (_f = lastScript.metadata.fileName) !== null && _f !== void 0 ? _f : functionName,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
isWrapperFunc = true;
|
|
154
|
+
}
|
|
155
|
+
if (!savedFrame && isWrapperFunc) {
|
|
156
|
+
savedFrame = true;
|
|
157
|
+
if (lastScriptFrameIndex > i) {
|
|
158
|
+
lastScriptFrameIndex -= 1;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!savedFrame) {
|
|
162
|
+
transformedFrames.unshift(frame);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (lastScriptFrameIndex >= 0) {
|
|
166
|
+
const finalFrames = [
|
|
167
|
+
...transformedFrames.slice(0, lastScriptFrameIndex + 1),
|
|
168
|
+
new StackFrame({
|
|
169
|
+
fileName: '[Native CasualOS Code]',
|
|
170
|
+
functionName: '<CasualOS>',
|
|
171
|
+
}),
|
|
172
|
+
];
|
|
173
|
+
const stack = finalFrames
|
|
174
|
+
.map((frame) => ' at ' + frame.toString())
|
|
175
|
+
.join('\n');
|
|
176
|
+
return error.toString() + '\n' + stack;
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
_calculateNativeErrorOriginalStackTrace(functionNameMap, error) {
|
|
40
181
|
var _a, _b, _c, _d;
|
|
41
182
|
const frames = ErrorStackParser.parse(error);
|
|
42
183
|
if (frames.length < 1) {
|
|
@@ -121,12 +262,14 @@ export class AuxCompiler {
|
|
|
121
262
|
}
|
|
122
263
|
/**
|
|
123
264
|
* Calculates the original location within the given function for the given location.
|
|
265
|
+
* The returned location uses zero-based line and column numbers.
|
|
124
266
|
* @param func The function.
|
|
125
|
-
* @param location The location.
|
|
267
|
+
* @param location The location. Line and column numbers are one-based.
|
|
126
268
|
*/
|
|
127
269
|
calculateOriginalLineLocation(func, location) {
|
|
128
270
|
// Line numbers should be one based
|
|
129
|
-
if (location.lineNumber <
|
|
271
|
+
if (location.lineNumber <
|
|
272
|
+
func.metadata.scriptLineOffset + func.metadata.transpilerLineOffset) {
|
|
130
273
|
return {
|
|
131
274
|
lineNumber: 0,
|
|
132
275
|
column: 0,
|
|
@@ -139,7 +282,30 @@ export class AuxCompiler {
|
|
|
139
282
|
let result = calculateOriginalLineLocation(func.metadata.transpilerResult, transpiledLocation);
|
|
140
283
|
return {
|
|
141
284
|
lineNumber: result.lineNumber - func.metadata.transpilerLineOffset,
|
|
142
|
-
column: result.column
|
|
285
|
+
column: result.column,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Calculates the final location within the given function for the given location.
|
|
290
|
+
* @param func The function.
|
|
291
|
+
* @param location The location. Line and column numbers are zero based.
|
|
292
|
+
*/
|
|
293
|
+
calculateFinalLineLocation(func, location) {
|
|
294
|
+
// Line numbers should be zero based
|
|
295
|
+
if (location.lineNumber < 0) {
|
|
296
|
+
return {
|
|
297
|
+
lineNumber: 0,
|
|
298
|
+
column: 0,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
let transpiledLocation = {
|
|
302
|
+
lineNumber: location.lineNumber + func.metadata.transpilerLineOffset,
|
|
303
|
+
column: location.column,
|
|
304
|
+
};
|
|
305
|
+
let result = calculateFinalLineLocation(func.metadata.transpilerResult, transpiledLocation);
|
|
306
|
+
return {
|
|
307
|
+
lineNumber: result.lineNumber + func.metadata.scriptLineOffset,
|
|
308
|
+
column: result.column,
|
|
143
309
|
};
|
|
144
310
|
}
|
|
145
311
|
/**
|
|
@@ -148,7 +314,7 @@ export class AuxCompiler {
|
|
|
148
314
|
* @param options The options that should be used to compile the script.
|
|
149
315
|
*/
|
|
150
316
|
compile(script, options) {
|
|
151
|
-
let { func, scriptLineOffset, transpilerLineOffset, async, transpilerResult, } = this._compileFunction(script, options || {});
|
|
317
|
+
let { func, scriptLineOffset, transpilerLineOffset, async, transpilerResult, constructedFunction, } = this._compileFunction(script, options || {});
|
|
152
318
|
const scriptFunction = func;
|
|
153
319
|
const meta = {
|
|
154
320
|
scriptFunction,
|
|
@@ -158,6 +324,8 @@ export class AuxCompiler {
|
|
|
158
324
|
fileName: options === null || options === void 0 ? void 0 : options.fileName,
|
|
159
325
|
diagnosticFunctionName: options === null || options === void 0 ? void 0 : options.diagnosticFunctionName,
|
|
160
326
|
isAsync: async,
|
|
327
|
+
constructedFunction,
|
|
328
|
+
context: options === null || options === void 0 ? void 0 : options.context,
|
|
161
329
|
};
|
|
162
330
|
if (options) {
|
|
163
331
|
if (options.before ||
|
|
@@ -198,6 +366,33 @@ export class AuxCompiler {
|
|
|
198
366
|
after(context);
|
|
199
367
|
}
|
|
200
368
|
};
|
|
369
|
+
if (isInterpretableFunction(scriptFunc)) {
|
|
370
|
+
const interpretableFunc = getInterpretableFunction(scriptFunc);
|
|
371
|
+
const finalFunc = invoke
|
|
372
|
+
? (...args) => invoke(() => interpretableFunc(...args), context)
|
|
373
|
+
: interpretableFunc;
|
|
374
|
+
const interpretable = function* __wrapperFunc(...args) {
|
|
375
|
+
before(context);
|
|
376
|
+
try {
|
|
377
|
+
let result = yield* finalFunc(...args);
|
|
378
|
+
if (!(result instanceof Promise)) {
|
|
379
|
+
result = new Promise((resolve, reject) => {
|
|
380
|
+
result.then(resolve, reject);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
return result.catch((ex) => {
|
|
384
|
+
onError(ex, context, meta);
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
catch (ex) {
|
|
388
|
+
onError(ex, context, meta);
|
|
389
|
+
}
|
|
390
|
+
finally {
|
|
391
|
+
after(context);
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
tagAsInterpretableFunction(interpretable, func);
|
|
395
|
+
}
|
|
201
396
|
}
|
|
202
397
|
else {
|
|
203
398
|
func = function __wrapperFunc(...args) {
|
|
@@ -212,6 +407,25 @@ export class AuxCompiler {
|
|
|
212
407
|
after(context);
|
|
213
408
|
}
|
|
214
409
|
};
|
|
410
|
+
if (isInterpretableFunction(scriptFunc)) {
|
|
411
|
+
const interpretableFunc = getInterpretableFunction(scriptFunc);
|
|
412
|
+
const finalFunc = invoke
|
|
413
|
+
? (...args) => invoke(() => interpretableFunc(...args), context)
|
|
414
|
+
: interpretableFunc;
|
|
415
|
+
const interpretable = function* __wrapperFunc(...args) {
|
|
416
|
+
before(context);
|
|
417
|
+
try {
|
|
418
|
+
return yield* finalFunc(...args);
|
|
419
|
+
}
|
|
420
|
+
catch (ex) {
|
|
421
|
+
onError(ex, context, meta);
|
|
422
|
+
}
|
|
423
|
+
finally {
|
|
424
|
+
after(context);
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
tagAsInterpretableFunction(interpretable, func);
|
|
428
|
+
}
|
|
215
429
|
}
|
|
216
430
|
}
|
|
217
431
|
}
|
|
@@ -247,6 +461,67 @@ export class AuxCompiler {
|
|
|
247
461
|
}
|
|
248
462
|
return null;
|
|
249
463
|
}
|
|
464
|
+
/**
|
|
465
|
+
* Sets the given breakpoint.
|
|
466
|
+
* @param breakpoint The breakpoint that should be set.
|
|
467
|
+
*/
|
|
468
|
+
setBreakpoint(breakpoint) {
|
|
469
|
+
const metadata = breakpoint.func.metadata;
|
|
470
|
+
if (!metadata.constructedFunction) {
|
|
471
|
+
throw new Error('Cannot set breakpoints for non-interpreted functions.');
|
|
472
|
+
}
|
|
473
|
+
if (!breakpoint.interpreter) {
|
|
474
|
+
throw new Error('You must provide an interpreter when setting a breakpoint.');
|
|
475
|
+
}
|
|
476
|
+
const func = metadata.constructedFunction;
|
|
477
|
+
const interpreter = breakpoint.interpreter;
|
|
478
|
+
const loc = this.calculateFinalLineLocation(breakpoint.func, {
|
|
479
|
+
lineNumber: breakpoint.lineNumber - 1,
|
|
480
|
+
column: breakpoint.columnNumber - 1,
|
|
481
|
+
});
|
|
482
|
+
interpreter.setBreakpoint({
|
|
483
|
+
id: breakpoint.id,
|
|
484
|
+
func,
|
|
485
|
+
lineNumber: loc.lineNumber + 1,
|
|
486
|
+
columnNumber: loc.column + 1,
|
|
487
|
+
states: breakpoint.states,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
listPossibleBreakpoints(func, interpreter) {
|
|
491
|
+
const metadata = func.metadata;
|
|
492
|
+
if (!metadata.constructedFunction) {
|
|
493
|
+
throw new Error('Cannot list possible breakpoints for non-interpreted functions.');
|
|
494
|
+
}
|
|
495
|
+
if (!interpreter) {
|
|
496
|
+
throw new Error('You must provide an interpreter when listing possible breakpoints.');
|
|
497
|
+
}
|
|
498
|
+
const code = metadata.constructedFunction.func
|
|
499
|
+
.ECMAScriptCode;
|
|
500
|
+
const returnStatement = code.FunctionStatementList.find((s) => s.type === 'ReturnStatement');
|
|
501
|
+
const functionDeclaration = returnStatement.Expression;
|
|
502
|
+
const body = functionDeclaration.FunctionBody;
|
|
503
|
+
const possibleBreakpoints = interpreter.listPossibleBreakpoints(body);
|
|
504
|
+
let returnedValues = [];
|
|
505
|
+
for (let pb of possibleBreakpoints) {
|
|
506
|
+
if (pb.lineNumber <
|
|
507
|
+
metadata.scriptLineOffset + metadata.transpilerLineOffset) {
|
|
508
|
+
continue;
|
|
509
|
+
}
|
|
510
|
+
const loc = this.calculateOriginalLineLocation(func, {
|
|
511
|
+
lineNumber: pb.lineNumber,
|
|
512
|
+
column: pb.columnNumber,
|
|
513
|
+
});
|
|
514
|
+
if (loc.lineNumber < 0 || loc.column < 0) {
|
|
515
|
+
continue;
|
|
516
|
+
}
|
|
517
|
+
returnedValues.push({
|
|
518
|
+
lineNumber: loc.lineNumber + 1,
|
|
519
|
+
columnNumber: loc.column + 1,
|
|
520
|
+
possibleStates: pb.possibleStates,
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
return returnedValues;
|
|
524
|
+
}
|
|
250
525
|
_parseScript(script) {
|
|
251
526
|
return script;
|
|
252
527
|
}
|
|
@@ -272,7 +547,8 @@ export class AuxCompiler {
|
|
|
272
547
|
const lines = Object.keys(options.constants)
|
|
273
548
|
.filter((v) => v !== 'this')
|
|
274
549
|
.map((v) => `const ${v} = constants["${v}"];`);
|
|
275
|
-
customGlobalThis =
|
|
550
|
+
customGlobalThis =
|
|
551
|
+
!options.interpreter && 'globalThis' in options.constants;
|
|
276
552
|
constantsCode = lines.join('\n') + '\n';
|
|
277
553
|
scriptLineOffset += 1 + Math.max(lines.length - 1, 0);
|
|
278
554
|
}
|
|
@@ -304,6 +580,7 @@ export class AuxCompiler {
|
|
|
304
580
|
withCodeEnd = '}';
|
|
305
581
|
scriptLineOffset += 1;
|
|
306
582
|
}
|
|
583
|
+
let syntaxErrorLineOffset = 0;
|
|
307
584
|
// Function needs a name because acorn doesn't understand
|
|
308
585
|
// that this function is allowed to be anonymous.
|
|
309
586
|
let functionCode = `function ${(_a = options.functionName) !== null && _a !== void 0 ? _a : '_'}(...args) { ${argumentsCode}${variablesCode}${scriptCode}\n }`;
|
|
@@ -316,31 +593,61 @@ export class AuxCompiler {
|
|
|
316
593
|
}
|
|
317
594
|
this._transpiler.forceSync = (_b = options.forceSync) !== null && _b !== void 0 ? _b : false;
|
|
318
595
|
const transpiled = this._transpiler.transpileWithMetadata(functionCode);
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
596
|
+
if (options.interpreter) {
|
|
597
|
+
const finalCode = `${constantsCode}return ${transpiled.code};`;
|
|
598
|
+
syntaxErrorLineOffset += 1;
|
|
599
|
+
scriptLineOffset += 1;
|
|
600
|
+
const func = options.interpreter.createFunction('test', finalCode, 'constants', 'variables', 'context');
|
|
601
|
+
let result = unwind(options.interpreter.callFunction(func, options.constants, options.variables, options.interpreter.proxyObject(options.context)));
|
|
602
|
+
let finalFunc = result;
|
|
603
|
+
if (options.variables) {
|
|
604
|
+
if ('this' in options.variables) {
|
|
605
|
+
finalFunc = result.bind(options.variables['this'](options.context));
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
if (INTERPRETER_OBJECT in result) {
|
|
609
|
+
finalFunc = createInterpretableFunction(finalFunc);
|
|
610
|
+
finalFunc[INTERPRETER_OBJECT] = result[INTERPRETER_OBJECT];
|
|
330
611
|
}
|
|
612
|
+
return {
|
|
613
|
+
func: finalFunc,
|
|
614
|
+
scriptLineOffset,
|
|
615
|
+
transpilerLineOffset,
|
|
616
|
+
async,
|
|
617
|
+
transpilerResult: transpiled,
|
|
618
|
+
constructedFunction: func,
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
else {
|
|
622
|
+
const finalCode = `${withCodeStart}return function(constants, variables, context) { ${constantsCode}return ${transpiled.code}; }${withCodeEnd}`;
|
|
623
|
+
let func = this._buildFunction(finalCode, options);
|
|
624
|
+
func[COMPILED_SCRIPT_SYMBOL] = true;
|
|
625
|
+
// Add 1 extra line to count the line feeds that
|
|
626
|
+
// is automatically inserted at the start of the script as part of the process of
|
|
627
|
+
// compiling the dynamic script.
|
|
628
|
+
// See https://tc39.es/ecma262/#sec-createdynamicfunction
|
|
629
|
+
scriptLineOffset += 2;
|
|
630
|
+
if (options.variables) {
|
|
631
|
+
if ('this' in options.variables) {
|
|
632
|
+
func = func.bind(options.variables['this'](options.context));
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
return {
|
|
636
|
+
func,
|
|
637
|
+
scriptLineOffset: scriptLineOffset,
|
|
638
|
+
transpilerLineOffset: transpilerLineOffset,
|
|
639
|
+
async,
|
|
640
|
+
transpilerResult: transpiled,
|
|
641
|
+
constructedFunction: null,
|
|
642
|
+
};
|
|
331
643
|
}
|
|
332
|
-
return {
|
|
333
|
-
func,
|
|
334
|
-
scriptLineOffset: scriptLineOffset,
|
|
335
|
-
transpilerLineOffset: transpilerLineOffset,
|
|
336
|
-
async,
|
|
337
|
-
transpilerResult: transpiled,
|
|
338
|
-
};
|
|
339
644
|
}
|
|
340
645
|
catch (err) {
|
|
341
646
|
if (err instanceof SyntaxError) {
|
|
342
647
|
const replaced = replaceSyntaxErrorLineNumber(err, (location) => ({
|
|
343
|
-
lineNumber: location.lineNumber -
|
|
648
|
+
lineNumber: location.lineNumber -
|
|
649
|
+
transpilerLineOffset -
|
|
650
|
+
syntaxErrorLineOffset,
|
|
344
651
|
column: location.column,
|
|
345
652
|
}));
|
|
346
653
|
if (replaced) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuxCompiler.js","sourceRoot":"","sources":["AuxCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,6BAA6B,EAE7B,UAAU,GAEb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAa,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,gBAAgB,MAAM,uCAAuC,CAAC;AACrE,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEhE,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAEtC;;;GAGG;AACH,MAAM,OAAO,WAAW;IAAxB;QACY,gBAAW,GAAG,IAAI,UAAU,CAAC;YACjC,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,oBAAoB;SACpC,CAAC,CAAC;QACK,mBAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;QAErD;;;;;;WAMG;QACH,4BAAuB,GAAW,CAAC,CAAC;IA8bxC,CAAC;IA5bG;;;;;;OAMG;IACH,2BAA2B,CACvB,eAA+C,EAC/C,KAAY;;QAEZ,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC;SACf;QAED,IAAI,iBAAiB,GAAiB,EAAE,CAAC;QACzC,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,UAA6B,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;YACrC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IACI,CAAC,CAAC,WAAW;gBACb,WAAW,CAAC,YAAY,KAAK,qBAAqB,EACpD;gBACE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACtC,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnD,IAAI,YAAY,IAAI,CAAC,EAAE;oBACnB,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;iBACvD;gBAED,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAEjD,IAAI,MAAM,EAAE;oBACR,UAAU,GAAG,MAAM,CAAC;oBACpB,MAAM,QAAQ,GAAiB;wBAC3B,UAAU,EACN,WAAW,CAAC,UAAU;4BACtB,IAAI,CAAC,uBAAuB;wBAChC,MAAM,EAAE,WAAW,CAAC,YAAY;qBACnC,CAAC;oBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CACvD,MAAM,EACN,QAAQ,CACX,CAAC;oBACF,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,oBAAoB,GAAG,CAAC,EAAE;wBAC1B,oBAAoB,GAAG,CAAC,CAAC;qBAC5B;oBACD,iBAAiB,CAAC,OAAO,CACrB,IAAI,UAAU,CAAC;wBACX,YAAY,EACR,MAAA,UAAU,CAAC,QAAQ,CAAC,sBAAsB,mCAC1C,YAAY;wBAChB,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAAI,YAAY;wBAClD,UAAU,EAAE,gBAAgB,CAAC,UAAU,GAAG,CAAC;wBAC3C,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;qBAC5C,CAAC,CACL,CAAC;iBACL;qBAAM,IAAI,UAAU,EAAE;oBACnB,MAAM,QAAQ,GAAiB;wBAC3B,UAAU,EACN,WAAW,CAAC,UAAU;4BACtB,IAAI,CAAC,uBAAuB;wBAChC,MAAM,EAAE,WAAW,CAAC,YAAY;qBACnC,CAAC;oBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CACvD,UAAU,EACV,QAAQ,CACX,CAAC;oBACF,UAAU,GAAG,IAAI,CAAC;oBAClB,iBAAiB,CAAC,OAAO,CACrB,IAAI,UAAU,CAAC;wBACX,YAAY,EACR,MAAA,UAAU,CAAC,QAAQ,CAAC,sBAAsB,mCAC1C,YAAY;wBAChB,QAAQ,EACJ,MAAA,UAAU,CAAC,QAAQ,CAAC,QAAQ,mCAAI,YAAY;wBAChD,UAAU,EAAE,gBAAgB,CAAC,UAAU,GAAG,CAAC;wBAC3C,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;qBAC5C,CAAC,CACL,CAAC;iBACL;aACJ;YAED,IAAI,CAAC,UAAU,EAAE;gBACb,IAAI,KAAK,CAAC,YAAY,KAAK,eAAe,EAAE;oBACxC,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,oBAAoB,GAAG,CAAC,EAAE;wBAC1B,oBAAoB,IAAI,CAAC,CAAC;qBAC7B;iBACJ;aACJ;YAED,IAAI,CAAC,UAAU,EAAE;gBACb,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACpC;SACJ;QAED,IAAI,oBAAoB,IAAI,CAAC,EAAE;YAC3B,MAAM,WAAW,GAAG;gBAChB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,GAAG,CAAC,CAAC;gBACvD,IAAI,UAAU,CAAC;oBACX,QAAQ,EAAE,wBAAwB;oBAClC,YAAY,EAAE,YAAY;iBAC7B,CAAC;aACL,CAAC;YAEF,MAAM,KAAK,GAAG,WAAW;iBACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;iBAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,6BAA6B,CACzB,IAAuB,EACvB,QAAsB;QAEtB,mCAAmC;QACnC,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YAC7F,OAAO;gBACH,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;aACZ,CAAC;SACL;QAED,IAAI,kBAAkB,GAAiB;YACnC,UAAU,EACN,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAC;YAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;SAC9B,CAAC;QAEF,IAAI,MAAM,GAAG,6BAA6B,CACtC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAC9B,kBAAkB,CACrB,CAAC;QAEF,OAAO;YACH,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB;YAClE,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,OAAO,CACH,MAAc,EACd,OAA8B;QAE9B,IAAI,EACA,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,EACL,gBAAgB,GACnB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG;YACT,cAAc;YACd,gBAAgB;YAChB,oBAAoB;YACpB,gBAAgB;YAChB,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;YAC3B,sBAAsB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB;YACvD,OAAO,EAAE,KAAK;SACjB,CAAC;QAEF,IAAI,OAAO,EAAE;YACT,IACI,OAAO,CAAC,MAAM;gBACd,OAAO,CAAC,KAAK;gBACb,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,MAAM;gBACd,KAAK,EACP;gBACE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC1C,MAAM,OAAO,GACT,OAAO,CAAC,OAAO;oBACf,CAAC,CAAC,GAAG,EAAE,EAAE;wBACL,MAAM,GAAG,CAAC;oBACd,CAAC,CAAC,CAAC;gBAEP,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM;oBACpB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CACf,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC;oBAChD,CAAC,CAAC,UAAU,CAAC;gBACjB,IAAI,KAAK,EAAE;oBACP,IAAI,GAAG,SAAS,aAAa,CAAC,GAAG,IAAW;wBACxC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAChB,IAAI;4BACA,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;4BAChC,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,EAAE;gCAC9B,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oCACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCACjC,CAAC,CAAC,CAAC;6BACN;4BACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAO,EAAE,EAAE;gCAC5B,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;4BAC/B,CAAC,CAAC,CAAC;yBACN;wBAAC,OAAO,EAAE,EAAE;4BACT,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;yBAC9B;gCAAS;4BACN,KAAK,CAAC,OAAO,CAAC,CAAC;yBAClB;oBACL,CAAC,CAAC;iBACL;qBAAM;oBACH,IAAI,GAAG,SAAS,aAAa,CAAC,GAAG,IAAW;wBACxC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAChB,IAAI;4BACA,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;yBAC7B;wBAAC,OAAO,EAAE,EAAE;4BACT,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;yBAC9B;gCAAS;4BACN,KAAK,CAAC,OAAO,CAAC,CAAC;yBAClB;oBACL,CAAC,CAAC;iBACL;aACJ;SACJ;QAED,MAAM,KAAK,GAAG,IAAyB,CAAC;QACxC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,UAA6B,EAAE,QAA2B;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,IAAI,GAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE;YACP,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;YAEvC,MAAM,MAAM,GAAG;gBACX,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI;aACH,CAAC;YAEd,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC;aAClD;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAClB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;aAC1B;YAED,OAAO,MAAM,CAAC;SACjB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,gBAAgB,CACpB,MAAc,EACd,OAA6B;QAQ7B,+BAA+B;QAC/B,6CAA6C;QAC7C,2CAA2C;QAC3C,iBAAiB;;QAEjB,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YAClB,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;SAChC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC/B,KAAK,GAAG,IAAI,CAAC;SAChB;QACD,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACnD,gBAAgB,GAAG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;YACrD,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACxC,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SACzD;QAED,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC5D,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,oBAAoB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7D;QAED,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,KAAK,GAAG,OAAO,CACjB,OAAO,CAAC,SAAS;iBACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACV,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACZ,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAW;gBACnB,CAAC,CAAE,CAAC,CAAC,CAAC,CAAa,EAAE,CAAC,CAAW,CACxC,EACL,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAC7D,CAAC;YACF,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,oBAAoB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7D;QAED,IAAI,UAAkB,CAAC;QACvB,UAAU,GAAG,UAAU,MAAM,MAAM,CAAC;QACpC,oBAAoB,IAAI,CAAC,CAAC;QAE1B,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,gBAAgB,EAAE;YAClB,aAAa,GAAG,uBAAuB,CAAC;YACxC,WAAW,GAAG,GAAG,CAAC;YAClB,gBAAgB,IAAI,CAAC,CAAC;SACzB;QAED,yDAAyD;QACzD,iDAAiD;QACjD,IAAI,YAAY,GAAG,YACf,MAAA,OAAO,CAAC,YAAY,mCAAI,GAC5B,eAAe,aAAa,GAAG,aAAa,GAAG,UAAU,MAAM,CAAC;QAChE,IAAI,KAAK,EAAE;YACP,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;SAC1C;QACD,IAAI;YACA,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,KAAK,GAAG,KAAK,CAAC;aACjB;YACD,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,KAAK,CAAC;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACrD,YAAY,CACf,CAAC;YAEF,MAAM,SAAS,GAAG,GAAG,aAAa,oDAAoD,aAAa,UAAU,UAAU,CAAC,IAAI,MAAM,WAAW,EAAE,CAAC;YAEhJ,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAK,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;YAE3C,gDAAgD;YAChD,iFAAiF;YACjF,gCAAgC;YAChC,yDAAyD;YACzD,gBAAgB,IAAI,CAAC,CAAC;YAEtB,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE;oBAC7B,IAAI,GAAG,IAAI,CAAC,IAAI,CACZ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAC7C,CAAC;iBACL;aACJ;YAED,OAAO;gBACH,IAAI;gBACJ,gBAAgB,EAAE,gBAAgB;gBAClC,oBAAoB,EAAE,oBAAoB;gBAC1C,KAAK;gBACL,gBAAgB,EAAE,UAAU;aAC/B,CAAC;SACL;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,YAAY,WAAW,EAAE;gBAC5B,MAAM,QAAQ,GAAG,4BAA4B,CACzC,GAAG,EACH,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACX,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,oBAAoB;oBACtD,MAAM,EAAE,QAAQ,CAAC,MAAM;iBAC1B,CAAC,CACL,CAAC;gBAEF,IAAI,QAAQ,EAAE;oBACV,MAAM,QAAQ,CAAC;iBAClB;aACJ;YACD,MAAM,GAAG,CAAC;SACb;IACL,CAAC;IAEO,cAAc,CAClB,SAAiB,EACjB,OAA6B;;QAE7B,OAAO,IAAI,CAAC,mBAAmB,CAAI,SAAS,CAAC,CACzC,MAAA,OAAO,CAAC,SAAS,0CAAE,UAAU,CAChC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,mBAAmB,CACvB,SAAiB;QAQjB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAQ,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAQ,CAAC;YAErD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;SAChD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,8BAA8B,GAAG,kBAAkB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CACxC,KAAkB,EAClB,SAAmD;IAEnD,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnE,IAAI,OAAO,EAAE;QACT,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;QAEpC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC;YACvB,UAAU;YACV,MAAM,EAAE,YAAY;SACvB,CAAC,CAAC;QAEH,OAAO,IAAI,WAAW,CAClB,KAAK,CAAC,OAAO,CAAC,OAAO,CACjB,GAAG,EACH,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAChD,CACJ,CAAC;KACL;SAAM;QACH,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAiJD,mDAAmD;AACnD,UAAU;AACV,0BAA0B;AAC1B,UAAU;AACV,oBAAoB;AAEpB,kCAAkC;AAClC,gCAAgC;AAChC,8BAA8B;AAC9B,QAAQ;AACR,IAAI"}
|
|
1
|
+
{"version":3,"file":"AuxCompiler.js","sourceRoot":"","sources":["AuxCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="seedrandom" />
|
|
2
2
|
import { BotAction, Bot, BotTags, RuntimeBot } from '../bots';
|
|
3
|
-
import { RuntimeBotFactory, RuntimeBotsState, RuntimeBatcher } from './RuntimeBot';
|
|
3
|
+
import { RuntimeBotFactory, RuntimeBotsState, RuntimeBatcher, RuntimeInterpreterGeneratorProcessor } from './RuntimeBot';
|
|
4
4
|
import { AuxVersion } from './AuxVersion';
|
|
5
5
|
import { AuxDevice } from './AuxDevice';
|
|
6
6
|
import { ScriptError, RanOutOfEnergyError } from './AuxResults';
|
|
7
7
|
import './PerformanceNowPolyfill';
|
|
8
8
|
import { SubscriptionLike } from 'rxjs';
|
|
9
|
+
import type { InterpreterContinuation, InterpreterStop } from '@casual-simulation/js-interpreter';
|
|
9
10
|
/**
|
|
10
11
|
* The interval between animation frames in miliseconds when using setInterval().
|
|
11
12
|
*/
|
|
@@ -144,6 +145,12 @@ export interface AuxGlobalContext {
|
|
|
144
145
|
* @param timer The timer to remove.
|
|
145
146
|
*/
|
|
146
147
|
removeBotTimer(id: string, type: BotTimer['type'], timerId: number): void;
|
|
148
|
+
/**
|
|
149
|
+
* Processes the given bot timer resulit.
|
|
150
|
+
* For native runtimes this does nothing, but for interpreted runtimes this ensures that the generator breakpoints are correctly processed by the runtime.
|
|
151
|
+
* @param result The result that should be processed.
|
|
152
|
+
*/
|
|
153
|
+
processBotTimerResult(result: void | Generator<InterpreterStop, any, InterpreterContinuation>): void;
|
|
147
154
|
/**
|
|
148
155
|
* Gets the list of bot timers for the given bot.
|
|
149
156
|
* @param id The ID of the bot.
|
|
@@ -354,7 +361,7 @@ export interface WatchPortalTimer {
|
|
|
354
361
|
/**
|
|
355
362
|
* The function that should be called when the portal changes.
|
|
356
363
|
*/
|
|
357
|
-
handler: () => void
|
|
364
|
+
handler: () => void | Generator<InterpreterStop, any, InterpreterContinuation>;
|
|
358
365
|
}
|
|
359
366
|
/**
|
|
360
367
|
* Defines an interface for a subscription to watching a set of bots that was created by a bot.
|
|
@@ -379,7 +386,7 @@ export interface WatchBotTimer {
|
|
|
379
386
|
/**
|
|
380
387
|
* The function that should be called when the bot changes.
|
|
381
388
|
*/
|
|
382
|
-
handler: () => void
|
|
389
|
+
handler: () => void | Generator<InterpreterStop, any, InterpreterContinuation>;
|
|
383
390
|
}
|
|
384
391
|
/**
|
|
385
392
|
* Inserts the given bot into the global context.
|
|
@@ -454,6 +461,7 @@ export declare class MemoryGlobalContext implements AuxGlobalContext {
|
|
|
454
461
|
private _taskCounter;
|
|
455
462
|
private _scriptFactory;
|
|
456
463
|
private _batcher;
|
|
464
|
+
private _generatorProcessor;
|
|
457
465
|
private _shoutTimers;
|
|
458
466
|
private _listenerMap;
|
|
459
467
|
private _botTimerMap;
|
|
@@ -470,12 +478,14 @@ export declare class MemoryGlobalContext implements AuxGlobalContext {
|
|
|
470
478
|
* @param device The device that we're running on.
|
|
471
479
|
* @param scriptFactory The factory that should be used to create new script bots.
|
|
472
480
|
* @param batcher The batcher that should be used to batch changes.
|
|
481
|
+
* @param generatorProcessor The processor that should be used to process generators created from bot timer handlers.
|
|
473
482
|
*/
|
|
474
|
-
constructor(version: AuxVersion, device: AuxDevice, scriptFactory: RuntimeBotFactory, batcher: RuntimeBatcher);
|
|
483
|
+
constructor(version: AuxVersion, device: AuxDevice, scriptFactory: RuntimeBotFactory, batcher: RuntimeBatcher, generatorProcessor: RuntimeInterpreterGeneratorProcessor);
|
|
475
484
|
getBotIdsWithListener(tag: string): string[];
|
|
476
485
|
recordListenerPresense(id: string, tag: string, hasListener: boolean): void;
|
|
477
486
|
recordBotTimer(id: string, info: BotTimer): void;
|
|
478
487
|
removeBotTimer(id: string, type: BotTimer['type'], timer: number | string): void;
|
|
488
|
+
processBotTimerResult(result: void | Generator<InterpreterStop, any, InterpreterContinuation>): void;
|
|
479
489
|
getBotTimers(id: string): BotTimer[];
|
|
480
490
|
getWatchersForBot(id: string): WatchBotTimer[];
|
|
481
491
|
getWatchersForPortal(id: string): WatchPortalTimer[];
|
|
@@ -9,6 +9,7 @@ import TWEEN from '@tweenjs/tween.js';
|
|
|
9
9
|
import { v4 as uuidv4 } from 'uuid';
|
|
10
10
|
import stableStringify from '@casual-simulation/fast-json-stable-stringify';
|
|
11
11
|
import { ensureBotIsSerializable } from './Utils';
|
|
12
|
+
import { isGenerator } from '@casual-simulation/js-interpreter/InterpreterUtils';
|
|
12
13
|
/**
|
|
13
14
|
* The interval between animation frames in miliseconds when using setInterval().
|
|
14
15
|
*/
|
|
@@ -83,8 +84,9 @@ export class MemoryGlobalContext {
|
|
|
83
84
|
* @param device The device that we're running on.
|
|
84
85
|
* @param scriptFactory The factory that should be used to create new script bots.
|
|
85
86
|
* @param batcher The batcher that should be used to batch changes.
|
|
87
|
+
* @param generatorProcessor The processor that should be used to process generators created from bot timer handlers.
|
|
86
88
|
*/
|
|
87
|
-
constructor(version, device, scriptFactory, batcher) {
|
|
89
|
+
constructor(version, device, scriptFactory, batcher, generatorProcessor) {
|
|
88
90
|
/**
|
|
89
91
|
* The ordered list of script bots.
|
|
90
92
|
*/
|
|
@@ -126,6 +128,7 @@ export class MemoryGlobalContext {
|
|
|
126
128
|
this.device = device;
|
|
127
129
|
this._scriptFactory = scriptFactory;
|
|
128
130
|
this._batcher = batcher;
|
|
131
|
+
this._generatorProcessor = generatorProcessor;
|
|
129
132
|
this._listenerMap = new Map();
|
|
130
133
|
this._botTimerMap = new Map();
|
|
131
134
|
this._botWatcherMap = new Map();
|
|
@@ -220,6 +223,11 @@ export class MemoryGlobalContext {
|
|
|
220
223
|
}
|
|
221
224
|
}
|
|
222
225
|
}
|
|
226
|
+
processBotTimerResult(result) {
|
|
227
|
+
if (isGenerator(result)) {
|
|
228
|
+
this._generatorProcessor.processGenerator(result);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
223
231
|
getBotTimers(id) {
|
|
224
232
|
let timers = this._botTimerMap.get(id);
|
|
225
233
|
if (timers) {
|