@opencode/codemode 0.0.0-beta-19365 → 0.0.0-beta-19381

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 (47) hide show
  1. package/dist/interpreter/errors.d.ts +4 -6
  2. package/dist/interpreter/errors.js +20 -4
  3. package/dist/interpreter/execute.js +2 -3
  4. package/dist/interpreter/globals.d.ts +13 -0
  5. package/dist/interpreter/globals.js +59 -0
  6. package/dist/interpreter/host.d.ts +41 -0
  7. package/dist/interpreter/host.js +44 -0
  8. package/dist/interpreter/methods.d.ts +3 -23
  9. package/dist/interpreter/methods.js +8 -183
  10. package/dist/interpreter/model.d.ts +0 -41
  11. package/dist/interpreter/model.js +0 -56
  12. package/dist/interpreter/promises.d.ts +7 -8
  13. package/dist/interpreter/promises.js +45 -22
  14. package/dist/interpreter/references.js +11 -28
  15. package/dist/interpreter/runner.d.ts +23 -0
  16. package/dist/interpreter/runner.js +42 -0
  17. package/dist/interpreter/runtime.d.ts +11 -92
  18. package/dist/interpreter/runtime.js +75 -452
  19. package/dist/stdlib/array.d.ts +3 -0
  20. package/dist/stdlib/array.js +73 -0
  21. package/dist/stdlib/collections.d.ts +6 -1
  22. package/dist/stdlib/collections.js +120 -1
  23. package/dist/stdlib/console.d.ts +3 -2
  24. package/dist/stdlib/console.js +11 -2
  25. package/dist/stdlib/date.d.ts +3 -2
  26. package/dist/stdlib/date.js +27 -11
  27. package/dist/stdlib/json.d.ts +4 -4
  28. package/dist/stdlib/json.js +6 -2
  29. package/dist/stdlib/math.d.ts +3 -7
  30. package/dist/stdlib/math.js +85 -153
  31. package/dist/stdlib/number.d.ts +1 -3
  32. package/dist/stdlib/number.js +28 -36
  33. package/dist/stdlib/object.d.ts +4 -6
  34. package/dist/stdlib/object.js +101 -71
  35. package/dist/stdlib/regexp.d.ts +2 -4
  36. package/dist/stdlib/regexp.js +32 -9
  37. package/dist/stdlib/string.d.ts +1 -3
  38. package/dist/stdlib/string.js +14 -16
  39. package/dist/stdlib/url.d.ts +8 -4
  40. package/dist/stdlib/url.js +97 -21
  41. package/dist/stdlib/value.d.ts +5 -3
  42. package/dist/stdlib/value.js +21 -19
  43. package/package.json +1 -1
  44. package/dist/interpreter/iterator.d.ts +0 -13
  45. package/dist/interpreter/iterator.js +0 -4
  46. package/dist/stdlib/promise.d.ts +0 -2
  47. package/dist/stdlib/promise.js +0 -1
@@ -1,9 +1,9 @@
1
1
  import { Effect, Exit, Scope } from "effect";
2
2
  import type { Diagnostic } from "../codemode.js";
3
- import { type AstNode, InterpreterRuntimeError, PromiseInstanceMethodReference, PromiseMethodReference } from "./model.js";
4
- import { type CallbackRunner } from "./methods.js";
3
+ import { type AstNode, InterpreterRuntimeError, PromiseInstanceMethodReference } from "./model.js";
4
+ import { HostFunction } from "./host.js";
5
5
  import { Values } from "../values.js";
