@cuxt/sandboxjs 0.1.0 → 0.1.1

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/executor.js CHANGED
@@ -365,7 +365,15 @@ addOps(5 /* LispType.Call */, ({ done, a, b, obj, context }) => {
365
365
  let ret = evl ? evl(obj, ...vals) : obj(...vals);
366
366
  ret = getGlobalProp(ret, context) || ret;
367
367
  sanitizeArray(ret, context);
368
- done(undefined, ret);
368
+ // If the function returns a Promise, await it before signaling completion.
369
+ // Without this, `done(undefined, promise)` resolves the outer await immediately,
370
+ // but the Promise itself is still pending — causing async ops to be skipped.
371
+ if (ret != null && typeof ret.then === 'function') {
372
+ ret.then((resolved) => { done(undefined, resolved); }, (err) => { done(err); });
373
+ }
374
+ else {
375
+ done(undefined, ret);
376
+ }
369
377
  return;
370
378
  }
371
379
  if (obj.context[obj.prop] === JSON.stringify && context.getSubscriptions.size) {
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sources":["../src/executor.ts"],"sourcesContent":["import { LispItem, Lisp, IRegEx, SwitchCase } from './parser.js';\r\nimport {\r\n CodeString,\r\n hasOwnProperty,\r\n IAuditReport,\r\n IExecContext,\r\n IScope,\r\n isLisp,\r\n LispType,\r\n LocalScope,\r\n Prop,\r\n SandboxExecutionQuotaExceededError,\r\n SandboxError,\r\n SandboxExecutionTreeError,\r\n Scope,\r\n Ticks,\r\n VarType,\r\n SandboxCapabilityError,\r\n SandboxAccessError,\r\n} from './utils.js';\r\n\r\nexport type Done<T = any> = (err?: any, res?: T | typeof optional) => void;\r\n\r\nexport class ExecReturn<T> {\r\n constructor(\r\n public auditReport: IAuditReport | undefined,\r\n public result: T,\r\n public returned: boolean,\r\n public breakLoop = false,\r\n public continueLoop = false,\r\n ) {}\r\n}\r\n\r\nexport type Unknown = undefined | null | Record<string | number, unknown>;\r\n\r\nexport interface IChange {\r\n type: string;\r\n}\r\n\r\nexport interface ICreate extends IChange {\r\n type: 'create';\r\n prop: number | string;\r\n}\r\n\r\nexport interface IReplace extends IChange {\r\n type: 'replace';\r\n}\r\n\r\nexport interface IDelete extends IChange {\r\n type: 'delete';\r\n prop: number | string;\r\n}\r\n\r\nexport interface IReverse extends IChange {\r\n type: 'reverse';\r\n}\r\n\r\nexport interface ISort extends IChange {\r\n type: 'sort';\r\n}\r\n\r\nexport interface IPush extends IChange {\r\n type: 'push';\r\n added: unknown[];\r\n}\r\n\r\nexport interface IPop extends IChange {\r\n type: 'pop';\r\n removed: unknown[];\r\n}\r\n\r\nexport interface IShift extends IChange {\r\n type: 'shift';\r\n removed: unknown[];\r\n}\r\n\r\nexport interface IUnShift extends IChange {\r\n type: 'unshift';\r\n added: unknown[];\r\n}\r\n\r\nexport interface ISplice extends IChange {\r\n type: 'splice';\r\n startIndex: number;\r\n deleteCount: number;\r\n added: unknown[];\r\n removed: unknown[];\r\n}\r\n\r\nexport interface ICopyWithin extends IChange {\r\n type: 'copyWithin';\r\n startIndex: number;\r\n endIndex: number;\r\n added: unknown[];\r\n removed: unknown[];\r\n}\r\n\r\nexport type Change =\r\n | ICreate\r\n | IReplace\r\n | IDelete\r\n | IReverse\r\n | ISort\r\n | IPush\r\n | IPop\r\n | IUnShift\r\n | IShift\r\n | ISplice\r\n | ICopyWithin;\r\n\r\nconst optional = {};\r\n\r\nfunction generateArgs(argNames: string[], args: unknown[]) {\r\n const vars: Record<string, unknown> = {};\r\n argNames.forEach((arg, i) => {\r\n if (arg.startsWith('...')) {\r\n vars[arg.substring(3)] = args.slice(i);\r\n } else {\r\n vars[arg] = args[i];\r\n }\r\n });\r\n return vars;\r\n}\r\n\r\nexport function createFunction(\r\n argNames: string[],\r\n parsed: Lisp[],\r\n ticks: Ticks,\r\n context: IExecContext,\r\n scope?: Scope,\r\n name?: string,\r\n) {\r\n if (context.ctx.options.forbidFunctionCreation) {\r\n throw new SandboxCapabilityError('Function creation is forbidden');\r\n }\r\n let func;\r\n if (name === undefined) {\r\n func = (...args: unknown[]) => {\r\n const vars = generateArgs(argNames, args);\r\n const res = executeTree(\r\n ticks,\r\n context,\r\n parsed,\r\n scope === undefined ? [] : [new Scope(scope, vars)],\r\n );\r\n return res.result;\r\n };\r\n } else {\r\n func = function sandboxedObject(this: Unknown, ...args: unknown[]) {\r\n const vars = generateArgs(argNames, args);\r\n const res = executeTree(\r\n ticks,\r\n context,\r\n parsed,\r\n scope === undefined ? [] : [new Scope(scope, vars, this)],\r\n );\r\n return res.result;\r\n };\r\n }\r\n context.registerSandboxFunction(func);\r\n context.ctx.sandboxedFunctions.add(func);\r\n return func;\r\n}\r\n\r\nexport function createFunctionAsync(\r\n argNames: string[],\r\n parsed: Lisp[],\r\n ticks: Ticks,\r\n context: IExecContext,\r\n scope?: Scope,\r\n name?: string,\r\n) {\r\n if (context.ctx.options.forbidFunctionCreation) {\r\n throw new SandboxCapabilityError('Function creation is forbidden');\r\n }\r\n if (!context.ctx.prototypeWhitelist?.has(Promise.prototype)) {\r\n throw new SandboxCapabilityError('Async/await not permitted');\r\n }\r\n let func;\r\n if (name === undefined) {\r\n func = async (...args: unknown[]) => {\r\n const vars = generateArgs(argNames, args);\r\n const res = await executeTreeAsync(\r\n ticks,\r\n context,\r\n parsed,\r\n scope === undefined ? [] : [new Scope(scope, vars)],\r\n );\r\n return res.result;\r\n };\r\n } else {\r\n func = async function sandboxedObject(this: Unknown, ...args: unknown[]) {\r\n const vars = generateArgs(argNames, args);\r\n const res = await executeTreeAsync(\r\n ticks,\r\n context,\r\n parsed,\r\n scope === undefined ? [] : [new Scope(scope, vars, this)],\r\n );\r\n return res.result;\r\n };\r\n }\r\n context.registerSandboxFunction(func);\r\n context.ctx.sandboxedFunctions.add(func);\r\n return func;\r\n}\r\n\r\nexport function assignCheck(obj: Prop, context: IExecContext, op = 'assign') {\r\n if (obj.context === undefined) {\r\n throw new ReferenceError(`Cannot ${op} value to undefined.`);\r\n }\r\n if (obj.isConst) {\r\n throw new TypeError(`Assignment to constant variable.`);\r\n }\r\n if (obj.isGlobal) {\r\n throw new SandboxAccessError(\r\n `Cannot ${op} property '${obj.prop.toString()}' of a global object`,\r\n );\r\n }\r\n if (obj.context === null) {\r\n throw new TypeError('Cannot set properties of null');\r\n }\r\n if (\r\n typeof (obj.context as any)[obj.prop] === 'function' &&\r\n !hasOwnProperty(obj.context, obj.prop)\r\n ) {\r\n throw new SandboxAccessError(\r\n `Override prototype property '${obj.prop.toString()}' not allowed`,\r\n );\r\n }\r\n if (op === 'delete') {\r\n if (hasOwnProperty(obj.context, obj.prop)) {\r\n context.changeSubscriptions\r\n .get(obj.context)\r\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop.toString() }));\r\n context.changeSubscriptionsGlobal\r\n .get(obj.context)\r\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop.toString() }));\r\n }\r\n } else if (hasOwnProperty(obj.context, obj.prop)) {\r\n context.setSubscriptions\r\n .get(obj.context)\r\n ?.get(obj.prop.toString())\r\n ?.forEach((cb) =>\r\n cb({\r\n type: 'replace',\r\n }),\r\n );\r\n context.setSubscriptionsGlobal\r\n .get(obj.context)\r\n ?.get(obj.prop.toString())\r\n ?.forEach((cb) =>\r\n cb({\r\n type: 'replace',\r\n }),\r\n );\r\n } else {\r\n context.changeSubscriptions\r\n .get(obj.context)\r\n ?.forEach((cb) => cb({ type: 'create', prop: obj.prop.toString() }));\r\n context.changeSubscriptionsGlobal\r\n .get(obj.context)\r\n ?.forEach((cb) => cb({ type: 'create', prop: obj.prop.toString() }));\r\n }\r\n}\r\nconst arrayChange = new Set([\r\n [].push,\r\n [].pop,\r\n [].shift,\r\n [].unshift,\r\n [].splice,\r\n [].reverse,\r\n [].sort,\r\n [].copyWithin,\r\n]);\r\n\r\nexport class KeyVal {\r\n constructor(\r\n public key: string | SpreadObject,\r\n public val: unknown,\r\n ) {}\r\n}\r\n\r\nexport class SpreadObject {\r\n constructor(public item: { [key: string]: unknown }) {}\r\n}\r\n\r\nexport class SpreadArray {\r\n constructor(public item: unknown[]) {}\r\n}\r\n\r\nexport class If {\r\n constructor(\r\n public t: Lisp,\r\n public f: Lisp,\r\n ) {}\r\n}\r\n\r\nconst literalRegex = /(\\$\\$)*(\\$)?\\${(\\d+)}/g;\r\ntype OpCallback<a, b, obj, bobj> = (params: OpsCallbackParams<a, b, obj, bobj>) => void;\r\n\r\nexport const ops = new Map<LispType, OpCallback<any, any, any, any>>();\r\nexport function addOps<a = unknown, b = unknown, obj = unknown, bobj = unknown>(\r\n type: LispType,\r\n cb: OpCallback<a, b, obj, bobj>,\r\n) {\r\n ops.set(type, cb);\r\n}\r\n\r\nconst prorptyKeyTypes = ['string', 'number', 'symbol'];\r\n\r\nfunction isPropertyKey(val: unknown): val is PropertyKey {\r\n return prorptyKeyTypes.includes(typeof val);\r\n}\r\n\r\nfunction hasPossibleProperties(val: unknown): val is {} {\r\n return val !== null && val !== undefined;\r\n}\r\n\r\naddOps<unknown, PropertyKey>(LispType.Prop, ({ done, a, b, obj, context, scope }) => {\r\n if (a === null) {\r\n throw new TypeError(`Cannot read properties of null (reading '${b?.toString()}')`);\r\n }\r\n\r\n if (!isPropertyKey(b)) {\r\n b = `${b}`;\r\n }\r\n\r\n if (a === undefined && obj === undefined && typeof b === 'string') {\r\n // is variable access\r\n const prop = scope.get(b);\r\n if (prop.context === context.ctx.sandboxGlobal) {\r\n if (context.ctx.options.audit) {\r\n context.ctx.auditReport?.globalsAccess.add(b);\r\n }\r\n }\r\n const val = prop.context ? (prop.context as any)[prop.prop] : undefined;\r\n const p = getGlobalProp(val, context, prop) || prop;\r\n\r\n done(undefined, p);\r\n return;\r\n } else if (a === undefined) {\r\n throw new TypeError(`Cannot read properties of undefined (reading '${b.toString()}')`);\r\n }\r\n\r\n if (!hasPossibleProperties(a)) {\r\n done(undefined, new Prop(undefined, b));\r\n return;\r\n }\r\n\r\n const prototypeAccess = typeof a === 'function' || !hasOwnProperty(a, b);\r\n\r\n if (context.ctx.options.audit && prototypeAccess) {\r\n let prot: {} = Object.getPrototypeOf(a);\r\n do {\r\n if (hasOwnProperty(prot, b)) {\r\n if (\r\n context.ctx.auditReport &&\r\n !context.ctx.auditReport.prototypeAccess[prot.constructor.name]\r\n ) {\r\n context.ctx.auditReport.prototypeAccess[prot.constructor.name] = new Set();\r\n }\r\n context.ctx.auditReport?.prototypeAccess[prot.constructor.name].add(b);\r\n }\r\n } while ((prot = Object.getPrototypeOf(prot)));\r\n }\r\n\r\n if (prototypeAccess) {\r\n if (typeof a === 'function') {\r\n if (hasOwnProperty(a, b)) {\r\n const whitelist = context.ctx.prototypeWhitelist.get(a.prototype);\r\n const replace = context.ctx.options.prototypeReplacements.get(a);\r\n if (replace) {\r\n done(undefined, new Prop(replace(a, true), b));\r\n return;\r\n }\r\n if (\r\n !(whitelist && (!whitelist.size || whitelist.has(b))) &&\r\n !context.ctx.sandboxedFunctions.has(a)\r\n ) {\r\n throw new SandboxAccessError(\r\n `Static method or property access not permitted: ${a.name}.${b.toString()}`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Fast path: check own properties of `a` first (handles static methods like Body.json)\r\n if (hasOwnProperty(a, b)) {\r\n const replace = context.ctx.options.prototypeReplacements.get(a as Function);\r\n if (replace) {\r\n done(undefined, new Prop(replace(a as object, true), b));\r\n return;\r\n }\r\n if (context.ctx.sandboxedFunctions.has(a as Function)) {\r\n done(undefined, new Prop(a, b, false, false));\r\n return;\r\n }\r\n // Check if constructor or any ancestor is whitelisted\r\n let ctorProt: {} | null = (a as Function).prototype;\r\n while (ctorProt !== null) {\r\n const whitelist = context.ctx.prototypeWhitelist.get(ctorProt as Function);\r\n if (whitelist && (!whitelist.size || whitelist.has(b))) {\r\n done(undefined, new Prop(a, b, false, false));\r\n return;\r\n }\r\n ctorProt = Object.getPrototypeOf(ctorProt);\r\n }\r\n if (typeof a === 'function') {\r\n // Constructor not whitelisted, throw\r\n throw new SandboxAccessError(\r\n `Method or property access not permitted: ${(a as Function).name}.${b.toString()}`,\r\n );\r\n }\r\n }\r\n\r\n let prot: {} = a;\r\n while ((prot = Object.getPrototypeOf(prot))) {\r\n if (hasOwnProperty(prot, b) || b === '__proto__') {\r\n const replace = context.ctx.options.prototypeReplacements.get(prot.constructor);\r\n if (replace) {\r\n done(undefined, new Prop(replace(a, false), b));\r\n return;\r\n }\r\n if (context.ctx.sandboxedFunctions.has(prot.constructor)) {\r\n break;\r\n }\r\n // Check if this constructor or any ancestor in its prototype chain is whitelisted\r\n let ctorProt: {} | null = prot.constructor;\r\n let whitelisted = false;\r\n while (ctorProt !== null) {\r\n const whitelist = context.ctx.prototypeWhitelist.get(ctorProt as Function);\r\n if (whitelist && (!whitelist.size || whitelist.has(b))) {\r\n whitelisted = true;\r\n break;\r\n }\r\n ctorProt = Object.getPrototypeOf(ctorProt);\r\n }\r\n if (whitelisted) {\r\n break;\r\n }\r\n if (b === '__proto__') {\r\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\r\n }\r\n throw new SandboxAccessError(\r\n `Method or property access not permitted: ${prot.constructor.name}.${b.toString()}`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n const val = a[b as keyof typeof a] as unknown;\r\n if (typeof a === 'function') {\r\n if (b === 'prototype' && !context.ctx.sandboxedFunctions.has(a)) {\r\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\r\n }\r\n }\r\n\r\n if (b === '__proto__' && !context.ctx.sandboxedFunctions.has(val?.constructor as any)) {\r\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\r\n }\r\n\r\n const p = getGlobalProp(val, context, new Prop(a, b, false, false));\r\n if (p) {\r\n done(undefined, p);\r\n return;\r\n }\r\n\r\n const g =\r\n (obj instanceof Prop && obj.isGlobal) ||\r\n (typeof a === 'function' && !context.ctx.sandboxedFunctions.has(a)) ||\r\n context.ctx.globalsWhitelist.has(a);\r\n\r\n done(undefined, new Prop(a, b, false, g, false));\r\n});\r\n\r\nfunction getGlobalProp(val: unknown, context: IExecContext, prop?: Prop) {\r\n if (!val) return;\r\n const isFunc = typeof val === 'function';\r\n if (val instanceof Prop) {\r\n if (!prop) {\r\n prop = val;\r\n }\r\n val = val.get(context);\r\n }\r\n const p = prop?.prop || 'prop';\r\n if (val === globalThis) {\r\n return new Prop(\r\n {\r\n [p]: context.ctx.sandboxGlobal,\r\n },\r\n p,\r\n prop?.isConst || false,\r\n false,\r\n prop?.isVariable || false,\r\n );\r\n }\r\n const evl = isFunc && context.evals.get(val as Function);\r\n if (evl) {\r\n return new Prop(\r\n {\r\n [p]: evl,\r\n },\r\n p,\r\n prop?.isConst || false,\r\n true,\r\n prop?.isVariable || false,\r\n );\r\n }\r\n}\r\n\r\nfunction sanitizeArray<T>(val: T, context: IExecContext, cache = new WeakSet<object>()): T {\r\n if (!Array.isArray(val)) return val;\r\n if (cache.has(val)) return val;\r\n cache.add(val);\r\n for (let i = 0; i < val.length; i++) {\r\n const item = val[i];\r\n if (item === globalThis) {\r\n val[i] = context.ctx.sandboxGlobal;\r\n } else if (typeof item === 'function') {\r\n const replacement = context.evals.get(item);\r\n if (replacement) {\r\n val[i] = replacement;\r\n }\r\n } else {\r\n sanitizeArray(item, context, cache);\r\n }\r\n }\r\n return val;\r\n}\r\n\r\naddOps<unknown, Lisp[], any>(LispType.Call, ({ done, a, b, obj, context }) => {\r\n if (context.ctx.options.forbidFunctionCalls)\r\n throw new SandboxCapabilityError('Function invocations are not allowed');\r\n if (typeof a !== 'function') {\r\n throw new TypeError(\r\n `${typeof obj?.prop === 'symbol' ? 'Symbol' : obj?.prop} is not a function`,\r\n );\r\n }\r\n const vals = b\r\n .map((item) => {\r\n if (item instanceof SpreadArray) {\r\n return [...item.item];\r\n } else {\r\n return [item];\r\n }\r\n })\r\n .flat()\r\n .map((item) => valueOrProp(item, context));\r\n\r\n if (typeof obj === 'function') {\r\n const evl = context.evals.get(obj);\r\n let ret = evl ? evl(obj, ...vals) : obj(...vals);\r\n ret = getGlobalProp(ret, context) || ret;\r\n sanitizeArray(ret, context);\r\n done(undefined, ret);\r\n return;\r\n }\r\n if (obj.context[obj.prop] === JSON.stringify && context.getSubscriptions.size) {\r\n const cache = new Set<any>();\r\n const recurse = (x: unknown) => {\r\n if (!x || !(typeof x === 'object') || cache.has(x)) return;\r\n cache.add(x);\r\n for (const y of Object.keys(x) as (keyof typeof x)[]) {\r\n context.getSubscriptions.forEach((cb) => cb(x, y));\r\n recurse(x[y]);\r\n }\r\n };\r\n recurse(vals[0]);\r\n }\r\n\r\n if (\r\n obj.context instanceof Array &&\r\n arrayChange.has(obj.context[obj.prop]) &&\r\n (context.changeSubscriptions.get(obj.context) ||\r\n context.changeSubscriptionsGlobal.get(obj.context))\r\n ) {\r\n let change: Change;\r\n let changed = false;\r\n if (obj.prop === 'push') {\r\n change = {\r\n type: 'push',\r\n added: vals,\r\n };\r\n changed = !!vals.length;\r\n } else if (obj.prop === 'pop') {\r\n change = {\r\n type: 'pop',\r\n removed: obj.context.slice(-1),\r\n };\r\n changed = !!change.removed.length;\r\n } else if (obj.prop === 'shift') {\r\n change = {\r\n type: 'shift',\r\n removed: obj.context.slice(0, 1),\r\n };\r\n changed = !!change.removed.length;\r\n } else if (obj.prop === 'unshift') {\r\n change = {\r\n type: 'unshift',\r\n added: vals,\r\n };\r\n changed = !!vals.length;\r\n } else if (obj.prop === 'splice') {\r\n change = {\r\n type: 'splice',\r\n startIndex: vals[0] as number,\r\n deleteCount: vals[1] === undefined ? obj.context.length : vals[1],\r\n added: vals.slice(2),\r\n removed: obj.context.slice(\r\n vals[0],\r\n vals[1] === undefined ? undefined : (vals[0] as number) + (vals[1] as number),\r\n ),\r\n };\r\n changed = !!change.added.length || !!change.removed.length;\r\n } else if (obj.prop === 'reverse' || obj.prop === 'sort') {\r\n change = { type: obj.prop };\r\n changed = !!obj.context.length;\r\n } else if (obj.prop === 'copyWithin') {\r\n const len =\r\n vals[2] === undefined\r\n ? obj.context.length - (vals[1] as number)\r\n : Math.min(obj.context.length, (vals[2] as number) - (vals[1] as number));\r\n change = {\r\n type: 'copyWithin',\r\n startIndex: vals[0] as number,\r\n endIndex: (vals[0] as number) + len,\r\n added: obj.context.slice(vals[1] as number, (vals[1] as number) + len),\r\n removed: obj.context.slice(vals[0] as number, (vals[0] as number) + len),\r\n };\r\n changed = !!change.added.length || !!change.removed.length;\r\n }\r\n if (changed) {\r\n context.changeSubscriptions.get(obj.context)?.forEach((cb) => cb(change));\r\n context.changeSubscriptionsGlobal.get(obj.context)?.forEach((cb) => cb(change));\r\n }\r\n }\r\n obj.get(context);\r\n const evl = context.evals.get(obj.context[obj.prop] as any);\r\n let ret = evl ? evl(obj.context[obj.prop], ...vals) : (obj.context[obj.prop](...vals) as unknown);\r\n ret = getGlobalProp(ret, context) || ret;\r\n sanitizeArray(ret, context);\r\n done(undefined, ret);\r\n});\r\n\r\naddOps<unknown, KeyVal[]>(LispType.CreateObject, ({ done, b }) => {\r\n let res = {} as any;\r\n for (const item of b) {\r\n if (item.key instanceof SpreadObject) {\r\n res = { ...res, ...item.key.item };\r\n } else {\r\n res[item.key] = item.val;\r\n }\r\n }\r\n done(undefined, res);\r\n});\r\n\r\naddOps<string, LispItem>(LispType.KeyVal, ({ done, a, b }) => done(undefined, new KeyVal(a, b)));\r\n\r\naddOps<unknown, Lisp[]>(LispType.CreateArray, ({ done, b, context }) => {\r\n const items = b\r\n .map((item) => {\r\n if (item instanceof SpreadArray) {\r\n return [...item.item];\r\n } else {\r\n return [item];\r\n }\r\n })\r\n .flat()\r\n .map((item) => valueOrProp(item, context));\r\n done(undefined, items);\r\n});\r\n\r\naddOps<unknown, unknown>(LispType.Group, ({ done, b }) => done(undefined, b));\r\n\r\naddOps<unknown, string>(LispType.GlobalSymbol, ({ done, b }) => {\r\n switch (b) {\r\n case 'true':\r\n return done(undefined, true);\r\n case 'false':\r\n return done(undefined, false);\r\n case 'null':\r\n return done(undefined, null);\r\n case 'undefined':\r\n return done(undefined, undefined);\r\n case 'NaN':\r\n return done(undefined, NaN);\r\n case 'Infinity':\r\n return done(undefined, Infinity);\r\n }\r\n done(new Error('Unknown symbol: ' + b));\r\n});\r\n\r\naddOps<unknown, string>(LispType.Number, ({ done, b }) =>\r\n done(undefined, Number(b.replace(/_/g, ''))),\r\n);\r\naddOps<unknown, string>(LispType.BigInt, ({ done, b }) =>\r\n done(undefined, BigInt(b.replace(/_/g, ''))),\r\n);\r\naddOps<unknown, string>(LispType.StringIndex, ({ done, b, context }) =>\r\n done(undefined, context.constants.strings[parseInt(b)]),\r\n);\r\n\r\naddOps<unknown, string>(LispType.RegexIndex, ({ done, b, context }) => {\r\n const reg: IRegEx = context.constants.regexes[parseInt(b)];\r\n if (!context.ctx.globalsWhitelist.has(RegExp)) {\r\n throw new SandboxCapabilityError('Regex not permitted');\r\n } else {\r\n done(undefined, new RegExp(reg.regex, reg.flags));\r\n }\r\n});\r\n\r\naddOps<unknown, string>(LispType.LiteralIndex, ({ exec, done, ticks, b, context, scope }) => {\r\n const item = context.constants.literals[parseInt(b)];\r\n const [, name, js] = item;\r\n const found: Lisp[] = [];\r\n let f: RegExpExecArray | null;\r\n const resnums: string[] = [];\r\n while ((f = literalRegex.exec(name))) {\r\n if (!f[2]) {\r\n found.push(js[parseInt(f[3], 10)]);\r\n resnums.push(f[3]);\r\n }\r\n }\r\n\r\n exec<unknown[]>(ticks, found, scope, context, (...args: unknown[]) => {\r\n const reses: Record<string, unknown> = {};\r\n if (args.length === 1) {\r\n done(args[0]);\r\n return;\r\n }\r\n const processed = args[1];\r\n for (const i of Object.keys(processed!) as (keyof typeof processed)[]) {\r\n const num = resnums[i];\r\n reses[num] = processed![i];\r\n }\r\n done(\r\n undefined,\r\n name.replace(/(\\\\\\\\)*(\\\\)?\\${(\\d+)}/g, (match, $$, $, num) => {\r\n if ($) return match;\r\n const res = reses[num];\r\n return ($$ ? $$ : '') + `${valueOrProp(res, context)}`;\r\n }),\r\n );\r\n });\r\n});\r\n\r\naddOps<unknown, unknown[]>(LispType.SpreadArray, ({ done, b }) => {\r\n done(undefined, new SpreadArray(b));\r\n});\r\n\r\naddOps<unknown, Record<string, unknown>>(LispType.SpreadObject, ({ done, b }) => {\r\n done(undefined, new SpreadObject(b));\r\n});\r\n\r\naddOps<unknown, unknown>(LispType.Not, ({ done, b }) => done(undefined, !b));\r\naddOps<unknown, number>(LispType.Inverse, ({ done, b }) => done(undefined, ~b));\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.IncrementBefore, ({ done, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, ++obj.context[obj.prop]);\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.IncrementAfter, ({ done, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, obj.context[obj.prop]++);\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.DecrementBefore, ({ done, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, --obj.context[obj.prop]);\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.DecrementAfter, ({ done, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, obj.context[obj.prop]--);\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>, Prop<any>>(\r\n LispType.Assign,\r\n ({ done, b, obj, context, scope, bobj }) => {\r\n assignCheck(obj, context);\r\n obj.isGlobal = bobj?.isGlobal || false;\r\n if (obj.isVariable) {\r\n const s = scope.getWhereValScope(obj.prop as string, obj.prop === 'this');\r\n if (s === null) {\r\n throw new ReferenceError(`Cannot assign to undeclared variable '${obj.prop.toString()}'`);\r\n }\r\n s.set(obj.prop as string, b);\r\n if (obj.isGlobal) {\r\n s.globals[obj.prop.toString()] = true;\r\n } else {\r\n delete s.globals[obj.prop.toString()];\r\n }\r\n done(undefined, b);\r\n return;\r\n }\r\n done(undefined, (obj.context[obj.prop] = b));\r\n },\r\n);\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.AddEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] += b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.SubractEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] -= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.DivideEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] /= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.MultiplyEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] *= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.PowerEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] **= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.ModulusEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] %= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.BitNegateEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] ^= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.BitAndEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] &= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.BitOrEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] |= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.ShiftLeftEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] <<= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(LispType.ShiftRightEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] >>= b));\r\n});\r\n\r\naddOps<unknown, number, Prop<any>>(\r\n LispType.UnsignedShiftRightEquals,\r\n ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] >>>= b));\r\n },\r\n);\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.AndEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] &&= b));\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>>(LispType.OrEquals, ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] ||= b));\r\n});\r\n\r\naddOps<unknown, unknown, Prop<any>>(\r\n LispType.NullishCoalescingEquals,\r\n ({ done, b, obj, context }) => {\r\n assignCheck(obj, context);\r\n done(undefined, (obj.context[obj.prop] ??= b));\r\n },\r\n);\r\n\r\naddOps<number, number>(LispType.LargerThan, ({ done, a, b }) => done(undefined, a > b));\r\naddOps<number, number>(LispType.SmallerThan, ({ done, a, b }) => done(undefined, a < b));\r\naddOps<number, number>(LispType.LargerEqualThan, ({ done, a, b }) => done(undefined, a >= b));\r\naddOps<number, number>(LispType.SmallerEqualThan, ({ done, a, b }) => done(undefined, a <= b));\r\naddOps<number, number>(LispType.Equal, ({ done, a, b }) => done(undefined, a == b));\r\naddOps<number, number>(LispType.StrictEqual, ({ done, a, b }) => done(undefined, a === b));\r\naddOps<number, number>(LispType.NotEqual, ({ done, a, b }) => done(undefined, a != b));\r\naddOps<number, number>(LispType.StrictNotEqual, ({ done, a, b }) => done(undefined, a !== b));\r\naddOps<number, number>(LispType.And, ({ done, a, b }) => done(undefined, a && b));\r\naddOps<number, number>(LispType.Or, ({ done, a, b }) => done(undefined, a || b));\r\naddOps<number, number>(LispType.NullishCoalescing, ({ done, a, b }) => done(undefined, a ?? b));\r\naddOps<number, number>(LispType.BitAnd, ({ done, a, b }) => done(undefined, a & b));\r\naddOps<number, number>(LispType.BitOr, ({ done, a, b }) => done(undefined, a | b));\r\naddOps<number, number>(LispType.Plus, ({ done, a, b }) => done(undefined, a + b));\r\naddOps<number, number>(LispType.Minus, ({ done, a, b }) => done(undefined, a - b));\r\naddOps<number, number>(LispType.Positive, ({ done, b }) => done(undefined, +b));\r\naddOps<number, number>(LispType.Negative, ({ done, b }) => done(undefined, -b));\r\naddOps<number, number>(LispType.Divide, ({ done, a, b }) => done(undefined, a / b));\r\naddOps<number, number>(LispType.Power, ({ done, a, b }) => done(undefined, a ** b));\r\naddOps<number, number>(LispType.BitNegate, ({ done, a, b }) => done(undefined, a ^ b));\r\naddOps<number, number>(LispType.Multiply, ({ done, a, b }) => done(undefined, a * b));\r\naddOps<number, number>(LispType.Modulus, ({ done, a, b }) => done(undefined, a % b));\r\naddOps<number, number>(LispType.BitShiftLeft, ({ done, a, b }) => done(undefined, a << b));\r\naddOps<number, number>(LispType.BitShiftRight, ({ done, a, b }) => done(undefined, a >> b));\r\naddOps<number, number>(LispType.BitUnsignedShiftRight, ({ done, a, b }) =>\r\n done(undefined, a >>> b),\r\n);\r\naddOps<unknown, LispItem>(LispType.Typeof, ({ exec, done, ticks, b, context, scope }) => {\r\n exec(ticks, b, scope, context, (e, prop) => {\r\n done(undefined, typeof valueOrProp(prop, context));\r\n });\r\n});\r\n\r\naddOps<unknown, { new (): unknown }>(LispType.Instanceof, ({ done, a, b }) =>\r\n done(undefined, a instanceof b),\r\n);\r\naddOps<string, {}>(LispType.In, ({ done, a, b }) => done(undefined, a in b));\r\n\r\naddOps<unknown, unknown>(LispType.Delete, ({ done, context, bobj }) => {\r\n if (!(bobj instanceof Prop)) {\r\n done(undefined, true);\r\n return;\r\n }\r\n assignCheck(bobj, context, 'delete');\r\n if (bobj.isVariable) {\r\n done(undefined, false);\r\n return;\r\n }\r\n done(undefined, delete (bobj.context as any)?.[bobj.prop]);\r\n});\r\n\r\naddOps(LispType.Return, ({ done, b }) => done(undefined, b));\r\n\r\naddOps<string, unknown, unknown, Prop>(LispType.Var, ({ done, a, b, scope, bobj }) => {\r\n done(undefined, scope.declare(a, VarType.var, b, bobj?.isGlobal || false));\r\n});\r\n\r\naddOps<string, unknown, unknown, Prop>(LispType.Let, ({ done, a, b, scope, bobj }) => {\r\n done(undefined, scope.declare(a, VarType.let, b, bobj?.isGlobal || false));\r\n});\r\n\r\naddOps<string, unknown, unknown, Prop>(LispType.Const, ({ done, a, b, scope, bobj }) => {\r\n done(undefined, scope.declare(a, VarType.const, b, bobj?.isGlobal || false));\r\n});\r\n\r\naddOps<string[], Lisp[], Lisp>(\r\n LispType.ArrowFunction,\r\n ({ done, ticks, a, b, obj, context, scope }) => {\r\n a = [...a];\r\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\r\n if (context.allowJit && context.evalContext) {\r\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\r\n } else {\r\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\r\n }\r\n }\r\n if (a.shift()) {\r\n done(undefined, createFunctionAsync(a, b, ticks, context, scope));\r\n } else {\r\n done(undefined, createFunction(a, b, ticks, context, scope));\r\n }\r\n },\r\n);\r\n\r\naddOps<(string | LispType)[], Lisp[], Lisp>(\r\n LispType.Function,\r\n ({ done, ticks, a, b, obj, context, scope }) => {\r\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\r\n if (context.allowJit && context.evalContext) {\r\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\r\n } else {\r\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\r\n }\r\n }\r\n const isAsync = a.shift();\r\n const name = a.shift() as string;\r\n let func;\r\n if (isAsync === LispType.True) {\r\n func = createFunctionAsync(a as string[], b, ticks, context, scope, name);\r\n } else {\r\n func = createFunction(a as string[], b, ticks, context, scope, name);\r\n }\r\n if (name) {\r\n scope.declare(name, VarType.var, func);\r\n }\r\n done(undefined, func);\r\n },\r\n);\r\n\r\naddOps<(string | LispType)[], Lisp[], Lisp>(\r\n LispType.InlineFunction,\r\n ({ done, ticks, a, b, obj, context, scope }) => {\r\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\r\n if (context.allowJit && context.evalContext) {\r\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\r\n } else {\r\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\r\n }\r\n }\r\n const isAsync = a.shift();\r\n const name = a.shift() as string;\r\n if (name) {\r\n scope = new Scope(scope, {});\r\n }\r\n let func;\r\n if (isAsync === LispType.True) {\r\n func = createFunctionAsync(a as string[], b, ticks, context, scope, name);\r\n } else {\r\n func = createFunction(a as string[], b, ticks, context, scope, name);\r\n }\r\n if (name) {\r\n scope.declare(name, VarType.let, func);\r\n }\r\n done(undefined, func);\r\n },\r\n);\r\n\r\naddOps<Lisp[], Lisp[]>(LispType.Loop, ({ exec, done, ticks, a, b, context, scope }) => {\r\n const [checkFirst, startInternal, getIterator, startStep, step, condition, beforeStep] = a;\r\n let loop = true;\r\n const loopScope = new Scope(scope, {});\r\n const internalVars = {\r\n $$obj: undefined,\r\n };\r\n const interalScope = new Scope(loopScope, internalVars);\r\n if (exec === execAsync) {\r\n (async () => {\r\n let ad: AsyncDoneRet;\r\n ad = asyncDone((d) => exec(ticks, startStep, loopScope, context, d));\r\n internalVars['$$obj'] =\r\n (ad = asyncDone((d) => exec(ticks, getIterator, loopScope, context, d))).isInstant === true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n ad = asyncDone((d) => exec(ticks, startInternal, interalScope, context, d));\r\n if (checkFirst)\r\n loop =\r\n (ad = asyncDone((d) => exec(ticks, condition, interalScope, context, d))).isInstant ===\r\n true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n while (loop) {\r\n const innerLoopVars = {};\r\n ad = asyncDone((d) =>\r\n exec(ticks, beforeStep, new Scope(interalScope, innerLoopVars), context, d),\r\n );\r\n ad.isInstant === true ? ad.instant : (await ad.p).result;\r\n const res = await executeTreeAsync(\r\n ticks,\r\n context,\r\n b,\r\n [new Scope(loopScope, innerLoopVars)],\r\n 'loop',\r\n );\r\n if (res instanceof ExecReturn && res.returned) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (res instanceof ExecReturn && res.breakLoop) {\r\n break;\r\n }\r\n ad = asyncDone((d) => exec(ticks, step, interalScope, context, d));\r\n loop =\r\n (ad = asyncDone((d) => exec(ticks, condition, interalScope, context, d))).isInstant ===\r\n true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n }\r\n done();\r\n })().catch(done);\r\n } else {\r\n syncDone((d) => exec(ticks, startStep, loopScope, context, d));\r\n internalVars['$$obj'] = syncDone((d) => exec(ticks, getIterator, loopScope, context, d)).result;\r\n syncDone((d) => exec(ticks, startInternal, interalScope, context, d));\r\n if (checkFirst) loop = syncDone((d) => exec(ticks, condition, interalScope, context, d)).result;\r\n while (loop) {\r\n const innerLoopVars = {};\r\n syncDone((d) => exec(ticks, beforeStep, new Scope(interalScope, innerLoopVars), context, d));\r\n const res = executeTree(ticks, context, b, [new Scope(loopScope, innerLoopVars)], 'loop');\r\n if (res instanceof ExecReturn && res.returned) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (res instanceof ExecReturn && res.breakLoop) {\r\n break;\r\n }\r\n syncDone((d) => exec(ticks, step, interalScope, context, d));\r\n loop = syncDone((d) => exec(ticks, condition, interalScope, context, d)).result;\r\n }\r\n done();\r\n }\r\n});\r\n\r\naddOps<LispItem, LispItem>(LispType.LoopAction, ({ done, a, context, inLoopOrSwitch }) => {\r\n if ((inLoopOrSwitch === 'switch' && a === 'continue') || !inLoopOrSwitch) {\r\n throw new TypeError('Illegal ' + a + ' statement');\r\n }\r\n done(\r\n undefined,\r\n new ExecReturn(context.ctx.auditReport, undefined, false, a === 'break', a === 'continue'),\r\n );\r\n});\r\n\r\naddOps<LispItem, If>(LispType.If, ({ exec, done, ticks, a, b, context, scope, inLoopOrSwitch }) => {\r\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done, inLoopOrSwitch);\r\n});\r\n\r\naddOps<LispItem, If>(LispType.InlineIf, ({ exec, done, ticks, a, b, context, scope }) => {\r\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done, undefined);\r\n});\r\n\r\naddOps<Lisp, Lisp>(LispType.InlineIfCase, ({ done, a, b }) => done(undefined, new If(a, b)));\r\naddOps<Lisp, Lisp>(LispType.IfCase, ({ done, a, b }) => done(undefined, new If(a, b)));\r\n\r\naddOps<LispItem, SwitchCase[]>(LispType.Switch, ({ exec, done, ticks, a, b, context, scope }) => {\r\n exec(ticks, a, scope, context, (...args: unknown[]) => {\r\n if (args.length === 1) {\r\n done(args[0]);\r\n return;\r\n }\r\n let toTest = args[1];\r\n toTest = valueOrProp(toTest, context);\r\n if (exec === execSync) {\r\n let res: ExecReturn<unknown>;\r\n let isTrue = false;\r\n for (const caseItem of b) {\r\n if (\r\n isTrue ||\r\n (isTrue =\r\n !caseItem[1] ||\r\n toTest ===\r\n valueOrProp(\r\n syncDone((d) => exec(ticks, caseItem[1], scope, context, d)).result,\r\n context,\r\n ))\r\n ) {\r\n if (!caseItem[2]) continue;\r\n res = executeTree(ticks, context, caseItem[2], [scope], 'switch');\r\n if (res.breakLoop) break;\r\n if (res.returned) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (!caseItem[1]) {\r\n // default case\r\n break;\r\n }\r\n }\r\n }\r\n done();\r\n } else {\r\n (async () => {\r\n let res: ExecReturn<unknown>;\r\n let isTrue = false;\r\n for (const caseItem of b) {\r\n let ad: AsyncDoneRet;\r\n if (\r\n isTrue ||\r\n (isTrue =\r\n !caseItem[1] ||\r\n toTest ===\r\n valueOrProp(\r\n (ad = asyncDone((d) => exec(ticks, caseItem[1], scope, context, d))).isInstant ===\r\n true\r\n ? ad.instant\r\n : (await ad.p).result,\r\n context,\r\n ))\r\n ) {\r\n if (!caseItem[2]) continue;\r\n res = await executeTreeAsync(ticks, context, caseItem[2], [scope], 'switch');\r\n if (res.breakLoop) break;\r\n if (res.returned) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (!caseItem[1]) {\r\n // default case\r\n break;\r\n }\r\n }\r\n }\r\n done();\r\n })().catch(done);\r\n }\r\n });\r\n});\r\n\r\naddOps<Lisp[], [string, Lisp[], Lisp[]]>(\r\n LispType.Try,\r\n ({ exec, done, ticks, a, b, context, scope, inLoopOrSwitch }) => {\r\n const [exception, catchBody, finallyBody] = b;\r\n\r\n // Execute try block\r\n executeTreeWithDone(\r\n exec,\r\n (...tryArgs: unknown[]) => {\r\n const tryHadError = tryArgs.length === 1;\r\n const tryError = tryHadError ? tryArgs[0] : undefined;\r\n const tryResult = !tryHadError && tryArgs.length > 1 ? tryArgs[1] : undefined;\r\n\r\n // Handler to execute finally and complete\r\n const executeFinallyAndComplete = (hadError: boolean, errorOrResult: unknown) => {\r\n if (finallyBody && finallyBody.length > 0) {\r\n // Execute finally block\r\n executeTreeWithDone(\r\n exec,\r\n (...finallyArgs: unknown[]) => {\r\n const finallyHadError = finallyArgs.length === 1;\r\n const finallyResult =\r\n !finallyHadError && finallyArgs.length > 1 ? finallyArgs[1] : undefined;\r\n\r\n // If finally throws an error, it overrides everything\r\n if (finallyHadError) {\r\n done(finallyArgs[0]);\r\n return;\r\n }\r\n\r\n // If finally has a control flow statement (return/break/continue), it overrides everything\r\n if (\r\n finallyResult instanceof ExecReturn &&\r\n (finallyResult.returned || finallyResult.breakLoop || finallyResult.continueLoop)\r\n ) {\r\n done(undefined, finallyResult);\r\n return;\r\n }\r\n\r\n // Otherwise, return the original try/catch result/error\r\n if (hadError) {\r\n done(errorOrResult);\r\n } else if (errorOrResult instanceof ExecReturn) {\r\n // If try/catch returned or has some other control flow, pass that through\r\n if (\r\n errorOrResult.returned ||\r\n errorOrResult.breakLoop ||\r\n errorOrResult.continueLoop\r\n ) {\r\n done(undefined, errorOrResult);\r\n } else {\r\n // Normal completion - don't return a value\r\n done();\r\n }\r\n } else {\r\n // Try/catch completed normally, just signal completion with no return value\r\n done();\r\n }\r\n },\r\n ticks,\r\n context,\r\n finallyBody,\r\n [new Scope(scope, {})],\r\n inLoopOrSwitch,\r\n );\r\n } else {\r\n // No finally block, just return result/error\r\n if (hadError) {\r\n done(errorOrResult);\r\n } else if (errorOrResult instanceof ExecReturn) {\r\n // If try/catch returned or has some other control flow, pass that through\r\n if (errorOrResult.returned || errorOrResult.breakLoop || errorOrResult.continueLoop) {\r\n done(undefined, errorOrResult);\r\n } else {\r\n // Normal completion - don't return a value\r\n done();\r\n }\r\n } else {\r\n done();\r\n }\r\n }\r\n };\r\n\r\n // If try had an error and there's a catch block, execute catch\r\n if (tryHadError && catchBody && catchBody.length > 0) {\r\n const sc: Record<string, unknown> = {};\r\n if (exception) sc[exception] = tryError;\r\n\r\n executeTreeWithDone(\r\n exec,\r\n (...catchArgs: unknown[]) => {\r\n const catchHadError = catchArgs.length === 1;\r\n const catchErrorOrResult = catchHadError\r\n ? catchArgs[0]\r\n : catchArgs.length > 1\r\n ? catchArgs[1]\r\n : undefined;\r\n\r\n // Execute finally with catch result\r\n executeFinallyAndComplete(catchHadError, catchErrorOrResult);\r\n },\r\n ticks,\r\n context,\r\n catchBody,\r\n [new Scope(scope, sc)],\r\n inLoopOrSwitch,\r\n );\r\n } else {\r\n // No catch or no error, execute finally with try result\r\n executeFinallyAndComplete(tryHadError, tryHadError ? tryError : tryResult);\r\n }\r\n },\r\n ticks,\r\n context,\r\n a,\r\n [new Scope(scope)],\r\n inLoopOrSwitch,\r\n );\r\n },\r\n);\r\n\r\naddOps(LispType.Void, ({ done }) => {\r\n done();\r\n});\r\naddOps<new (...args: unknown[]) => unknown, unknown[]>(LispType.New, ({ done, a, b, context }) => {\r\n if (!context.ctx.globalsWhitelist.has(a) && !context.ctx.sandboxedFunctions.has(a)) {\r\n throw new SandboxAccessError(`Object construction not allowed: ${a.constructor.name}`);\r\n }\r\n done(undefined, new a(...b));\r\n});\r\n\r\naddOps(LispType.Throw, ({ done, b }) => {\r\n done(b);\r\n});\r\naddOps<unknown[]>(LispType.Expression, ({ done, a }) => done(undefined, a.pop()));\r\naddOps(LispType.None, ({ done }) => done());\r\n\r\nfunction valueOrProp(a: unknown, context: IExecContext): unknown {\r\n if (a instanceof Prop) return a.get(context);\r\n if (a === optional) return undefined;\r\n return a;\r\n}\r\n\r\nexport function execMany(\r\n ticks: Ticks,\r\n exec: Execution,\r\n tree: Lisp[],\r\n done: Done,\r\n scope: Scope,\r\n context: IExecContext,\r\n inLoopOrSwitch?: string,\r\n) {\r\n if (exec === execSync) {\r\n _execManySync(ticks, tree, done, scope, context, inLoopOrSwitch);\r\n } else {\r\n _execManyAsync(ticks, tree, done, scope, context, inLoopOrSwitch).catch(done);\r\n }\r\n}\r\n\r\nfunction _execManySync(\r\n ticks: Ticks,\r\n tree: Lisp[],\r\n done: Done,\r\n scope: Scope,\r\n context: IExecContext,\r\n inLoopOrSwitch?: string,\r\n) {\r\n const ret: any[] = [];\r\n for (let i = 0; i < tree.length; i++) {\r\n let res = syncDone((d) => execSync(ticks, tree[i], scope, context, d, inLoopOrSwitch)).result;\r\n if (res instanceof ExecReturn && (res.returned || res.breakLoop || res.continueLoop)) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (isLisp(tree[i]) && tree[i][0] === LispType.Return) {\r\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\r\n return;\r\n }\r\n ret.push(res);\r\n }\r\n done(undefined, ret);\r\n}\r\n\r\nasync function _execManyAsync(\r\n ticks: Ticks,\r\n tree: Lisp[],\r\n done: Done,\r\n scope: Scope,\r\n context: IExecContext,\r\n inLoopOrSwitch?: string,\r\n) {\r\n const ret: any[] = [];\r\n for (let i = 0; i < tree.length; i++) {\r\n let res;\r\n try {\r\n let ad: AsyncDoneRet;\r\n res =\r\n (ad = asyncDone((d) => execAsync(ticks, tree[i], scope, context, d, inLoopOrSwitch)))\r\n .isInstant === true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n } catch (e) {\r\n done(e);\r\n return;\r\n }\r\n if (res instanceof ExecReturn && (res.returned || res.breakLoop || res.continueLoop)) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (isLisp(tree[i]) && tree[i][0] === LispType.Return) {\r\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\r\n return;\r\n }\r\n ret.push(res);\r\n }\r\n done(undefined, ret);\r\n}\r\n\r\ntype Execution = <T = any>(\r\n ticks: Ticks,\r\n tree: LispItem,\r\n scope: Scope,\r\n context: IExecContext,\r\n done: Done<T>,\r\n inLoopOrSwitch?: string,\r\n) => void;\r\n\r\nexport interface AsyncDoneRet {\r\n isInstant: boolean;\r\n instant: any;\r\n p: Promise<{ result: any }>;\r\n}\r\n\r\nexport function asyncDone(callback: (done: Done) => void): AsyncDoneRet {\r\n let isInstant = false;\r\n let instant: unknown;\r\n const p = new Promise<any>((resolve, reject) => {\r\n callback((...args: unknown[]) => {\r\n if (args.length === 1) reject(args[0]);\r\n else {\r\n isInstant = true;\r\n instant = args[1];\r\n resolve({ result: args[1] });\r\n }\r\n });\r\n });\r\n return {\r\n isInstant,\r\n instant,\r\n p,\r\n };\r\n}\r\n\r\nexport function syncDone(callback: (done: Done) => void): { result: any } {\r\n let result;\r\n let err: { error: unknown } | undefined;\r\n callback((...args: unknown[]) => {\r\n err = args.length === 1 ? { error: args[0] } : undefined;\r\n result = args[1];\r\n });\r\n if (err) throw err.error;\r\n return { result };\r\n}\r\n\r\nexport async function execAsync<T = any>(\r\n ticks: Ticks,\r\n tree: LispItem,\r\n scope: Scope,\r\n context: IExecContext,\r\n doneOriginal: Done<T>,\r\n inLoopOrSwitch?: string,\r\n): Promise<void> {\r\n let done: Done<T> = doneOriginal;\r\n const p = new Promise<void>((resolve) => {\r\n done = (...args: unknown[]) => {\r\n doneOriginal(...args);\r\n resolve();\r\n };\r\n });\r\n if (!_execNoneRecurse(ticks, tree, scope, context, done, true, inLoopOrSwitch) && isLisp(tree)) {\r\n let op = tree[0];\r\n let obj;\r\n try {\r\n let ad: AsyncDoneRet;\r\n obj =\r\n (ad = asyncDone((d) => execAsync(ticks, tree[1], scope, context, d, inLoopOrSwitch)))\r\n .isInstant === true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n } catch (e) {\r\n done(e);\r\n return;\r\n }\r\n let a = obj;\r\n try {\r\n a = obj instanceof Prop ? obj.get(context) : obj;\r\n } catch (e) {\r\n done(e);\r\n return;\r\n }\r\n if (op === LispType.PropOptional || op === LispType.CallOptional) {\r\n if (a === undefined || a === null) {\r\n done(undefined, optional);\r\n return;\r\n }\r\n op = op === LispType.PropOptional ? LispType.Prop : LispType.Call;\r\n }\r\n if (a === optional) {\r\n if (op === LispType.Prop || op === LispType.Call) {\r\n done(undefined, a);\r\n return;\r\n } else {\r\n a = undefined;\r\n }\r\n }\r\n // Short-circuit for nullish coalescing: if a is not null/undefined, return a without evaluating b\r\n if (op === LispType.NullishCoalescing && a !== undefined && a !== null) {\r\n done(undefined, a);\r\n return;\r\n }\r\n let bobj;\r\n try {\r\n let ad: AsyncDoneRet;\r\n bobj =\r\n (ad = asyncDone((d) => execAsync(ticks, tree[2], scope, context, d, inLoopOrSwitch)))\r\n .isInstant === true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n } catch (e) {\r\n done(e);\r\n return;\r\n }\r\n let b = bobj;\r\n try {\r\n b = bobj instanceof Prop ? bobj.get(context) : bobj;\r\n } catch (e) {\r\n done(e);\r\n return;\r\n }\r\n if (b === optional) {\r\n b = undefined;\r\n }\r\n performOp({\r\n op,\r\n exec: execAsync,\r\n done,\r\n ticks,\r\n a,\r\n b,\r\n obj,\r\n context,\r\n scope,\r\n bobj,\r\n inLoopOrSwitch,\r\n tree,\r\n });\r\n }\r\n await p;\r\n}\r\n\r\nexport function execSync<T = any>(\r\n ticks: Ticks,\r\n tree: LispItem,\r\n scope: Scope,\r\n context: IExecContext,\r\n done: Done<T>,\r\n inLoopOrSwitch?: string,\r\n) {\r\n if (!_execNoneRecurse(ticks, tree, scope, context, done, false, inLoopOrSwitch) && isLisp(tree)) {\r\n let op = tree[0];\r\n let obj = syncDone((d) => execSync(ticks, tree[1], scope, context, d, inLoopOrSwitch)).result;\r\n let a = obj instanceof Prop ? obj.get(context) : obj;\r\n if (op === LispType.PropOptional || op === LispType.CallOptional) {\r\n if (a === undefined || a === null) {\r\n done(undefined, optional);\r\n return;\r\n }\r\n op = op === LispType.PropOptional ? LispType.Prop : LispType.Call;\r\n }\r\n if (a === optional) {\r\n if (op === LispType.Prop || op === LispType.Call) {\r\n done(undefined, a);\r\n return;\r\n } else {\r\n a = undefined;\r\n }\r\n }\r\n // Short-circuit for nullish coalescing: if a is not null/undefined, return a without evaluating b\r\n if (op === LispType.NullishCoalescing && a !== undefined && a !== null) {\r\n done(undefined, a);\r\n return;\r\n }\r\n let bobj = syncDone((d) => execSync(ticks, tree[2], scope, context, d, inLoopOrSwitch)).result;\r\n let b = bobj instanceof Prop ? bobj.get(context) : bobj;\r\n if (b === optional) {\r\n b = undefined;\r\n }\r\n performOp({\r\n op,\r\n exec: execSync,\r\n done,\r\n ticks,\r\n a,\r\n b,\r\n obj,\r\n context,\r\n scope,\r\n bobj,\r\n inLoopOrSwitch,\r\n tree,\r\n });\r\n }\r\n}\r\n\r\ntype OpsCallbackParams<a, b, obj, bobj> = {\r\n op: LispType;\r\n exec: Execution;\r\n a: a;\r\n b: b;\r\n obj: obj;\r\n bobj: bobj;\r\n ticks: Ticks;\r\n tree: LispItem;\r\n scope: Scope;\r\n context: IExecContext;\r\n done: Done;\r\n inLoopOrSwitch?: string;\r\n};\r\n\r\nfunction checkHaltExpectedTicks(\r\n params: OpsCallbackParams<any, any, any, any>,\r\n expectTicks = 0,\r\n): boolean {\r\n const sandbox = params.context.ctx.sandbox;\r\n const options = params.context.ctx.options;\r\n const { ticks, scope, context, done, op } = params;\r\n if (sandbox.halted) {\r\n const sub = sandbox.subscribeResume(() => {\r\n sub.unsubscribe();\r\n try {\r\n const o = ops.get(op);\r\n if (!o) {\r\n done(new SyntaxError('Unknown operator: ' + op));\r\n return;\r\n }\r\n o(params);\r\n } catch (err) {\r\n if (options.haltOnSandboxError && err instanceof SandboxError) {\r\n const sub = sandbox.subscribeResume(() => {\r\n sub.unsubscribe();\r\n done(err);\r\n });\r\n sandbox.haltExecution({\r\n error: err as Error,\r\n ticks,\r\n scope,\r\n context,\r\n });\r\n } else {\r\n done(err);\r\n }\r\n }\r\n });\r\n return true;\r\n } else if (ticks.tickLimit && ticks.tickLimit <= ticks.ticks + BigInt(expectTicks)) {\r\n const sub = sandbox.subscribeResume(() => {\r\n sub.unsubscribe();\r\n try {\r\n const o = ops.get(op);\r\n if (!o) {\r\n done(new SyntaxError('Unknown operator: ' + op));\r\n return;\r\n }\r\n o(params);\r\n } catch (err) {\r\n if (context.ctx.options.haltOnSandboxError && err instanceof SandboxError) {\r\n const sub = sandbox.subscribeResume(() => {\r\n sub.unsubscribe();\r\n done(err);\r\n });\r\n sandbox.haltExecution({\r\n error: err as Error,\r\n ticks,\r\n scope,\r\n context,\r\n });\r\n } else {\r\n done(err);\r\n }\r\n }\r\n });\r\n const error = new SandboxExecutionQuotaExceededError('Execution quota exceeded');\r\n sandbox.haltExecution({\r\n error,\r\n ticks,\r\n scope: scope,\r\n context,\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction performOp(params: OpsCallbackParams<any, any, any, any>) {\r\n const { done, op, ticks, context, scope } = params;\r\n ticks.ticks++;\r\n const sandbox = context.ctx.sandbox;\r\n\r\n if (checkHaltExpectedTicks(params)) {\r\n return;\r\n }\r\n\r\n try {\r\n const o = ops.get(op);\r\n if (!o) {\r\n done(new SandboxExecutionTreeError('Unknown operator: ' + op));\r\n return;\r\n }\r\n o(params);\r\n } catch (err) {\r\n if (context.ctx.options.haltOnSandboxError && err instanceof SandboxError) {\r\n const sub = sandbox.subscribeResume(() => {\r\n sub.unsubscribe();\r\n done(err);\r\n });\r\n sandbox.haltExecution({\r\n error: err as Error,\r\n ticks,\r\n scope,\r\n context,\r\n });\r\n } else {\r\n done(err);\r\n }\r\n }\r\n}\r\n\r\nconst unexecTypes = new Set([\r\n LispType.ArrowFunction,\r\n LispType.Function,\r\n LispType.InlineFunction,\r\n LispType.Loop,\r\n LispType.Try,\r\n LispType.Switch,\r\n LispType.IfCase,\r\n LispType.InlineIfCase,\r\n LispType.Typeof,\r\n]);\r\n\r\nfunction _execNoneRecurse<T = any>(\r\n ticks: Ticks,\r\n tree: LispItem,\r\n scope: Scope,\r\n context: IExecContext,\r\n done: Done<T>,\r\n isAsync: boolean,\r\n inLoopOrSwitch?: string,\r\n): boolean {\r\n const exec = isAsync ? execAsync : execSync;\r\n if (tree instanceof Prop) {\r\n done(undefined, tree.get(context));\r\n } else if (tree === optional) {\r\n done();\r\n } else if (Array.isArray(tree) && !isLisp(tree)) {\r\n if (tree[0] === LispType.None) {\r\n done();\r\n } else {\r\n execMany(ticks, exec, tree as Lisp[], done, scope, context, inLoopOrSwitch);\r\n }\r\n } else if (!isLisp(tree)) {\r\n done(undefined, tree);\r\n } else if (tree[0] === LispType.Block) {\r\n execMany(ticks, exec, tree[1] as Lisp[], done, scope, context, inLoopOrSwitch);\r\n } else if (tree[0] === LispType.Await) {\r\n if (!isAsync) {\r\n done(new SyntaxError(\"Illegal use of 'await', must be inside async function\"));\r\n } else if (context.ctx.prototypeWhitelist?.has(Promise.prototype)) {\r\n execAsync(\r\n ticks,\r\n tree[1],\r\n scope,\r\n context,\r\n async (...args: unknown[]) => {\r\n if (args.length === 1) done(args[0]);\r\n else\r\n try {\r\n done(undefined, (await valueOrProp(args[1], context)) as any);\r\n } catch (err) {\r\n done(err);\r\n }\r\n },\r\n inLoopOrSwitch,\r\n ).catch(done);\r\n } else {\r\n done(new SandboxCapabilityError('Async/await is not permitted'));\r\n }\r\n } else if (unexecTypes.has(tree[0])) {\r\n performOp({\r\n op: tree[0],\r\n exec,\r\n done,\r\n ticks,\r\n a: tree[1],\r\n b: tree[2],\r\n obj: tree,\r\n tree,\r\n context,\r\n scope,\r\n bobj: undefined,\r\n inLoopOrSwitch,\r\n });\r\n } else {\r\n return false;\r\n }\r\n return true;\r\n}\r\nexport function executeTree<T>(\r\n ticks: Ticks,\r\n context: IExecContext,\r\n executionTree: Lisp[],\r\n scopes: IScope[] = [],\r\n inLoopOrSwitch?: string,\r\n): ExecReturn<T> {\r\n return syncDone((done) =>\r\n executeTreeWithDone(execSync, done, ticks, context, executionTree, scopes, inLoopOrSwitch),\r\n ).result;\r\n}\r\n\r\nexport async function executeTreeAsync<T>(\r\n ticks: Ticks,\r\n context: IExecContext,\r\n executionTree: Lisp[],\r\n scopes: IScope[] = [],\r\n inLoopOrSwitch?: string,\r\n): Promise<ExecReturn<T>> {\r\n let ad: AsyncDoneRet;\r\n return (ad = asyncDone((done) =>\r\n executeTreeWithDone(execAsync, done, ticks, context, executionTree, scopes, inLoopOrSwitch),\r\n )).isInstant === true\r\n ? ad.instant\r\n : (await ad.p).result;\r\n}\r\n\r\nfunction executeTreeWithDone(\r\n exec: Execution,\r\n done: Done,\r\n ticks: Ticks,\r\n context: IExecContext,\r\n executionTree: Lisp[],\r\n scopes: IScope[] = [],\r\n inLoopOrSwitch?: string,\r\n) {\r\n if (!executionTree) {\r\n done();\r\n return;\r\n }\r\n if (!(executionTree instanceof Array)) {\r\n throw new SyntaxError('Bad execution tree');\r\n }\r\n let scope = context.ctx.globalScope;\r\n let s;\r\n while ((s = scopes.shift())) {\r\n if (typeof s !== 'object') continue;\r\n if (s instanceof Scope) {\r\n scope = s;\r\n } else {\r\n scope = new Scope(scope, s, s instanceof LocalScope ? undefined : null);\r\n }\r\n }\r\n if (context.ctx.options.audit && !context.ctx.auditReport) {\r\n context.ctx.auditReport = {\r\n globalsAccess: new Set(),\r\n prototypeAccess: {},\r\n };\r\n }\r\n if (exec === execSync) {\r\n _executeWithDoneSync(done, ticks, context, executionTree, scope, inLoopOrSwitch);\r\n } else {\r\n _executeWithDoneAsync(done, ticks, context, executionTree, scope, inLoopOrSwitch).catch(done);\r\n }\r\n}\r\n\r\nfunction _executeWithDoneSync(\r\n done: Done,\r\n ticks: Ticks,\r\n context: IExecContext,\r\n executionTree: Lisp[],\r\n scope: Scope,\r\n inLoopOrSwitch?: string,\r\n) {\r\n if (!(executionTree instanceof Array)) throw new SyntaxError('Bad execution tree');\r\n let i = 0;\r\n for (i = 0; i < executionTree.length; i++) {\r\n let res: unknown;\r\n let err: { error: unknown } | undefined;\r\n const current = executionTree[i];\r\n try {\r\n execSync(\r\n ticks,\r\n current,\r\n scope,\r\n context,\r\n (...args: unknown[]) => {\r\n if (args.length === 1) err = { error: args[0] };\r\n else res = args[1];\r\n },\r\n inLoopOrSwitch,\r\n );\r\n } catch (e) {\r\n err = { error: e };\r\n }\r\n if (err) {\r\n done(err.error);\r\n return;\r\n }\r\n if (res instanceof ExecReturn) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (isLisp(current) && current[0] === LispType.Return) {\r\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\r\n return;\r\n }\r\n }\r\n done(undefined, new ExecReturn(context.ctx.auditReport, undefined, false));\r\n}\r\n\r\nasync function _executeWithDoneAsync(\r\n done: Done,\r\n ticks: Ticks,\r\n context: IExecContext,\r\n executionTree: Lisp[],\r\n scope: Scope,\r\n inLoopOrSwitch?: string,\r\n) {\r\n if (!(executionTree instanceof Array)) throw new SyntaxError('Bad execution tree');\r\n let i = 0;\r\n for (i = 0; i < executionTree.length; i++) {\r\n let res: unknown;\r\n let err: { error: unknown } | undefined;\r\n const current = executionTree[i];\r\n try {\r\n await execAsync(\r\n ticks,\r\n current,\r\n scope,\r\n context,\r\n (...args: unknown[]) => {\r\n if (args.length === 1) err = { error: args[0] };\r\n else res = args[1];\r\n },\r\n inLoopOrSwitch,\r\n );\r\n } catch (e) {\r\n err = { error: e };\r\n }\r\n if (err) {\r\n done(err.error);\r\n return;\r\n }\r\n if (res instanceof ExecReturn) {\r\n done(undefined, res);\r\n return;\r\n }\r\n if (isLisp(current) && current[0] === LispType.Return) {\r\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\r\n return;\r\n }\r\n }\r\n done(undefined, new ExecReturn(context.ctx.auditReport, undefined, false));\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sources":["../src/executor.ts"],"sourcesContent":["import { LispItem, Lisp, IRegEx, SwitchCase } from './parser.js';\nimport {\n CodeString,\n hasOwnProperty,\n IAuditReport,\n IExecContext,\n IScope,\n isLisp,\n LispType,\n LocalScope,\n Prop,\n SandboxExecutionQuotaExceededError,\n SandboxError,\n SandboxExecutionTreeError,\n Scope,\n Ticks,\n VarType,\n SandboxCapabilityError,\n SandboxAccessError,\n} from './utils.js';\n\nexport type Done<T = any> = (err?: any, res?: T | typeof optional) => void;\n\nexport class ExecReturn<T> {\n constructor(\n public auditReport: IAuditReport | undefined,\n public result: T,\n public returned: boolean,\n public breakLoop = false,\n public continueLoop = false,\n ) {}\n}\n\nexport type Unknown = undefined | null | Record<string | number, unknown>;\n\nexport interface IChange {\n type: string;\n}\n\nexport interface ICreate extends IChange {\n type: 'create';\n prop: number | string;\n}\n\nexport interface IReplace extends IChange {\n type: 'replace';\n}\n\nexport interface IDelete extends IChange {\n type: 'delete';\n prop: number | string;\n}\n\nexport interface IReverse extends IChange {\n type: 'reverse';\n}\n\nexport interface ISort extends IChange {\n type: 'sort';\n}\n\nexport interface IPush extends IChange {\n type: 'push';\n added: unknown[];\n}\n\nexport interface IPop extends IChange {\n type: 'pop';\n removed: unknown[];\n}\n\nexport interface IShift extends IChange {\n type: 'shift';\n removed: unknown[];\n}\n\nexport interface IUnShift extends IChange {\n type: 'unshift';\n added: unknown[];\n}\n\nexport interface ISplice extends IChange {\n type: 'splice';\n startIndex: number;\n deleteCount: number;\n added: unknown[];\n removed: unknown[];\n}\n\nexport interface ICopyWithin extends IChange {\n type: 'copyWithin';\n startIndex: number;\n endIndex: number;\n added: unknown[];\n removed: unknown[];\n}\n\nexport type Change =\n | ICreate\n | IReplace\n | IDelete\n | IReverse\n | ISort\n | IPush\n | IPop\n | IUnShift\n | IShift\n | ISplice\n | ICopyWithin;\n\nconst optional = {};\n\nfunction generateArgs(argNames: string[], args: unknown[]) {\n const vars: Record<string, unknown> = {};\n argNames.forEach((arg, i) => {\n if (arg.startsWith('...')) {\n vars[arg.substring(3)] = args.slice(i);\n } else {\n vars[arg] = args[i];\n }\n });\n return vars;\n}\n\nexport function createFunction(\n argNames: string[],\n parsed: Lisp[],\n ticks: Ticks,\n context: IExecContext,\n scope?: Scope,\n name?: string,\n) {\n if (context.ctx.options.forbidFunctionCreation) {\n throw new SandboxCapabilityError('Function creation is forbidden');\n }\n let func;\n if (name === undefined) {\n func = (...args: unknown[]) => {\n const vars = generateArgs(argNames, args);\n const res = executeTree(\n ticks,\n context,\n parsed,\n scope === undefined ? [] : [new Scope(scope, vars)],\n );\n return res.result;\n };\n } else {\n func = function sandboxedObject(this: Unknown, ...args: unknown[]) {\n const vars = generateArgs(argNames, args);\n const res = executeTree(\n ticks,\n context,\n parsed,\n scope === undefined ? [] : [new Scope(scope, vars, this)],\n );\n return res.result;\n };\n }\n context.registerSandboxFunction(func);\n context.ctx.sandboxedFunctions.add(func);\n return func;\n}\n\nexport function createFunctionAsync(\n argNames: string[],\n parsed: Lisp[],\n ticks: Ticks,\n context: IExecContext,\n scope?: Scope,\n name?: string,\n) {\n if (context.ctx.options.forbidFunctionCreation) {\n throw new SandboxCapabilityError('Function creation is forbidden');\n }\n if (!context.ctx.prototypeWhitelist?.has(Promise.prototype)) {\n throw new SandboxCapabilityError('Async/await not permitted');\n }\n let func;\n if (name === undefined) {\n func = async (...args: unknown[]) => {\n const vars = generateArgs(argNames, args);\n const res = await executeTreeAsync(\n ticks,\n context,\n parsed,\n scope === undefined ? [] : [new Scope(scope, vars)],\n );\n return res.result;\n };\n } else {\n func = async function sandboxedObject(this: Unknown, ...args: unknown[]) {\n const vars = generateArgs(argNames, args);\n const res = await executeTreeAsync(\n ticks,\n context,\n parsed,\n scope === undefined ? [] : [new Scope(scope, vars, this)],\n );\n return res.result;\n };\n }\n context.registerSandboxFunction(func);\n context.ctx.sandboxedFunctions.add(func);\n return func;\n}\n\nexport function assignCheck(obj: Prop, context: IExecContext, op = 'assign') {\n if (obj.context === undefined) {\n throw new ReferenceError(`Cannot ${op} value to undefined.`);\n }\n if (obj.isConst) {\n throw new TypeError(`Assignment to constant variable.`);\n }\n if (obj.isGlobal) {\n throw new SandboxAccessError(\n `Cannot ${op} property '${obj.prop.toString()}' of a global object`,\n );\n }\n if (obj.context === null) {\n throw new TypeError('Cannot set properties of null');\n }\n if (\n typeof (obj.context as any)[obj.prop] === 'function' &&\n !hasOwnProperty(obj.context, obj.prop)\n ) {\n throw new SandboxAccessError(\n `Override prototype property '${obj.prop.toString()}' not allowed`,\n );\n }\n if (op === 'delete') {\n if (hasOwnProperty(obj.context, obj.prop)) {\n context.changeSubscriptions\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop.toString() }));\n context.changeSubscriptionsGlobal\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop.toString() }));\n }\n } else if (hasOwnProperty(obj.context, obj.prop)) {\n context.setSubscriptions\n .get(obj.context)\n ?.get(obj.prop.toString())\n ?.forEach((cb) =>\n cb({\n type: 'replace',\n }),\n );\n context.setSubscriptionsGlobal\n .get(obj.context)\n ?.get(obj.prop.toString())\n ?.forEach((cb) =>\n cb({\n type: 'replace',\n }),\n );\n } else {\n context.changeSubscriptions\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'create', prop: obj.prop.toString() }));\n context.changeSubscriptionsGlobal\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'create', prop: obj.prop.toString() }));\n }\n}\nconst arrayChange = new Set([\n [].push,\n [].pop,\n [].shift,\n [].unshift,\n [].splice,\n [].reverse,\n [].sort,\n [].copyWithin,\n]);\n\nexport class KeyVal {\n constructor(\n public key: string | SpreadObject,\n public val: unknown,\n ) {}\n}\n\nexport class SpreadObject {\n constructor(public item: { [key: string]: unknown }) {}\n}\n\nexport class SpreadArray {\n constructor(public item: unknown[]) {}\n}\n\nexport class If {\n constructor(\n public t: Lisp,\n public f: Lisp,\n ) {}\n}\n\nconst literalRegex = /(\\$\\$)*(\\$)?\\${(\\d+)}/g;\ntype OpCallback<a, b, obj, bobj> = (params: OpsCallbackParams<a, b, obj, bobj>) => void;\n\nexport const ops = new Map<LispType, OpCallback<any, any, any, any>>();\nexport function addOps<a = unknown, b = unknown, obj = unknown, bobj = unknown>(\n type: LispType,\n cb: OpCallback<a, b, obj, bobj>,\n) {\n ops.set(type, cb);\n}\n\nconst prorptyKeyTypes = ['string', 'number', 'symbol'];\n\nfunction isPropertyKey(val: unknown): val is PropertyKey {\n return prorptyKeyTypes.includes(typeof val);\n}\n\nfunction hasPossibleProperties(val: unknown): val is {} {\n return val !== null && val !== undefined;\n}\n\naddOps<unknown, PropertyKey>(LispType.Prop, ({ done, a, b, obj, context, scope }) => {\n if (a === null) {\n throw new TypeError(`Cannot read properties of null (reading '${b?.toString()}')`);\n }\n\n if (!isPropertyKey(b)) {\n b = `${b}`;\n }\n\n if (a === undefined && obj === undefined && typeof b === 'string') {\n // is variable access\n const prop = scope.get(b);\n if (prop.context === context.ctx.sandboxGlobal) {\n if (context.ctx.options.audit) {\n context.ctx.auditReport?.globalsAccess.add(b);\n }\n }\n const val = prop.context ? (prop.context as any)[prop.prop] : undefined;\n const p = getGlobalProp(val, context, prop) || prop;\n\n done(undefined, p);\n return;\n } else if (a === undefined) {\n throw new TypeError(`Cannot read properties of undefined (reading '${b.toString()}')`);\n }\n\n if (!hasPossibleProperties(a)) {\n done(undefined, new Prop(undefined, b));\n return;\n }\n\n const prototypeAccess = typeof a === 'function' || !hasOwnProperty(a, b);\n\n if (context.ctx.options.audit && prototypeAccess) {\n let prot: {} = Object.getPrototypeOf(a);\n do {\n if (hasOwnProperty(prot, b)) {\n if (\n context.ctx.auditReport &&\n !context.ctx.auditReport.prototypeAccess[prot.constructor.name]\n ) {\n context.ctx.auditReport.prototypeAccess[prot.constructor.name] = new Set();\n }\n context.ctx.auditReport?.prototypeAccess[prot.constructor.name].add(b);\n }\n } while ((prot = Object.getPrototypeOf(prot)));\n }\n\n if (prototypeAccess) {\n if (typeof a === 'function') {\n if (hasOwnProperty(a, b)) {\n const whitelist = context.ctx.prototypeWhitelist.get(a.prototype);\n const replace = context.ctx.options.prototypeReplacements.get(a);\n if (replace) {\n done(undefined, new Prop(replace(a, true), b));\n return;\n }\n if (\n !(whitelist && (!whitelist.size || whitelist.has(b))) &&\n !context.ctx.sandboxedFunctions.has(a)\n ) {\n throw new SandboxAccessError(\n `Static method or property access not permitted: ${a.name}.${b.toString()}`,\n );\n }\n }\n }\n\n // Fast path: check own properties of `a` first (handles static methods like Body.json)\n if (hasOwnProperty(a, b)) {\n const replace = context.ctx.options.prototypeReplacements.get(a as Function);\n if (replace) {\n done(undefined, new Prop(replace(a as object, true), b));\n return;\n }\n if (context.ctx.sandboxedFunctions.has(a as Function)) {\n done(undefined, new Prop(a, b, false, false));\n return;\n }\n // Check if constructor or any ancestor is whitelisted\n let ctorProt: {} | null = (a as Function).prototype;\n while (ctorProt !== null) {\n const whitelist = context.ctx.prototypeWhitelist.get(ctorProt as Function);\n if (whitelist && (!whitelist.size || whitelist.has(b))) {\n done(undefined, new Prop(a, b, false, false));\n return;\n }\n ctorProt = Object.getPrototypeOf(ctorProt);\n }\n if (typeof a === 'function') {\n // Constructor not whitelisted, throw\n throw new SandboxAccessError(\n `Method or property access not permitted: ${(a as Function).name}.${b.toString()}`,\n );\n }\n }\n\n let prot: {} = a;\n while ((prot = Object.getPrototypeOf(prot))) {\n if (hasOwnProperty(prot, b) || b === '__proto__') {\n const replace = context.ctx.options.prototypeReplacements.get(prot.constructor);\n if (replace) {\n done(undefined, new Prop(replace(a, false), b));\n return;\n }\n if (context.ctx.sandboxedFunctions.has(prot.constructor)) {\n break;\n }\n // Check if this constructor or any ancestor in its prototype chain is whitelisted\n let ctorProt: {} | null = prot.constructor;\n let whitelisted = false;\n while (ctorProt !== null) {\n const whitelist = context.ctx.prototypeWhitelist.get(ctorProt as Function);\n if (whitelist && (!whitelist.size || whitelist.has(b))) {\n whitelisted = true;\n break;\n }\n ctorProt = Object.getPrototypeOf(ctorProt);\n }\n if (whitelisted) {\n break;\n }\n if (b === '__proto__') {\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\n }\n throw new SandboxAccessError(\n `Method or property access not permitted: ${prot.constructor.name}.${b.toString()}`,\n );\n }\n }\n }\n\n const val = a[b as keyof typeof a] as unknown;\n if (typeof a === 'function') {\n if (b === 'prototype' && !context.ctx.sandboxedFunctions.has(a)) {\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\n }\n }\n\n if (b === '__proto__' && !context.ctx.sandboxedFunctions.has(val?.constructor as any)) {\n throw new SandboxAccessError(`Access to prototype of global object is not permitted`);\n }\n\n const p = getGlobalProp(val, context, new Prop(a, b, false, false));\n if (p) {\n done(undefined, p);\n return;\n }\n\n const g =\n (obj instanceof Prop && obj.isGlobal) ||\n (typeof a === 'function' && !context.ctx.sandboxedFunctions.has(a)) ||\n context.ctx.globalsWhitelist.has(a);\n\n done(undefined, new Prop(a, b, false, g, false));\n});\n\nfunction getGlobalProp(val: unknown, context: IExecContext, prop?: Prop) {\n if (!val) return;\n const isFunc = typeof val === 'function';\n if (val instanceof Prop) {\n if (!prop) {\n prop = val;\n }\n val = val.get(context);\n }\n const p = prop?.prop || 'prop';\n if (val === globalThis) {\n return new Prop(\n {\n [p]: context.ctx.sandboxGlobal,\n },\n p,\n prop?.isConst || false,\n false,\n prop?.isVariable || false,\n );\n }\n const evl = isFunc && context.evals.get(val as Function);\n if (evl) {\n return new Prop(\n {\n [p]: evl,\n },\n p,\n prop?.isConst || false,\n true,\n prop?.isVariable || false,\n );\n }\n}\n\nfunction sanitizeArray<T>(val: T, context: IExecContext, cache = new WeakSet<object>()): T {\n if (!Array.isArray(val)) return val;\n if (cache.has(val)) return val;\n cache.add(val);\n for (let i = 0; i < val.length; i++) {\n const item = val[i];\n if (item === globalThis) {\n val[i] = context.ctx.sandboxGlobal;\n } else if (typeof item === 'function') {\n const replacement = context.evals.get(item);\n if (replacement) {\n val[i] = replacement;\n }\n } else {\n sanitizeArray(item, context, cache);\n }\n }\n return val;\n}\n\naddOps<unknown, Lisp[], any>(LispType.Call, ({ done, a, b, obj, context }) => {\n if (context.ctx.options.forbidFunctionCalls)\n throw new SandboxCapabilityError('Function invocations are not allowed');\n if (typeof a !== 'function') {\n throw new TypeError(\n `${typeof obj?.prop === 'symbol' ? 'Symbol' : obj?.prop} is not a function`,\n );\n }\n const vals = b\n .map((item) => {\n if (item instanceof SpreadArray) {\n return [...item.item];\n } else {\n return [item];\n }\n })\n .flat()\n .map((item) => valueOrProp(item, context));\n\n if (typeof obj === 'function') {\n const evl = context.evals.get(obj);\n let ret = evl ? evl(obj, ...vals) : obj(...vals);\n ret = getGlobalProp(ret, context) || ret;\n sanitizeArray(ret, context);\n // If the function returns a Promise, await it before signaling completion.\n // Without this, `done(undefined, promise)` resolves the outer await immediately,\n // but the Promise itself is still pending — causing async ops to be skipped.\n if (ret != null && typeof ret.then === 'function') {\n ret.then(\n (resolved: unknown) => { done(undefined, resolved); },\n (err: unknown) => { done(err); }\n );\n } else {\n done(undefined, ret);\n }\n return;\n }\n if (obj.context[obj.prop] === JSON.stringify && context.getSubscriptions.size) {\n const cache = new Set<any>();\n const recurse = (x: unknown) => {\n if (!x || !(typeof x === 'object') || cache.has(x)) return;\n cache.add(x);\n for (const y of Object.keys(x) as (keyof typeof x)[]) {\n context.getSubscriptions.forEach((cb) => cb(x, y));\n recurse(x[y]);\n }\n };\n recurse(vals[0]);\n }\n\n if (\n obj.context instanceof Array &&\n arrayChange.has(obj.context[obj.prop]) &&\n (context.changeSubscriptions.get(obj.context) ||\n context.changeSubscriptionsGlobal.get(obj.context))\n ) {\n let change: Change;\n let changed = false;\n if (obj.prop === 'push') {\n change = {\n type: 'push',\n added: vals,\n };\n changed = !!vals.length;\n } else if (obj.prop === 'pop') {\n change = {\n type: 'pop',\n removed: obj.context.slice(-1),\n };\n changed = !!change.removed.length;\n } else if (obj.prop === 'shift') {\n change = {\n type: 'shift',\n removed: obj.context.slice(0, 1),\n };\n changed = !!change.removed.length;\n } else if (obj.prop === 'unshift') {\n change = {\n type: 'unshift',\n added: vals,\n };\n changed = !!vals.length;\n } else if (obj.prop === 'splice') {\n change = {\n type: 'splice',\n startIndex: vals[0] as number,\n deleteCount: vals[1] === undefined ? obj.context.length : vals[1],\n added: vals.slice(2),\n removed: obj.context.slice(\n vals[0],\n vals[1] === undefined ? undefined : (vals[0] as number) + (vals[1] as number),\n ),\n };\n changed = !!change.added.length || !!change.removed.length;\n } else if (obj.prop === 'reverse' || obj.prop === 'sort') {\n change = { type: obj.prop };\n changed = !!obj.context.length;\n } else if (obj.prop === 'copyWithin') {\n const len =\n vals[2] === undefined\n ? obj.context.length - (vals[1] as number)\n : Math.min(obj.context.length, (vals[2] as number) - (vals[1] as number));\n change = {\n type: 'copyWithin',\n startIndex: vals[0] as number,\n endIndex: (vals[0] as number) + len,\n added: obj.context.slice(vals[1] as number, (vals[1] as number) + len),\n removed: obj.context.slice(vals[0] as number, (vals[0] as number) + len),\n };\n changed = !!change.added.length || !!change.removed.length;\n }\n if (changed) {\n context.changeSubscriptions.get(obj.context)?.forEach((cb) => cb(change));\n context.changeSubscriptionsGlobal.get(obj.context)?.forEach((cb) => cb(change));\n }\n }\n obj.get(context);\n const evl = context.evals.get(obj.context[obj.prop] as any);\n let ret = evl ? evl(obj.context[obj.prop], ...vals) : (obj.context[obj.prop](...vals) as unknown);\n ret = getGlobalProp(ret, context) || ret;\n sanitizeArray(ret, context);\n done(undefined, ret);\n});\n\naddOps<unknown, KeyVal[]>(LispType.CreateObject, ({ done, b }) => {\n let res = {} as any;\n for (const item of b) {\n if (item.key instanceof SpreadObject) {\n res = { ...res, ...item.key.item };\n } else {\n res[item.key] = item.val;\n }\n }\n done(undefined, res);\n});\n\naddOps<string, LispItem>(LispType.KeyVal, ({ done, a, b }) => done(undefined, new KeyVal(a, b)));\n\naddOps<unknown, Lisp[]>(LispType.CreateArray, ({ done, b, context }) => {\n const items = b\n .map((item) => {\n if (item instanceof SpreadArray) {\n return [...item.item];\n } else {\n return [item];\n }\n })\n .flat()\n .map((item) => valueOrProp(item, context));\n done(undefined, items);\n});\n\naddOps<unknown, unknown>(LispType.Group, ({ done, b }) => done(undefined, b));\n\naddOps<unknown, string>(LispType.GlobalSymbol, ({ done, b }) => {\n switch (b) {\n case 'true':\n return done(undefined, true);\n case 'false':\n return done(undefined, false);\n case 'null':\n return done(undefined, null);\n case 'undefined':\n return done(undefined, undefined);\n case 'NaN':\n return done(undefined, NaN);\n case 'Infinity':\n return done(undefined, Infinity);\n }\n done(new Error('Unknown symbol: ' + b));\n});\n\naddOps<unknown, string>(LispType.Number, ({ done, b }) =>\n done(undefined, Number(b.replace(/_/g, ''))),\n);\naddOps<unknown, string>(LispType.BigInt, ({ done, b }) =>\n done(undefined, BigInt(b.replace(/_/g, ''))),\n);\naddOps<unknown, string>(LispType.StringIndex, ({ done, b, context }) =>\n done(undefined, context.constants.strings[parseInt(b)]),\n);\n\naddOps<unknown, string>(LispType.RegexIndex, ({ done, b, context }) => {\n const reg: IRegEx = context.constants.regexes[parseInt(b)];\n if (!context.ctx.globalsWhitelist.has(RegExp)) {\n throw new SandboxCapabilityError('Regex not permitted');\n } else {\n done(undefined, new RegExp(reg.regex, reg.flags));\n }\n});\n\naddOps<unknown, string>(LispType.LiteralIndex, ({ exec, done, ticks, b, context, scope }) => {\n const item = context.constants.literals[parseInt(b)];\n const [, name, js] = item;\n const found: Lisp[] = [];\n let f: RegExpExecArray | null;\n const resnums: string[] = [];\n while ((f = literalRegex.exec(name))) {\n if (!f[2]) {\n found.push(js[parseInt(f[3], 10)]);\n resnums.push(f[3]);\n }\n }\n\n exec<unknown[]>(ticks, found, scope, context, (...args: unknown[]) => {\n const reses: Record<string, unknown> = {};\n if (args.length === 1) {\n done(args[0]);\n return;\n }\n const processed = args[1];\n for (const i of Object.keys(processed!) as (keyof typeof processed)[]) {\n const num = resnums[i];\n reses[num] = processed![i];\n }\n done(\n undefined,\n name.replace(/(\\\\\\\\)*(\\\\)?\\${(\\d+)}/g, (match, $$, $, num) => {\n if ($) return match;\n const res = reses[num];\n return ($$ ? $$ : '') + `${valueOrProp(res, context)}`;\n }),\n );\n });\n});\n\naddOps<unknown, unknown[]>(LispType.SpreadArray, ({ done, b }) => {\n done(undefined, new SpreadArray(b));\n});\n\naddOps<unknown, Record<string, unknown>>(LispType.SpreadObject, ({ done, b }) => {\n done(undefined, new SpreadObject(b));\n});\n\naddOps<unknown, unknown>(LispType.Not, ({ done, b }) => done(undefined, !b));\naddOps<unknown, number>(LispType.Inverse, ({ done, b }) => done(undefined, ~b));\n\naddOps<unknown, unknown, Prop<any>>(LispType.IncrementBefore, ({ done, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, ++obj.context[obj.prop]);\n});\n\naddOps<unknown, unknown, Prop<any>>(LispType.IncrementAfter, ({ done, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, obj.context[obj.prop]++);\n});\n\naddOps<unknown, unknown, Prop<any>>(LispType.DecrementBefore, ({ done, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, --obj.context[obj.prop]);\n});\n\naddOps<unknown, unknown, Prop<any>>(LispType.DecrementAfter, ({ done, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, obj.context[obj.prop]--);\n});\n\naddOps<unknown, unknown, Prop<any>, Prop<any>>(\n LispType.Assign,\n ({ done, b, obj, context, scope, bobj }) => {\n assignCheck(obj, context);\n obj.isGlobal = bobj?.isGlobal || false;\n if (obj.isVariable) {\n const s = scope.getWhereValScope(obj.prop as string, obj.prop === 'this');\n if (s === null) {\n throw new ReferenceError(`Cannot assign to undeclared variable '${obj.prop.toString()}'`);\n }\n s.set(obj.prop as string, b);\n if (obj.isGlobal) {\n s.globals[obj.prop.toString()] = true;\n } else {\n delete s.globals[obj.prop.toString()];\n }\n done(undefined, b);\n return;\n }\n done(undefined, (obj.context[obj.prop] = b));\n },\n);\n\naddOps<unknown, unknown, Prop<any>>(LispType.AddEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] += b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.SubractEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] -= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.DivideEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] /= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.MultiplyEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] *= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.PowerEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] **= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.ModulusEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] %= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.BitNegateEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] ^= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.BitAndEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] &= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.BitOrEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] |= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.ShiftLeftEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] <<= b));\n});\n\naddOps<unknown, number, Prop<any>>(LispType.ShiftRightEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] >>= b));\n});\n\naddOps<unknown, number, Prop<any>>(\n LispType.UnsignedShiftRightEquals,\n ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] >>>= b));\n },\n);\n\naddOps<unknown, unknown, Prop<any>>(LispType.AndEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] &&= b));\n});\n\naddOps<unknown, unknown, Prop<any>>(LispType.OrEquals, ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] ||= b));\n});\n\naddOps<unknown, unknown, Prop<any>>(\n LispType.NullishCoalescingEquals,\n ({ done, b, obj, context }) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] ??= b));\n },\n);\n\naddOps<number, number>(LispType.LargerThan, ({ done, a, b }) => done(undefined, a > b));\naddOps<number, number>(LispType.SmallerThan, ({ done, a, b }) => done(undefined, a < b));\naddOps<number, number>(LispType.LargerEqualThan, ({ done, a, b }) => done(undefined, a >= b));\naddOps<number, number>(LispType.SmallerEqualThan, ({ done, a, b }) => done(undefined, a <= b));\naddOps<number, number>(LispType.Equal, ({ done, a, b }) => done(undefined, a == b));\naddOps<number, number>(LispType.StrictEqual, ({ done, a, b }) => done(undefined, a === b));\naddOps<number, number>(LispType.NotEqual, ({ done, a, b }) => done(undefined, a != b));\naddOps<number, number>(LispType.StrictNotEqual, ({ done, a, b }) => done(undefined, a !== b));\naddOps<number, number>(LispType.And, ({ done, a, b }) => done(undefined, a && b));\naddOps<number, number>(LispType.Or, ({ done, a, b }) => done(undefined, a || b));\naddOps<number, number>(LispType.NullishCoalescing, ({ done, a, b }) => done(undefined, a ?? b));\naddOps<number, number>(LispType.BitAnd, ({ done, a, b }) => done(undefined, a & b));\naddOps<number, number>(LispType.BitOr, ({ done, a, b }) => done(undefined, a | b));\naddOps<number, number>(LispType.Plus, ({ done, a, b }) => done(undefined, a + b));\naddOps<number, number>(LispType.Minus, ({ done, a, b }) => done(undefined, a - b));\naddOps<number, number>(LispType.Positive, ({ done, b }) => done(undefined, +b));\naddOps<number, number>(LispType.Negative, ({ done, b }) => done(undefined, -b));\naddOps<number, number>(LispType.Divide, ({ done, a, b }) => done(undefined, a / b));\naddOps<number, number>(LispType.Power, ({ done, a, b }) => done(undefined, a ** b));\naddOps<number, number>(LispType.BitNegate, ({ done, a, b }) => done(undefined, a ^ b));\naddOps<number, number>(LispType.Multiply, ({ done, a, b }) => done(undefined, a * b));\naddOps<number, number>(LispType.Modulus, ({ done, a, b }) => done(undefined, a % b));\naddOps<number, number>(LispType.BitShiftLeft, ({ done, a, b }) => done(undefined, a << b));\naddOps<number, number>(LispType.BitShiftRight, ({ done, a, b }) => done(undefined, a >> b));\naddOps<number, number>(LispType.BitUnsignedShiftRight, ({ done, a, b }) =>\n done(undefined, a >>> b),\n);\naddOps<unknown, LispItem>(LispType.Typeof, ({ exec, done, ticks, b, context, scope }) => {\n exec(ticks, b, scope, context, (e, prop) => {\n done(undefined, typeof valueOrProp(prop, context));\n });\n});\n\naddOps<unknown, { new (): unknown }>(LispType.Instanceof, ({ done, a, b }) =>\n done(undefined, a instanceof b),\n);\naddOps<string, {}>(LispType.In, ({ done, a, b }) => done(undefined, a in b));\n\naddOps<unknown, unknown>(LispType.Delete, ({ done, context, bobj }) => {\n if (!(bobj instanceof Prop)) {\n done(undefined, true);\n return;\n }\n assignCheck(bobj, context, 'delete');\n if (bobj.isVariable) {\n done(undefined, false);\n return;\n }\n done(undefined, delete (bobj.context as any)?.[bobj.prop]);\n});\n\naddOps(LispType.Return, ({ done, b }) => done(undefined, b));\n\naddOps<string, unknown, unknown, Prop>(LispType.Var, ({ done, a, b, scope, bobj }) => {\n done(undefined, scope.declare(a, VarType.var, b, bobj?.isGlobal || false));\n});\n\naddOps<string, unknown, unknown, Prop>(LispType.Let, ({ done, a, b, scope, bobj }) => {\n done(undefined, scope.declare(a, VarType.let, b, bobj?.isGlobal || false));\n});\n\naddOps<string, unknown, unknown, Prop>(LispType.Const, ({ done, a, b, scope, bobj }) => {\n done(undefined, scope.declare(a, VarType.const, b, bobj?.isGlobal || false));\n});\n\naddOps<string[], Lisp[], Lisp>(\n LispType.ArrowFunction,\n ({ done, ticks, a, b, obj, context, scope }) => {\n a = [...a];\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\n if (context.allowJit && context.evalContext) {\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\n } else {\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\n }\n }\n if (a.shift()) {\n done(undefined, createFunctionAsync(a, b, ticks, context, scope));\n } else {\n done(undefined, createFunction(a, b, ticks, context, scope));\n }\n },\n);\n\naddOps<(string | LispType)[], Lisp[], Lisp>(\n LispType.Function,\n ({ done, ticks, a, b, obj, context, scope }) => {\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\n if (context.allowJit && context.evalContext) {\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\n } else {\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\n }\n }\n const isAsync = a.shift();\n const name = a.shift() as string;\n let func;\n if (isAsync === LispType.True) {\n func = createFunctionAsync(a as string[], b, ticks, context, scope, name);\n } else {\n func = createFunction(a as string[], b, ticks, context, scope, name);\n }\n if (name) {\n scope.declare(name, VarType.var, func);\n }\n done(undefined, func);\n },\n);\n\naddOps<(string | LispType)[], Lisp[], Lisp>(\n LispType.InlineFunction,\n ({ done, ticks, a, b, obj, context, scope }) => {\n if (typeof obj[2] === 'string' || obj[2] instanceof CodeString) {\n if (context.allowJit && context.evalContext) {\n obj[2] = b = context.evalContext.lispifyFunction(new CodeString(obj[2]), context.constants);\n } else {\n throw new SandboxCapabilityError('Unevaluated code detected, JIT not allowed');\n }\n }\n const isAsync = a.shift();\n const name = a.shift() as string;\n if (name) {\n scope = new Scope(scope, {});\n }\n let func;\n if (isAsync === LispType.True) {\n func = createFunctionAsync(a as string[], b, ticks, context, scope, name);\n } else {\n func = createFunction(a as string[], b, ticks, context, scope, name);\n }\n if (name) {\n scope.declare(name, VarType.let, func);\n }\n done(undefined, func);\n },\n);\n\naddOps<Lisp[], Lisp[]>(LispType.Loop, ({ exec, done, ticks, a, b, context, scope }) => {\n const [checkFirst, startInternal, getIterator, startStep, step, condition, beforeStep] = a;\n let loop = true;\n const loopScope = new Scope(scope, {});\n const internalVars = {\n $$obj: undefined,\n };\n const interalScope = new Scope(loopScope, internalVars);\n if (exec === execAsync) {\n (async () => {\n let ad: AsyncDoneRet;\n ad = asyncDone((d) => exec(ticks, startStep, loopScope, context, d));\n internalVars['$$obj'] =\n (ad = asyncDone((d) => exec(ticks, getIterator, loopScope, context, d))).isInstant === true\n ? ad.instant\n : (await ad.p).result;\n ad = asyncDone((d) => exec(ticks, startInternal, interalScope, context, d));\n if (checkFirst)\n loop =\n (ad = asyncDone((d) => exec(ticks, condition, interalScope, context, d))).isInstant ===\n true\n ? ad.instant\n : (await ad.p).result;\n while (loop) {\n const innerLoopVars = {};\n ad = asyncDone((d) =>\n exec(ticks, beforeStep, new Scope(interalScope, innerLoopVars), context, d),\n );\n ad.isInstant === true ? ad.instant : (await ad.p).result;\n const res = await executeTreeAsync(\n ticks,\n context,\n b,\n [new Scope(loopScope, innerLoopVars)],\n 'loop',\n );\n if (res instanceof ExecReturn && res.returned) {\n done(undefined, res);\n return;\n }\n if (res instanceof ExecReturn && res.breakLoop) {\n break;\n }\n ad = asyncDone((d) => exec(ticks, step, interalScope, context, d));\n loop =\n (ad = asyncDone((d) => exec(ticks, condition, interalScope, context, d))).isInstant ===\n true\n ? ad.instant\n : (await ad.p).result;\n }\n done();\n })().catch(done);\n } else {\n syncDone((d) => exec(ticks, startStep, loopScope, context, d));\n internalVars['$$obj'] = syncDone((d) => exec(ticks, getIterator, loopScope, context, d)).result;\n syncDone((d) => exec(ticks, startInternal, interalScope, context, d));\n if (checkFirst) loop = syncDone((d) => exec(ticks, condition, interalScope, context, d)).result;\n while (loop) {\n const innerLoopVars = {};\n syncDone((d) => exec(ticks, beforeStep, new Scope(interalScope, innerLoopVars), context, d));\n const res = executeTree(ticks, context, b, [new Scope(loopScope, innerLoopVars)], 'loop');\n if (res instanceof ExecReturn && res.returned) {\n done(undefined, res);\n return;\n }\n if (res instanceof ExecReturn && res.breakLoop) {\n break;\n }\n syncDone((d) => exec(ticks, step, interalScope, context, d));\n loop = syncDone((d) => exec(ticks, condition, interalScope, context, d)).result;\n }\n done();\n }\n});\n\naddOps<LispItem, LispItem>(LispType.LoopAction, ({ done, a, context, inLoopOrSwitch }) => {\n if ((inLoopOrSwitch === 'switch' && a === 'continue') || !inLoopOrSwitch) {\n throw new TypeError('Illegal ' + a + ' statement');\n }\n done(\n undefined,\n new ExecReturn(context.ctx.auditReport, undefined, false, a === 'break', a === 'continue'),\n );\n});\n\naddOps<LispItem, If>(LispType.If, ({ exec, done, ticks, a, b, context, scope, inLoopOrSwitch }) => {\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done, inLoopOrSwitch);\n});\n\naddOps<LispItem, If>(LispType.InlineIf, ({ exec, done, ticks, a, b, context, scope }) => {\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done, undefined);\n});\n\naddOps<Lisp, Lisp>(LispType.InlineIfCase, ({ done, a, b }) => done(undefined, new If(a, b)));\naddOps<Lisp, Lisp>(LispType.IfCase, ({ done, a, b }) => done(undefined, new If(a, b)));\n\naddOps<LispItem, SwitchCase[]>(LispType.Switch, ({ exec, done, ticks, a, b, context, scope }) => {\n exec(ticks, a, scope, context, (...args: unknown[]) => {\n if (args.length === 1) {\n done(args[0]);\n return;\n }\n let toTest = args[1];\n toTest = valueOrProp(toTest, context);\n if (exec === execSync) {\n let res: ExecReturn<unknown>;\n let isTrue = false;\n for (const caseItem of b) {\n if (\n isTrue ||\n (isTrue =\n !caseItem[1] ||\n toTest ===\n valueOrProp(\n syncDone((d) => exec(ticks, caseItem[1], scope, context, d)).result,\n context,\n ))\n ) {\n if (!caseItem[2]) continue;\n res = executeTree(ticks, context, caseItem[2], [scope], 'switch');\n if (res.breakLoop) break;\n if (res.returned) {\n done(undefined, res);\n return;\n }\n if (!caseItem[1]) {\n // default case\n break;\n }\n }\n }\n done();\n } else {\n (async () => {\n let res: ExecReturn<unknown>;\n let isTrue = false;\n for (const caseItem of b) {\n let ad: AsyncDoneRet;\n if (\n isTrue ||\n (isTrue =\n !caseItem[1] ||\n toTest ===\n valueOrProp(\n (ad = asyncDone((d) => exec(ticks, caseItem[1], scope, context, d))).isInstant ===\n true\n ? ad.instant\n : (await ad.p).result,\n context,\n ))\n ) {\n if (!caseItem[2]) continue;\n res = await executeTreeAsync(ticks, context, caseItem[2], [scope], 'switch');\n if (res.breakLoop) break;\n if (res.returned) {\n done(undefined, res);\n return;\n }\n if (!caseItem[1]) {\n // default case\n break;\n }\n }\n }\n done();\n })().catch(done);\n }\n });\n});\n\naddOps<Lisp[], [string, Lisp[], Lisp[]]>(\n LispType.Try,\n ({ exec, done, ticks, a, b, context, scope, inLoopOrSwitch }) => {\n const [exception, catchBody, finallyBody] = b;\n\n // Execute try block\n executeTreeWithDone(\n exec,\n (...tryArgs: unknown[]) => {\n const tryHadError = tryArgs.length === 1;\n const tryError = tryHadError ? tryArgs[0] : undefined;\n const tryResult = !tryHadError && tryArgs.length > 1 ? tryArgs[1] : undefined;\n\n // Handler to execute finally and complete\n const executeFinallyAndComplete = (hadError: boolean, errorOrResult: unknown) => {\n if (finallyBody && finallyBody.length > 0) {\n // Execute finally block\n executeTreeWithDone(\n exec,\n (...finallyArgs: unknown[]) => {\n const finallyHadError = finallyArgs.length === 1;\n const finallyResult =\n !finallyHadError && finallyArgs.length > 1 ? finallyArgs[1] : undefined;\n\n // If finally throws an error, it overrides everything\n if (finallyHadError) {\n done(finallyArgs[0]);\n return;\n }\n\n // If finally has a control flow statement (return/break/continue), it overrides everything\n if (\n finallyResult instanceof ExecReturn &&\n (finallyResult.returned || finallyResult.breakLoop || finallyResult.continueLoop)\n ) {\n done(undefined, finallyResult);\n return;\n }\n\n // Otherwise, return the original try/catch result/error\n if (hadError) {\n done(errorOrResult);\n } else if (errorOrResult instanceof ExecReturn) {\n // If try/catch returned or has some other control flow, pass that through\n if (\n errorOrResult.returned ||\n errorOrResult.breakLoop ||\n errorOrResult.continueLoop\n ) {\n done(undefined, errorOrResult);\n } else {\n // Normal completion - don't return a value\n done();\n }\n } else {\n // Try/catch completed normally, just signal completion with no return value\n done();\n }\n },\n ticks,\n context,\n finallyBody,\n [new Scope(scope, {})],\n inLoopOrSwitch,\n );\n } else {\n // No finally block, just return result/error\n if (hadError) {\n done(errorOrResult);\n } else if (errorOrResult instanceof ExecReturn) {\n // If try/catch returned or has some other control flow, pass that through\n if (errorOrResult.returned || errorOrResult.breakLoop || errorOrResult.continueLoop) {\n done(undefined, errorOrResult);\n } else {\n // Normal completion - don't return a value\n done();\n }\n } else {\n done();\n }\n }\n };\n\n // If try had an error and there's a catch block, execute catch\n if (tryHadError && catchBody && catchBody.length > 0) {\n const sc: Record<string, unknown> = {};\n if (exception) sc[exception] = tryError;\n\n executeTreeWithDone(\n exec,\n (...catchArgs: unknown[]) => {\n const catchHadError = catchArgs.length === 1;\n const catchErrorOrResult = catchHadError\n ? catchArgs[0]\n : catchArgs.length > 1\n ? catchArgs[1]\n : undefined;\n\n // Execute finally with catch result\n executeFinallyAndComplete(catchHadError, catchErrorOrResult);\n },\n ticks,\n context,\n catchBody,\n [new Scope(scope, sc)],\n inLoopOrSwitch,\n );\n } else {\n // No catch or no error, execute finally with try result\n executeFinallyAndComplete(tryHadError, tryHadError ? tryError : tryResult);\n }\n },\n ticks,\n context,\n a,\n [new Scope(scope)],\n inLoopOrSwitch,\n );\n },\n);\n\naddOps(LispType.Void, ({ done }) => {\n done();\n});\naddOps<new (...args: unknown[]) => unknown, unknown[]>(LispType.New, ({ done, a, b, context }) => {\n if (!context.ctx.globalsWhitelist.has(a) && !context.ctx.sandboxedFunctions.has(a)) {\n throw new SandboxAccessError(`Object construction not allowed: ${a.constructor.name}`);\n }\n done(undefined, new a(...b));\n});\n\naddOps(LispType.Throw, ({ done, b }) => {\n done(b);\n});\naddOps<unknown[]>(LispType.Expression, ({ done, a }) => done(undefined, a.pop()));\naddOps(LispType.None, ({ done }) => done());\n\nfunction valueOrProp(a: unknown, context: IExecContext): unknown {\n if (a instanceof Prop) return a.get(context);\n if (a === optional) return undefined;\n return a;\n}\n\nexport function execMany(\n ticks: Ticks,\n exec: Execution,\n tree: Lisp[],\n done: Done,\n scope: Scope,\n context: IExecContext,\n inLoopOrSwitch?: string,\n) {\n if (exec === execSync) {\n _execManySync(ticks, tree, done, scope, context, inLoopOrSwitch);\n } else {\n _execManyAsync(ticks, tree, done, scope, context, inLoopOrSwitch).catch(done);\n }\n}\n\nfunction _execManySync(\n ticks: Ticks,\n tree: Lisp[],\n done: Done,\n scope: Scope,\n context: IExecContext,\n inLoopOrSwitch?: string,\n) {\n const ret: any[] = [];\n for (let i = 0; i < tree.length; i++) {\n let res = syncDone((d) => execSync(ticks, tree[i], scope, context, d, inLoopOrSwitch)).result;\n if (res instanceof ExecReturn && (res.returned || res.breakLoop || res.continueLoop)) {\n done(undefined, res);\n return;\n }\n if (isLisp(tree[i]) && tree[i][0] === LispType.Return) {\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\n return;\n }\n ret.push(res);\n }\n done(undefined, ret);\n}\n\nasync function _execManyAsync(\n ticks: Ticks,\n tree: Lisp[],\n done: Done,\n scope: Scope,\n context: IExecContext,\n inLoopOrSwitch?: string,\n) {\n const ret: any[] = [];\n for (let i = 0; i < tree.length; i++) {\n let res;\n try {\n let ad: AsyncDoneRet;\n res =\n (ad = asyncDone((d) => execAsync(ticks, tree[i], scope, context, d, inLoopOrSwitch)))\n .isInstant === true\n ? ad.instant\n : (await ad.p).result;\n } catch (e) {\n done(e);\n return;\n }\n if (res instanceof ExecReturn && (res.returned || res.breakLoop || res.continueLoop)) {\n done(undefined, res);\n return;\n }\n if (isLisp(tree[i]) && tree[i][0] === LispType.Return) {\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\n return;\n }\n ret.push(res);\n }\n done(undefined, ret);\n}\n\ntype Execution = <T = any>(\n ticks: Ticks,\n tree: LispItem,\n scope: Scope,\n context: IExecContext,\n done: Done<T>,\n inLoopOrSwitch?: string,\n) => void;\n\nexport interface AsyncDoneRet {\n isInstant: boolean;\n instant: any;\n p: Promise<{ result: any }>;\n}\n\nexport function asyncDone(callback: (done: Done) => void): AsyncDoneRet {\n let isInstant = false;\n let instant: unknown;\n const p = new Promise<any>((resolve, reject) => {\n callback((...args: unknown[]) => {\n if (args.length === 1) reject(args[0]);\n else {\n isInstant = true;\n instant = args[1];\n resolve({ result: args[1] });\n }\n });\n });\n return {\n isInstant,\n instant,\n p,\n };\n}\n\nexport function syncDone(callback: (done: Done) => void): { result: any } {\n let result;\n let err: { error: unknown } | undefined;\n callback((...args: unknown[]) => {\n err = args.length === 1 ? { error: args[0] } : undefined;\n result = args[1];\n });\n if (err) throw err.error;\n return { result };\n}\n\nexport async function execAsync<T = any>(\n ticks: Ticks,\n tree: LispItem,\n scope: Scope,\n context: IExecContext,\n doneOriginal: Done<T>,\n inLoopOrSwitch?: string,\n): Promise<void> {\n let done: Done<T> = doneOriginal;\n const p = new Promise<void>((resolve) => {\n done = (...args: unknown[]) => {\n doneOriginal(...args);\n resolve();\n };\n });\n if (!_execNoneRecurse(ticks, tree, scope, context, done, true, inLoopOrSwitch) && isLisp(tree)) {\n let op = tree[0];\n let obj;\n try {\n let ad: AsyncDoneRet;\n obj =\n (ad = asyncDone((d) => execAsync(ticks, tree[1], scope, context, d, inLoopOrSwitch)))\n .isInstant === true\n ? ad.instant\n : (await ad.p).result;\n } catch (e) {\n done(e);\n return;\n }\n let a = obj;\n try {\n a = obj instanceof Prop ? obj.get(context) : obj;\n } catch (e) {\n done(e);\n return;\n }\n if (op === LispType.PropOptional || op === LispType.CallOptional) {\n if (a === undefined || a === null) {\n done(undefined, optional);\n return;\n }\n op = op === LispType.PropOptional ? LispType.Prop : LispType.Call;\n }\n if (a === optional) {\n if (op === LispType.Prop || op === LispType.Call) {\n done(undefined, a);\n return;\n } else {\n a = undefined;\n }\n }\n // Short-circuit for nullish coalescing: if a is not null/undefined, return a without evaluating b\n if (op === LispType.NullishCoalescing && a !== undefined && a !== null) {\n done(undefined, a);\n return;\n }\n let bobj;\n try {\n let ad: AsyncDoneRet;\n bobj =\n (ad = asyncDone((d) => execAsync(ticks, tree[2], scope, context, d, inLoopOrSwitch)))\n .isInstant === true\n ? ad.instant\n : (await ad.p).result;\n } catch (e) {\n done(e);\n return;\n }\n let b = bobj;\n try {\n b = bobj instanceof Prop ? bobj.get(context) : bobj;\n } catch (e) {\n done(e);\n return;\n }\n if (b === optional) {\n b = undefined;\n }\n performOp({\n op,\n exec: execAsync,\n done,\n ticks,\n a,\n b,\n obj,\n context,\n scope,\n bobj,\n inLoopOrSwitch,\n tree,\n });\n }\n await p;\n}\n\nexport function execSync<T = any>(\n ticks: Ticks,\n tree: LispItem,\n scope: Scope,\n context: IExecContext,\n done: Done<T>,\n inLoopOrSwitch?: string,\n) {\n if (!_execNoneRecurse(ticks, tree, scope, context, done, false, inLoopOrSwitch) && isLisp(tree)) {\n let op = tree[0];\n let obj = syncDone((d) => execSync(ticks, tree[1], scope, context, d, inLoopOrSwitch)).result;\n let a = obj instanceof Prop ? obj.get(context) : obj;\n if (op === LispType.PropOptional || op === LispType.CallOptional) {\n if (a === undefined || a === null) {\n done(undefined, optional);\n return;\n }\n op = op === LispType.PropOptional ? LispType.Prop : LispType.Call;\n }\n if (a === optional) {\n if (op === LispType.Prop || op === LispType.Call) {\n done(undefined, a);\n return;\n } else {\n a = undefined;\n }\n }\n // Short-circuit for nullish coalescing: if a is not null/undefined, return a without evaluating b\n if (op === LispType.NullishCoalescing && a !== undefined && a !== null) {\n done(undefined, a);\n return;\n }\n let bobj = syncDone((d) => execSync(ticks, tree[2], scope, context, d, inLoopOrSwitch)).result;\n let b = bobj instanceof Prop ? bobj.get(context) : bobj;\n if (b === optional) {\n b = undefined;\n }\n performOp({\n op,\n exec: execSync,\n done,\n ticks,\n a,\n b,\n obj,\n context,\n scope,\n bobj,\n inLoopOrSwitch,\n tree,\n });\n }\n}\n\ntype OpsCallbackParams<a, b, obj, bobj> = {\n op: LispType;\n exec: Execution;\n a: a;\n b: b;\n obj: obj;\n bobj: bobj;\n ticks: Ticks;\n tree: LispItem;\n scope: Scope;\n context: IExecContext;\n done: Done;\n inLoopOrSwitch?: string;\n};\n\nfunction checkHaltExpectedTicks(\n params: OpsCallbackParams<any, any, any, any>,\n expectTicks = 0,\n): boolean {\n const sandbox = params.context.ctx.sandbox;\n const options = params.context.ctx.options;\n const { ticks, scope, context, done, op } = params;\n if (sandbox.halted) {\n const sub = sandbox.subscribeResume(() => {\n sub.unsubscribe();\n try {\n const o = ops.get(op);\n if (!o) {\n done(new SyntaxError('Unknown operator: ' + op));\n return;\n }\n o(params);\n } catch (err) {\n if (options.haltOnSandboxError && err instanceof SandboxError) {\n const sub = sandbox.subscribeResume(() => {\n sub.unsubscribe();\n done(err);\n });\n sandbox.haltExecution({\n error: err as Error,\n ticks,\n scope,\n context,\n });\n } else {\n done(err);\n }\n }\n });\n return true;\n } else if (ticks.tickLimit && ticks.tickLimit <= ticks.ticks + BigInt(expectTicks)) {\n const sub = sandbox.subscribeResume(() => {\n sub.unsubscribe();\n try {\n const o = ops.get(op);\n if (!o) {\n done(new SyntaxError('Unknown operator: ' + op));\n return;\n }\n o(params);\n } catch (err) {\n if (context.ctx.options.haltOnSandboxError && err instanceof SandboxError) {\n const sub = sandbox.subscribeResume(() => {\n sub.unsubscribe();\n done(err);\n });\n sandbox.haltExecution({\n error: err as Error,\n ticks,\n scope,\n context,\n });\n } else {\n done(err);\n }\n }\n });\n const error = new SandboxExecutionQuotaExceededError('Execution quota exceeded');\n sandbox.haltExecution({\n error,\n ticks,\n scope: scope,\n context,\n });\n return true;\n }\n return false;\n}\n\nfunction performOp(params: OpsCallbackParams<any, any, any, any>) {\n const { done, op, ticks, context, scope } = params;\n ticks.ticks++;\n const sandbox = context.ctx.sandbox;\n\n if (checkHaltExpectedTicks(params)) {\n return;\n }\n\n try {\n const o = ops.get(op);\n if (!o) {\n done(new SandboxExecutionTreeError('Unknown operator: ' + op));\n return;\n }\n o(params);\n } catch (err) {\n if (context.ctx.options.haltOnSandboxError && err instanceof SandboxError) {\n const sub = sandbox.subscribeResume(() => {\n sub.unsubscribe();\n done(err);\n });\n sandbox.haltExecution({\n error: err as Error,\n ticks,\n scope,\n context,\n });\n } else {\n done(err);\n }\n }\n}\n\nconst unexecTypes = new Set([\n LispType.ArrowFunction,\n LispType.Function,\n LispType.InlineFunction,\n LispType.Loop,\n LispType.Try,\n LispType.Switch,\n LispType.IfCase,\n LispType.InlineIfCase,\n LispType.Typeof,\n]);\n\nfunction _execNoneRecurse<T = any>(\n ticks: Ticks,\n tree: LispItem,\n scope: Scope,\n context: IExecContext,\n done: Done<T>,\n isAsync: boolean,\n inLoopOrSwitch?: string,\n): boolean {\n const exec = isAsync ? execAsync : execSync;\n if (tree instanceof Prop) {\n done(undefined, tree.get(context));\n } else if (tree === optional) {\n done();\n } else if (Array.isArray(tree) && !isLisp(tree)) {\n if (tree[0] === LispType.None) {\n done();\n } else {\n execMany(ticks, exec, tree as Lisp[], done, scope, context, inLoopOrSwitch);\n }\n } else if (!isLisp(tree)) {\n done(undefined, tree);\n } else if (tree[0] === LispType.Block) {\n execMany(ticks, exec, tree[1] as Lisp[], done, scope, context, inLoopOrSwitch);\n } else if (tree[0] === LispType.Await) {\n if (!isAsync) {\n done(new SyntaxError(\"Illegal use of 'await', must be inside async function\"));\n } else if (context.ctx.prototypeWhitelist?.has(Promise.prototype)) {\n execAsync(\n ticks,\n tree[1],\n scope,\n context,\n async (...args: unknown[]) => {\n if (args.length === 1) done(args[0]);\n else\n try {\n done(undefined, (await valueOrProp(args[1], context)) as any);\n } catch (err) {\n done(err);\n }\n },\n inLoopOrSwitch,\n ).catch(done);\n } else {\n done(new SandboxCapabilityError('Async/await is not permitted'));\n }\n } else if (unexecTypes.has(tree[0])) {\n performOp({\n op: tree[0],\n exec,\n done,\n ticks,\n a: tree[1],\n b: tree[2],\n obj: tree,\n tree,\n context,\n scope,\n bobj: undefined,\n inLoopOrSwitch,\n });\n } else {\n return false;\n }\n return true;\n}\nexport function executeTree<T>(\n ticks: Ticks,\n context: IExecContext,\n executionTree: Lisp[],\n scopes: IScope[] = [],\n inLoopOrSwitch?: string,\n): ExecReturn<T> {\n return syncDone((done) =>\n executeTreeWithDone(execSync, done, ticks, context, executionTree, scopes, inLoopOrSwitch),\n ).result;\n}\n\nexport async function executeTreeAsync<T>(\n ticks: Ticks,\n context: IExecContext,\n executionTree: Lisp[],\n scopes: IScope[] = [],\n inLoopOrSwitch?: string,\n): Promise<ExecReturn<T>> {\n let ad: AsyncDoneRet;\n return (ad = asyncDone((done) =>\n executeTreeWithDone(execAsync, done, ticks, context, executionTree, scopes, inLoopOrSwitch),\n )).isInstant === true\n ? ad.instant\n : (await ad.p).result;\n}\n\nfunction executeTreeWithDone(\n exec: Execution,\n done: Done,\n ticks: Ticks,\n context: IExecContext,\n executionTree: Lisp[],\n scopes: IScope[] = [],\n inLoopOrSwitch?: string,\n) {\n if (!executionTree) {\n done();\n return;\n }\n if (!(executionTree instanceof Array)) {\n throw new SyntaxError('Bad execution tree');\n }\n let scope = context.ctx.globalScope;\n let s;\n while ((s = scopes.shift())) {\n if (typeof s !== 'object') continue;\n if (s instanceof Scope) {\n scope = s;\n } else {\n scope = new Scope(scope, s, s instanceof LocalScope ? undefined : null);\n }\n }\n if (context.ctx.options.audit && !context.ctx.auditReport) {\n context.ctx.auditReport = {\n globalsAccess: new Set(),\n prototypeAccess: {},\n };\n }\n if (exec === execSync) {\n _executeWithDoneSync(done, ticks, context, executionTree, scope, inLoopOrSwitch);\n } else {\n _executeWithDoneAsync(done, ticks, context, executionTree, scope, inLoopOrSwitch).catch(done);\n }\n}\n\nfunction _executeWithDoneSync(\n done: Done,\n ticks: Ticks,\n context: IExecContext,\n executionTree: Lisp[],\n scope: Scope,\n inLoopOrSwitch?: string,\n) {\n if (!(executionTree instanceof Array)) throw new SyntaxError('Bad execution tree');\n let i = 0;\n for (i = 0; i < executionTree.length; i++) {\n let res: unknown;\n let err: { error: unknown } | undefined;\n const current = executionTree[i];\n try {\n execSync(\n ticks,\n current,\n scope,\n context,\n (...args: unknown[]) => {\n if (args.length === 1) err = { error: args[0] };\n else res = args[1];\n },\n inLoopOrSwitch,\n );\n } catch (e) {\n err = { error: e };\n }\n if (err) {\n done(err.error);\n return;\n }\n if (res instanceof ExecReturn) {\n done(undefined, res);\n return;\n }\n if (isLisp(current) && current[0] === LispType.Return) {\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\n return;\n }\n }\n done(undefined, new ExecReturn(context.ctx.auditReport, undefined, false));\n}\n\nasync function _executeWithDoneAsync(\n done: Done,\n ticks: Ticks,\n context: IExecContext,\n executionTree: Lisp[],\n scope: Scope,\n inLoopOrSwitch?: string,\n) {\n if (!(executionTree instanceof Array)) throw new SyntaxError('Bad execution tree');\n let i = 0;\n for (i = 0; i < executionTree.length; i++) {\n let res: unknown;\n let err: { error: unknown } | undefined;\n const current = executionTree[i];\n try {\n await execAsync(\n ticks,\n current,\n scope,\n context,\n (...args: unknown[]) => {\n if (args.length === 1) err = { error: args[0] };\n else res = args[1];\n },\n inLoopOrSwitch,\n );\n } catch (e) {\n err = { error: e };\n }\n if (err) {\n done(err.error);\n return;\n }\n if (res instanceof ExecReturn) {\n done(undefined, res);\n return;\n }\n if (isLisp(current) && current[0] === LispType.Return) {\n done(undefined, new ExecReturn(context.ctx.auditReport, res, true));\n return;\n }\n }\n done(undefined, new ExecReturn(context.ctx.auditReport, undefined, false));\n}\n"],"names":[],"mappings":"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"}