1 | import type { Destroyable } from '../core.js';
|
2 | import type { GlimmerTreeChanges } from '../dom/changes.js';
|
3 | import type { Reference } from '../references.js';
|
4 | import type { Environment } from './environment.js';
|
5 | import type { Owner } from './owner.js';
|
6 | import type { ExceptionHandler } from './render.js';
|
7 | import type { DynamicScope } from './scope.js';
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export interface VM<O extends Owner = Owner> {
|
15 | env: Environment;
|
16 | dynamicScope(): DynamicScope;
|
17 | getOwner(): O;
|
18 | getSelf(): Reference;
|
19 | associateDestroyable(child: Destroyable): void;
|
20 | }
|
21 |
|
22 | export interface UpdatingVM {
|
23 | env: Environment;
|
24 | dom: GlimmerTreeChanges;
|
25 | alwaysRevalidate: boolean;
|
26 |
|
27 | execute(opcodes: UpdatingOpcode[], handler: ExceptionHandler): void;
|
28 | goto(index: number): void;
|
29 | try(ops: UpdatingOpcode[], handler: ExceptionHandler | null): void;
|
30 | throw(): void;
|
31 | }
|
32 |
|
33 | export interface UpdatingOpcode {
|
34 | evaluate(vm: UpdatingVM): void;
|
35 | }
|