6
- import type { SyncIteratorRunner } from "./iterator.js";
6
+ import { type Runner } from "./runner.js";
7
7
  export declare class PromiseRuntime<R> {
8
8
  private readonly scope;
9
9
  private readonly active;
@@ -20,10 +20,9 @@ export declare class PromiseRuntime<R> {
20
20
  interrupt(): Effect.Effect<Array<Diagnostic>>;
21
21
  }
22
22
  export declare const selfResolutionError: (node?: AstNode) => InterpreterRuntimeError;
23
- export declare const resolvePromiseValue: <R>(runner: CallbackRunner<R>, value: unknown, node: AstNode, own?: {
23
+ export declare const resolvePromiseValue: <R>(runner: Runner<R>, value: unknown, node: AstNode, own?: {
24
24
  promise?: Values.Promise;
25
25
  }) => Effect.Effect<unknown, unknown, R>;
26
- export declare const resolvePromise: <R>(runner: CallbackRunner<R>, promises: PromiseRuntime<R>, value: unknown, node: AstNode) => Effect.Effect<Values.Promise, never, R>;
27
- export declare const invokePromiseMethod: <R>(runner: CallbackRunner<R> & SyncIteratorRunner<R>, promises: PromiseRuntime<R>, ref: PromiseMethodReference, args: Array<unknown>, node: AstNode) => Effect.Effect<unknown, unknown, R>;
28
- export declare const invokePromiseInstanceMethod: <R>(runner: CallbackRunner<R>, promises: PromiseRuntime<R>, ref: PromiseInstanceMethodReference, args: Array<unknown>, node: AstNode) => Effect.Effect<Values.Promise, never, R>;
29
- export declare const constructPromise: <R>(runner: CallbackRunner<R>, promises: PromiseRuntime<R>, executor: unknown, node: AstNode) => Effect.Effect<Values.Promise, unknown, R>;
26
+ export declare const resolvePromise: <R>(runner: Runner<R>, promises: PromiseRuntime<R>, value: unknown, node: AstNode) => Effect.Effect<Values.Promise, never, R>;
27
+ export declare const invokePromiseInstanceMethod: <R>(runner: Runner<R>, promises: PromiseRuntime<R>, ref: PromiseInstanceMethodReference, args: Array<unknown>, node: AstNode) => Effect.Effect<Values.Promise, never, R>;
28
+ export declare const promiseGlobal: <R>(runner: Runner<R>, promises: PromiseRuntime<R>) => HostFunction<R>;
@@ -1,10 +1,16 @@
1
1
  import { Cause, Deferred, Effect, Exit, Fiber, Scope } from "effect";
2
- import { CodeModeFunction, InterpreterRuntimeError, ProgramThrow, PromiseCapabilityFunction, PromiseInstanceMethodReference, PromiseMethodReference, } from "./model.js";
2
+ import { CodeModeFunction, InterpreterRuntimeError, ProgramThrow, PromiseInstanceMethodReference, } from "./model.js";
3
+ import { HostFunction, requiresNew, sync } from "./host.js";
3
4
  import { caughtErrorValue, normalizeError } from "./errors.js";
4
- import { applyCollectionCallback, isSupportedCallback } from "./methods.js";
5
5
  import { typeofValue } from "./references.js";
6
6
  import { createAggregateErrorValue } from "../stdlib/value.js";
7
7
  import { Values } from "../values.js";
8
+ import { applyCollectionCallback, isSupportedCallback } from "./runner.js";
9
+ // A `resolve`/`reject` handed to an executor or thenable: calling it settles the capability.
10
+ const capability = (name, settle) => sync(name, (args) => {
11
+ settle(args[0]);
12
+ return undefined;
13
+ });
8
14
  // Observation only controls rejection reporting; program completion interrupts all promise work.
9
15
  export class PromiseRuntime {
10
16
  scope;
@@ -83,12 +89,8 @@ export const resolvePromiseValue = (runner, value, node, own) => {
83
89
  // Promise resolution invokes a thenable's method in a later job.
84
90
  yield* Effect.yieldNow;
85
91
  const deferred = Deferred.makeUnsafe();
86
- const resolve = new PromiseCapabilityFunction((result) => {
87
- Deferred.doneUnsafe(deferred, Exit.succeed(result));
88
- });
89
- const reject = new PromiseCapabilityFunction((reason) => {
90
- Deferred.doneUnsafe(deferred, Exit.fail(new ProgramThrow(reason)));
91
- });
92
+ const resolve = capability("resolve", (result) => Deferred.doneUnsafe(deferred, Exit.succeed(result)));
93
+ const reject = capability("reject", (reason) => Deferred.doneUnsafe(deferred, Exit.fail(new ProgramThrow(reason))));
92
94
  const executed = yield* Effect.exit(runner.invokeCallable(then, [resolve, reject], node));
93
95
  if (!Exit.isSuccess(executed)) {
94
96
  if (Cause.hasInterruptsOnly(executed.cause))
@@ -107,17 +109,18 @@ export const resolvePromise = (runner, promises, value, node) => {
107
109
  return promise;
108
110
  });
109
111
  };
110
- export const invokePromiseMethod = (runner, promises, ref, args, node) => {
111
- if (ref.name === "resolve") {
112
+ const promiseStatics = ["all", "allSettled", "race", "any", "resolve", "reject"];
113
+ const invokePromiseMethod = (runner, promises, name, args, node) => {
114
+ if (name === "resolve") {
112
115
  return resolvePromise(runner, promises, args[0], node);
113
116
  }
114
- if (ref.name === "reject") {
117
+ if (name === "reject") {
115
118
  return promises.create(Effect.fail(new ProgramThrow(args[0])));
116
119
  }
117
120
  return promises.create(Effect.gen(function* () {
118
121
  const cursor = yield* runner.syncIterator(args[0], node);
119
122
  if (cursor === undefined) {
120
- throw new InterpreterRuntimeError(`Promise.${ref.name} expects an array or other synchronous iterable.`, node).as("TypeError");
123
+ throw new InterpreterRuntimeError(`Promise.${name} expects an array or other synchronous iterable.`, node).as("TypeError");
121
124
  }
122
125
  const items = [];
123
126
  while (true) {
@@ -128,10 +131,10 @@ export const invokePromiseMethod = (runner, promises, ref, args, node) => {
128
131
  promises.markObserved(item);
129
132
  items.push(item);
130
133
  }
131
- if (ref.name === "all") {
134
+ if (name === "all") {
132
135
  return yield* settleAfterTurn(Effect.all(items.map((item) => Effect.flatten(promises.await(item))), { concurrency: "unbounded" }));
133
136
  }
134
- if (ref.name === "allSettled") {
137
+ if (name === "allSettled") {
135
138
  const outcomes = [];
136
139
  for (const item of items) {
137
140
  const exit = yield* promises.await(item);
@@ -149,7 +152,7 @@ export const invokePromiseMethod = (runner, promises, ref, args, node) => {
149
152
  yield* Effect.yieldNow;
150
153
  return outcomes;
151
154
  }
152
- if (ref.name === "race") {
155
+ if (name === "race") {
153
156
  if (items.length === 0) {
154
157
  throw new InterpreterRuntimeError("Promise.race([]) would never settle; provide at least one promise or value.", node);
155
158
  }
@@ -175,7 +178,7 @@ export const invokePromiseInstanceMethod = (runner, promises, ref, args, node) =
175
178
  const onRejected = reactionHandler(ref.name === "then" ? args[1] : args[0], method, node);
176
179
  return chainReaction(runner, promises, ref.promise, onFulfilled, onRejected, method, node);
177
180
  };
178
- export const constructPromise = (runner, promises, executor, node) => {
181
+ const constructPromise = (runner, promises, executor, node) => {
179
182
  if (!(executor instanceof CodeModeFunction)) {
180
183
  throw new InterpreterRuntimeError("new Promise(...) expects an executor function (e.g. new Promise((resolve, reject) => { ... })).", node).as("TypeError");
181
184
  }
@@ -184,12 +187,8 @@ export const constructPromise = (runner, promises, executor, node) => {
184
187
  const box = {};
185
188
  const promise = yield* promises.create(Effect.flatMap(Deferred.await(deferred), (value) => resolvePromiseValue(runner, value, node, box)));
186
189
  box.promise = promise;
187
- const resolve = new PromiseCapabilityFunction((value) => {
188
- Deferred.doneUnsafe(deferred, Exit.succeed(value));
189
- });
190
- const reject = new PromiseCapabilityFunction((value) => {
191
- Deferred.doneUnsafe(deferred, Exit.fail(new ProgramThrow(value)));
192
- });
190
+ const resolve = capability("resolve", (value) => Deferred.doneUnsafe(deferred, Exit.succeed(value)));
191
+ const reject = capability("reject", (value) => Deferred.doneUnsafe(deferred, Exit.fail(new ProgramThrow(value))));
193
192
  const executed = yield* Effect.exit(runner.invokeFunction(executor, [resolve, reject]));
194
193
  if (!Exit.isSuccess(executed)) {
195
194
  if (Cause.hasInterruptsOnly(executed.cause))
@@ -251,3 +250,27 @@ const chainFinally = (runner, promises, source, cleanup, method, node) => promis
251
250
  }
252
251
  return yield* exit;
253
252
  }));
253
+ export const promiseGlobal = (runner, promises) => {
254
+ // Combinators are not callbacks: `[p].map(Promise.resolve)` must ask for an arrow function.
255
+ const statics = new Map(promiseStatics.map((name) => [
256
+ name,
257
+ new HostFunction({
258
+ name: `Promise.${name}`,
259
+ call: (args, node) => invokePromiseMethod(runner, promises, name, args, node),
260
+ callback: false,
261
+ }),
262
+ ]));
263
+ return new HostFunction({
264
+ name: "Promise",
265
+ call: requiresNew("Promise"),
266
+ construct: (args, node) => constructPromise(runner, promises, args[0], node),
267
+ instanceOf: (value) => value instanceof Values.Promise,
268
+ // Unknown statics fail loudly so a missing await cannot hide behind `undefined`.
269
+ members: (key, node) => {
270
+ const method = typeof key === "string" ? statics.get(key) : undefined;
271
+ if (method !== undefined)
272
+ return method;
273
+ throw new InterpreterRuntimeError(`Promise.${String(key)} is not available. Available: Promise.all, Promise.allSettled, Promise.race, Promise.any, Promise.resolve, and Promise.reject; consume promises with await.`, node);
274
+ },
275
+ });
276
+ };
@@ -1,24 +1,16 @@
1
- import { AsyncIteratorSymbol, CodeModeFunction, CodeModeGenerator, CoercionFunction, ErrorConstructorReference, GlobalMethodReference, GlobalNamespace, GeneratorMethodReference, InterpreterRuntimeError, IntrinsicReference, IteratorSymbol, JsonMethodReference, PromiseCapabilityFunction, PromiseInstanceMethodReference, PromiseMethodReference, PromiseNamespace, SearchFunction, SymbolNamespace, UriFunction, } from "./model.js";
2
1
  import { ToolReference } from "../tool-runtime.js";
3
2
  import { Values } from "../values.js";
4
- export const isRuntimeReference = (value) => value instanceof CodeModeFunction ||
3
+ import { HostFunction, HostNamespace } from "./host.js";
4
+ import { AsyncIteratorSymbol, CodeModeFunction, CodeModeGenerator, GeneratorMethodReference, InterpreterRuntimeError, IntrinsicReference, IteratorSymbol, PromiseInstanceMethodReference, } from "./model.js";
5
+ export const isRuntimeReference = (value) => value instanceof HostFunction ||
6
+ value instanceof HostNamespace ||
7
+ value instanceof CodeModeFunction ||
5
8
  value instanceof CodeModeGenerator ||
6
9
  value instanceof GeneratorMethodReference ||
7
10
  value instanceof ToolReference ||
8
11
  value instanceof IntrinsicReference ||
9
- value instanceof GlobalNamespace ||
10
- value instanceof GlobalMethodReference ||
11
- value instanceof JsonMethodReference ||
12
- value instanceof PromiseNamespace ||
13
- value instanceof PromiseMethodReference ||
14
12
  value instanceof PromiseInstanceMethodReference ||
15
13
  value instanceof Values.Promise ||
16
- value instanceof CoercionFunction ||
17
- value instanceof UriFunction ||
18
- value instanceof SearchFunction ||
19
- value instanceof PromiseCapabilityFunction ||
20
- value instanceof ErrorConstructorReference ||
21
- value instanceof SymbolNamespace ||
22
14
  Values.isValue(value);
23
15
  function* childValues(value) {
24
16
  for (const key of Reflect.ownKeys(value)) {
@@ -59,25 +51,16 @@ export const rejectCircularInsertion = (container, value, label, node, seen = ne
59
51
  }
60
52
  };
61
53
  export const typeofValue = (value) => {
62
- if (value instanceof CodeModeFunction ||
54
+ if (value instanceof HostFunction ||
55
+ value instanceof CodeModeFunction ||
63
56
  value instanceof GeneratorMethodReference ||
64
- value instanceof CoercionFunction ||
65
57
  value instanceof IntrinsicReference ||
66
- value instanceof GlobalMethodReference ||
67
- value instanceof JsonMethodReference ||
68
- value instanceof PromiseMethodReference ||
69
- value instanceof PromiseInstanceMethodReference ||
70
- value instanceof PromiseNamespace ||
71
- value instanceof PromiseCapabilityFunction ||
72
- value instanceof ErrorConstructorReference ||
73
- value instanceof SymbolNamespace)
74
- return "function";
75
- if (value instanceof UriFunction || value instanceof SearchFunction)
58
+ value instanceof PromiseInstanceMethodReference) {
76
59
  return "function";
60
+ }
61
+ if (value instanceof HostNamespace)
62
+ return "object";
77
63
  if (value instanceof ToolReference)
78
64
  return value.path.length > 0 ? "function" : "object";
79
- if (value instanceof GlobalNamespace) {
80
- return value.name === "Math" || value.name === "JSON" || value.name === "console" ? "object" : "function";
81
- }
82
65
  return typeof value;
83
66
  };
@@ -0,0 +1,23 @@
1
+ import { Effect } from "effect";
2
+ import { Values } from "../values.js";
3
+ import { HostFunction } from "./host.js";
4
+ import { type AstNode, CodeModeFunction, IntrinsicReference } from "./model.js";
5
+ export type IteratorCursor<R> = {
6
+ readonly next: Effect.Effect<{
7
+ readonly done: boolean;
8
+ readonly value: unknown;
9
+ }, unknown, R>;
10
+ readonly close: Effect.Effect<void, unknown, R>;
11
+ };
12
+ /** Everything a host function needs to call back into the program. */
13
+ export type Runner<R> = {
14
+ readonly invokeFunction: (fn: CodeModeFunction, args: Array<unknown>) => Effect.Effect<unknown, unknown, R>;
15
+ readonly invokeCallable: (callable: unknown, args: Array<unknown>, node: AstNode) => Effect.Effect<unknown, unknown, R>;
16
+ readonly settlePromise: (promise: Values.Promise) => Effect.Effect<unknown, unknown, never>;
17
+ readonly syncIterator: (value: unknown, node: AstNode) => Effect.Effect<IteratorCursor<R> | undefined, unknown, R>;
18
+ };
19
+ export declare const preserveConsumerError: <A, R>(cursor: IteratorCursor<R>, effect: Effect.Effect<A, unknown, R>) => Effect.Effect<A, unknown, R>;
20
+ export declare const toPrimitive: <R>(runner: Runner<R>, value: unknown, hint: "number" | "string", node: AstNode) => Effect.Effect<unknown, unknown, R>;
21
+ export type SupportedCallback = CodeModeFunction | HostFunction<unknown> | IntrinsicReference;
22
+ export declare const isSupportedCallback: (value: unknown) => value is SupportedCallback;
23
+ export declare const applyCollectionCallback: <R>(runner: Runner<R>, callback: unknown, name: string, node: AstNode) => ((args: Array<unknown>) => Effect.Effect<unknown, unknown, R>);
@@ -0,0 +1,42 @@
1
+ import { Effect, Exit } from "effect";
2
+ import { Values } from "../values.js";
3
+ import { coerceToString } from "../stdlib/value.js";
4
+ import { HostFunction } from "./host.js";
5
+ import { CodeModeFunction, InterpreterRuntimeError, IntrinsicReference } from "./model.js";
6
+ import { typeofValue } from "./references.js";
7
+ export const preserveConsumerError = (cursor, effect) => Effect.flatMap(Effect.exit(effect), (exit) => Exit.isSuccess(exit)
8
+ ? Effect.succeed(exit.value)
9
+ : Effect.andThen(Effect.exit(cursor.close), Effect.failCause(exit.cause)));
10
+ export const toPrimitive = (runner, value, hint, node) => {
11
+ if (value === null || typeof value !== "object")
12
+ return Effect.succeed(value);
13
+ if (Values.isValue(value)) {
14
+ return Effect.succeed(value instanceof Values.Date && hint === "number" ? value.time : coerceToString(value));
15
+ }
16
+ const object = value;
17
+ const order = hint === "number" ? ["valueOf", "toString"] : ["toString", "valueOf"];
18
+ return Effect.gen(function* () {
19
+ for (const method of order) {
20
+ if (method === "toString" && !Object.hasOwn(object, "toString"))
21
+ return coerceToString(value);
22
+ if (!Object.hasOwn(object, method) || typeofValue(object[method]) !== "function")
23
+ continue;
24
+ const result = yield* runner.invokeCallable(object[method], [], node);
25
+ if (result === null || (typeof result !== "object" && typeof result !== "function"))
26
+ return result;
27
+ }
28
+ throw new InterpreterRuntimeError("Cannot convert object to primitive value.", node).as("TypeError");
29
+ });
30
+ };
31
+ export const isSupportedCallback = (value) => value instanceof CodeModeFunction ||
32
+ (value instanceof HostFunction && value.callback) ||
33
+ value instanceof IntrinsicReference;
34
+ export const applyCollectionCallback = (runner, callback, name, node) => {
35
+ if (!isSupportedCallback(callback)) {
36
+ if (typeofValue(callback) === "function") {
37
+ throw new InterpreterRuntimeError(`${name} cannot use this callable as a callback; wrap it in an arrow function, e.g. (value) => tools.ns.tool(value).`, node);
38
+ }
39
+ throw new InterpreterRuntimeError(`${name} expects a function callback.`, node).as("TypeError");
40
+ }
41
+ return (callbackArgs) => runner.invokeCallable(callback, callbackArgs, node);
42
+ };
@@ -1,97 +1,16 @@
1
1
  import type { Program } from "acorn";
2
2
  import { Effect } from "effect";
3
+ import { type Runner } from "./runner.js";
3
4
  import { PromiseRuntime } from "./promises.js";
4
- export declare class Interpreter<R> {
5
- private scopes;
6
- private readonly executeTool;
7
- private readonly invokeSearch;
8
- private readonly toolKeys;
9
- private readonly logs;
10
- private readonly promises;
11
- private generatorState?;
12
- private generatorAsync;
13
- private readonly runner;
14
- constructor(executeTool: (path: ReadonlyArray<string>, args: Array<unknown>) => Effect.Effect<unknown, unknown, R>, invokeSearch: (args: Array<unknown>) => Effect.Effect<unknown, unknown, R>, toolKeys: (path: ReadonlyArray<string>) => ReadonlyArray<string>, promises: PromiseRuntime<R>, logs?: Array<string>);
5
+ /** One program execution: the tool bridge, promise scheduler, captured logs, and the global scope built once. */
6
+ export declare class Runtime<R> {
7
+ readonly executeTool: (path: ReadonlyArray<string>, args: Array<unknown>) => Effect.Effect<unknown, unknown, R>;
8
+ readonly search: (args: Array<unknown>) => Effect.Effect<unknown, unknown, R>;
9
+ readonly toolKeys: (path: ReadonlyArray<string>) => ReadonlyArray<string>;
10
+ readonly promises: PromiseRuntime<R>;
11
+ readonly logs: Array<string>;
12
+ readonly runner: Runner<R>;
13
+ private readonly root;
14
+ constructor(executeTool: (path: ReadonlyArray<string>, args: Array<unknown>) => Effect.Effect<unknown, unknown, R>, search: (args: Array<unknown>) => Effect.Effect<unknown, unknown, R>, toolKeys: (path: ReadonlyArray<string>) => ReadonlyArray<string>, promises: PromiseRuntime<R>, logs?: Array<string>);
15
15
  run(program: Program): Effect.Effect<unknown, unknown, R>;
16
- private createToolCallPromise;
17
- private createPromise;
18
- private settlePromise;
19
- private evaluateStatement;
20
- private evaluateBlock;
21
- private createFunction;
22
- private hoistFunctions;
23
- private predeclareLexical;
24
- private predeclarePattern;
25
- private evaluateIfStatement;
26
- private evaluateSwitchStatement;
27
- private evaluateWhileStatement;
28
- private evaluateDoWhileStatement;
29
- private evaluateForStatement;
30
- private evaluateForOfStatement;
31
- private awaitValue;
32
- private awaitAsyncFromSyncValue;
33
- private syncIterator;
34
- private customIterator;
35
- private nextIteratorResult;
36
- private closeIterator;
37
- private requireIteratorObject;
38
- private requireIterator;
39
- private requireIteratorMethod;
40
- private enumerableKeys;
41
- private evaluateForInStatement;
42
- private evaluateBreakStatement;
43
- private evaluateContinueStatement;
44
- private evaluateLabeledStatement;
45
- private evaluateThrowStatement;
46
- private evaluateTryStatement;
47
- private evaluateVariableDeclaration;
48
- private declarePattern;
49
- private assignPattern;
50
- private destructureArrayPattern;
51
- private destructuringPropertyKey;
52
- private destructuringPropertyValue;
53
- private evaluateExpression;
54
- private evaluateNewExpression;
55
- private constructArray;
56
- private constructObject;
57
- private constructDate;
58
- private constructRegExp;
59
- private constructMap;
60
- private constructSet;
61
- private constructURL;
62
- private constructURLSearchParams;
63
- private readURLSearchParamsPair;
64
- private evaluateBinaryExpression;
65
- private applyBinaryOperator;
66
- private evaluateLogicalExpression;
67
- private evaluateUnaryExpression;
68
- private evaluateAssignmentExpression;
69
- private evaluateLogicalAssignment;
70
- private evaluateUpdateExpression;
71
- private evaluateCallExpression;
72
- private invokeCallable;
73
- private invokeObjectMethodOnTools;
74
- private invokeConsole;
75
- private evaluateCallArguments;
76
- private invokeFunction;
77
- private createGenerator;
78
- private completeGeneratorRequests;
79
- private takeGeneratorRequest;
80
- private dequeueGeneratorRequest;
81
- private evaluateYieldExpression;
82
- private suspendGenerator;
83
- private delegateYield;
84
- private evaluateObjectExpression;
85
- private evaluateArrayExpression;
86
- private evaluateTemplateLiteral;
87
- private evaluateConditionalExpression;
88
- private applyCompoundAssignment;
89
- private getMemberReference;
90
- private readMember;
91
- private writeMember;
92
- private evaluateDeleteExpression;
93
- private modifyMember;
94
- private readReferenceValue;
95
- private assignToReference;
96
- private toPropertyKey;
97
16
  }