@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.
Files changed (42) hide show
  1. package/bots/Bot.d.ts +1 -1
  2. package/bots/Bot.js.map +1 -1
  3. package/bots/BotEvents.d.ts +24 -0
  4. package/bots/BotEvents.js.map +1 -1
  5. package/math/Vector2.js +6 -1
  6. package/math/Vector2.js.map +1 -1
  7. package/math/Vector3.js +6 -1
  8. package/math/Vector3.js.map +1 -1
  9. package/package.json +4 -2
  10. package/runtime/AuxCompiler.d.ts +74 -1
  11. package/runtime/AuxCompiler.js +332 -25
  12. package/runtime/AuxCompiler.js.map +1 -1
  13. package/runtime/AuxGlobalContext.d.ts +14 -4
  14. package/runtime/AuxGlobalContext.js +9 -1
  15. package/runtime/AuxGlobalContext.js.map +1 -1
  16. package/runtime/AuxLibrary.d.ts +191 -10
  17. package/runtime/AuxLibrary.js +172 -37
  18. package/runtime/AuxLibrary.js.map +1 -1
  19. package/runtime/AuxLibraryDefinitions.def +495 -83
  20. package/runtime/AuxRuntime.d.ts +66 -7
  21. package/runtime/AuxRuntime.js +976 -118
  22. package/runtime/AuxRuntime.js.map +1 -1
  23. package/runtime/AuxRuntimeDynamicImports.d.ts +14 -0
  24. package/runtime/AuxRuntimeDynamicImports.js +24 -0
  25. package/runtime/AuxRuntimeDynamicImports.js.map +1 -0
  26. package/runtime/CompiledBot.d.ts +59 -1
  27. package/runtime/CompiledBot.js +2 -0
  28. package/runtime/CompiledBot.js.map +1 -1
  29. package/runtime/RuntimeBot.d.ts +17 -0
  30. package/runtime/RuntimeBot.js +85 -5
  31. package/runtime/RuntimeBot.js.map +1 -1
  32. package/runtime/Transpiler.d.ts +21 -0
  33. package/runtime/Transpiler.js +27 -0
  34. package/runtime/Transpiler.js.map +1 -1
  35. package/runtime/Utils.d.ts +11 -0
  36. package/runtime/Utils.js +30 -1
  37. package/runtime/Utils.js.map +1 -1
  38. package/runtime/test/RuntimeTestHelpers.d.ts +5 -0
  39. package/runtime/test/RuntimeTestHelpers.js +11 -0
  40. package/runtime/test/RuntimeTestHelpers.js.map +1 -1
  41. package/test/TestHelpers.js +2 -2
  42. package/test/TestHelpers.js.map +1 -1
@@ -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 < (func.metadata.scriptLineOffset + func.metadata.transpilerLineOffset)) {
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 = 'globalThis' in options.constants;
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
- const finalCode = `${withCodeStart}return function(constants, variables, context) { ${constantsCode}return ${transpiled.code}; }${withCodeEnd}`;
320
- let func = this._buildFunction(finalCode, options);
321
- func[COMPILED_SCRIPT_SYMBOL] = true;
322
- // Add 1 extra line to count the line feeds that
323
- // is automatically inserted at the start of the script as part of the process of
324
- // compiling the dynamic script.
325
- // See https://tc39.es/ecma262/#sec-createdynamicfunction
326
- scriptLineOffset += 2;
327
- if (options.variables) {
328
- if ('this' in options.variables) {
329
- func = func.bind(options.variables['this'](options.context));
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 - transpilerLineOffset,
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":"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"}
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) {