@nyariv/sandboxjs 0.8.22 → 0.8.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.eslintignore +6 -0
  2. package/.eslintrc.js +22 -0
  3. package/.prettierrc +4 -0
  4. package/.vscode/settings.json +4 -0
  5. package/build/Sandbox.d.ts +11 -78
  6. package/build/Sandbox.js +21 -216
  7. package/build/SandboxExec.d.ts +25 -0
  8. package/build/SandboxExec.js +169 -0
  9. package/build/eval.d.ts +18 -0
  10. package/build/eval.js +43 -0
  11. package/build/executor.d.ts +56 -95
  12. package/build/executor.js +739 -815
  13. package/build/parser.d.ts +112 -74
  14. package/build/parser.js +504 -542
  15. package/build/unraw.js +13 -16
  16. package/build/utils.d.ts +242 -0
  17. package/build/utils.js +276 -0
  18. package/dist/Sandbox.d.ts +11 -78
  19. package/dist/Sandbox.js +106 -1
  20. package/dist/Sandbox.js.map +1 -1
  21. package/dist/Sandbox.min.js +1 -1
  22. package/dist/Sandbox.min.js.map +1 -1
  23. package/dist/SandboxExec.d.ts +25 -0
  24. package/dist/SandboxExec.js +173 -0
  25. package/dist/SandboxExec.js.map +1 -0
  26. package/dist/SandboxExec.min.js +2 -0
  27. package/dist/SandboxExec.min.js.map +1 -0
  28. package/dist/eval.d.ts +18 -0
  29. package/dist/executor.d.ts +56 -95
  30. package/dist/executor.js +1270 -0
  31. package/dist/executor.js.map +1 -0
  32. package/dist/node/Sandbox.d.ts +11 -78
  33. package/dist/node/Sandbox.js +37 -3091
  34. package/dist/node/SandboxExec.d.ts +25 -0
  35. package/dist/node/SandboxExec.js +176 -0
  36. package/dist/node/eval.d.ts +18 -0
  37. package/dist/node/executor.d.ts +56 -95
  38. package/dist/node/executor.js +1289 -0
  39. package/dist/node/parser.d.ts +112 -74
  40. package/dist/node/parser.js +1528 -0
  41. package/dist/node/utils.d.ts +242 -0
  42. package/dist/node/utils.js +290 -0
  43. package/dist/parser.d.ts +112 -74
  44. package/dist/parser.js +1514 -0
  45. package/dist/parser.js.map +1 -0
  46. package/dist/utils.d.ts +242 -0
  47. package/dist/utils.js +279 -0
  48. package/dist/utils.js.map +1 -0
  49. package/package.json +22 -14
  50. package/.github/workflows/npm-publish.yml +0 -34
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sources":["../src/executor.ts"],"sourcesContent":["import { LispItem, Lisp, IRegEx, LispFamily, ExtractLispOp, SwitchCase } from './parser.js';\nimport {\n CodeString,\n IAuditReport,\n IExecContext,\n IScope,\n isLisp,\n LispType,\n LocalScope,\n Prop,\n SandboxError,\n Scope,\n Ticks,\n VarType,\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 const sandboxedFunctions = new WeakSet();\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 SandboxError('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 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 SandboxError('Function creation is forbidden');\n }\n if (!context.ctx.prototypeWhitelist?.has(Promise.prototype)) {\n throw new SandboxError('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 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 (typeof obj.context !== 'object' && typeof obj.context !== 'function') {\n throw new SyntaxError(`Cannot ${op} value to a primitive.`);\n }\n if (obj.isConst) {\n throw new TypeError(`Cannot set value to const variable '${obj.prop}'`);\n }\n if (obj.isGlobal) {\n throw new SandboxError(`Cannot ${op} property '${obj.prop}' of a global object`);\n }\n if (obj.context === null) {\n throw new TypeError('Cannot set properties of null');\n }\n if (typeof obj.context[obj.prop] === 'function' && !obj.context.hasOwnProperty(obj.prop)) {\n throw new SandboxError(`Override prototype property '${obj.prop}' not allowed`);\n }\n if (op === 'delete') {\n if (obj.context.hasOwnProperty(obj.prop)) {\n context.changeSubscriptions\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop }));\n context.changeSubscriptionsGlobal\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'delete', prop: obj.prop }));\n }\n } else if (obj.context.hasOwnProperty(obj.prop)) {\n context.setSubscriptions\n .get(obj.context)\n ?.get(obj.prop)\n ?.forEach((cb) =>\n cb({\n type: 'replace',\n })\n );\n context.setSubscriptionsGlobal\n .get(obj.context)\n ?.get(obj.prop)\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 }));\n context.changeSubscriptionsGlobal\n .get(obj.context)\n ?.forEach((cb) => cb({ type: 'create', prop: obj.prop }));\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(public key: string | SpreadObject, public val: unknown) {}\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(public t: Lisp, public f: Lisp) {}\n}\n\nconst literalRegex = /(\\$\\$)*(\\$)?\\${(\\d+)}/g;\ntype OpCallback = (\n exec: Execution,\n done: Done,\n ticks: Ticks,\n a: any,\n b: any,\n obj: any,\n context: IExecContext,\n scope: Scope,\n bobj?: any,\n inLoopOrSwitch?: string\n) => void;\n\nexport const ops = new Map<LispType, OpCallback>();\nexport function addOps<Type extends LispFamily>(type: ExtractLispOp<Type>, cb: OpCallback) {\n ops.set(type, cb);\n}\n\naddOps(LispType.Prop, (exec, done, ticks, a, b: string, obj, context, scope) => {\n if (a === null) {\n throw new TypeError(`Cannot get property ${b} of null`);\n }\n const type = typeof a;\n if (type === 'undefined' && obj === undefined) {\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 const rep = context.ctx.globalsWhitelist.has(context.ctx.sandboxGlobal[b])\n ? context.evals.get(context.ctx.sandboxGlobal[b])\n : undefined;\n if (rep) {\n done(undefined, rep);\n return;\n }\n }\n if (prop.context && prop.context[b] === globalThis) {\n done(undefined, context.ctx.globalScope.get('this'));\n return;\n }\n\n done(undefined, prop);\n return;\n } else if (a === undefined) {\n throw new SandboxError(\"Cannot get property '\" + b + \"' of undefined\");\n }\n\n if (type !== 'object') {\n if (type === 'number') {\n a = new Number(a);\n } else if (type === 'string') {\n a = new String(a);\n } else if (type === 'boolean') {\n a = new Boolean(a);\n }\n } else if (typeof a.hasOwnProperty === 'undefined') {\n done(undefined, new Prop(undefined, b));\n return;\n }\n\n const isFunction = type === 'function';\n const prototypeAccess = isFunction || !(a.hasOwnProperty(b) || typeof b === 'number');\n\n if (context.ctx.options.audit && prototypeAccess) {\n if (typeof b === 'string') {\n let prot = Object.getPrototypeOf(a);\n do {\n if (prot.hasOwnProperty(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\n if (prototypeAccess) {\n if (isFunction) {\n if (!['name', 'length', 'constructor'].includes(b) && (a.hasOwnProperty(b) || b === '__proto__')) {\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 (!(whitelist && (!whitelist.size || whitelist.has(b)))) {\n throw new SandboxError(`Static method or property access not permitted: ${a.name}.${b}`);\n }\n }\n } else if (b !== 'constructor') {\n let prot = a;\n while ((prot = Object.getPrototypeOf(prot))) {\n if (prot.hasOwnProperty(b)) {\n const whitelist = context.ctx.prototypeWhitelist.get(prot);\n const replace = context.ctx.options.prototypeReplacements.get(prot.constuctor);\n if (replace) {\n done(undefined, new Prop(replace(a, false), b));\n return;\n }\n if (whitelist && (!whitelist.size || whitelist.has(b))) {\n break;\n }\n throw new SandboxError(\n `Method or property access not permitted: ${prot.constructor.name}.${b}`\n );\n }\n }\n }\n }\n\n if (context.evals.has(a[b])) {\n done(undefined, context.evals.get(a[b]));\n return;\n }\n if (a[b] === globalThis) {\n done(undefined, context.ctx.globalScope.get('this'));\n return;\n }\n\n const g =\n obj.isGlobal ||\n (isFunction && !sandboxedFunctions.has(a)) ||\n context.ctx.globalsWhitelist.has(a);\n\n done(undefined, new Prop(a, b, false, g));\n});\n\naddOps(LispType.Call, (exec, done, ticks, a, b: Lisp[], obj, context) => {\n if (context.ctx.options.forbidFunctionCalls)\n throw new SandboxError('Function invocations are not allowed');\n if (typeof a !== 'function') {\n throw new TypeError(`${typeof obj.prop === 'symbol' ? 'Symbol' : obj.prop} is not a function`);\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 done(undefined, obj(...vals));\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],\n deleteCount: vals[1] === undefined ? obj.context.length : vals[1],\n added: vals.slice(2),\n removed: obj.context.slice(vals[0], vals[1] === undefined ? undefined : vals[0] + vals[1]),\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]\n : Math.min(obj.context.length, vals[2] - vals[1]);\n change = {\n type: 'copyWithin',\n startIndex: vals[0],\n endIndex: vals[0] + len,\n added: obj.context.slice(vals[1], vals[1] + len),\n removed: obj.context.slice(vals[0], vals[0] + 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 done(undefined, obj.context[obj.prop](...vals));\n});\n\naddOps(LispType.CreateObject, (exec, done, ticks, a, b: KeyVal[]) => {\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(LispType.KeyVal, (exec, done, ticks, a: string, b: LispItem) =>\n done(undefined, new KeyVal(a, b))\n);\n\naddOps(LispType.CreateArray, (exec, done, ticks, a, b: Lisp[], obj, 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(LispType.Group, (exec, done, ticks, a, b) => done(undefined, b));\n\naddOps(LispType.GlobalSymbol, (exec, done, ticks, a, b: string) => {\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(LispType.Number, (exec, done, ticks, a, b) => done(undefined, Number(b)));\naddOps(LispType.BigInt, (exec, done, ticks, a, b) => done(undefined, BigInt(b)));\naddOps(LispType.StringIndex, (exec, done, ticks, a, b: string, obj, context) =>\n done(undefined, context.constants.strings[parseInt(b)])\n);\n\naddOps(LispType.RegexIndex, (exec, done, ticks, a, b: string, obj, context) => {\n const reg: IRegEx = context.constants.regexes[parseInt(b)];\n if (!context.ctx.globalsWhitelist.has(RegExp)) {\n throw new SandboxError('Regex not permitted');\n } else {\n done(undefined, new RegExp(reg.regex, reg.flags));\n }\n});\n\naddOps(LispType.LiteralIndex, (exec, done, ticks, a, b: string, obj, 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, (err, processed) => {\n const reses: Record<string, unknown> = {};\n if (err) {\n done(err);\n return;\n }\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(LispType.SpreadArray, (exec, done, ticks, a, b) => {\n done(undefined, new SpreadArray(b));\n});\n\naddOps(LispType.SpreadObject, (exec, done, ticks, a, b) => {\n done(undefined, new SpreadObject(b));\n});\n\naddOps(LispType.Not, (exec, done, ticks, a, b) => done(undefined, !b));\naddOps(LispType.Inverse, (exec, done, ticks, a, b) => done(undefined, ~b));\n\naddOps(LispType.IncrementBefore, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, ++obj.context[obj.prop]);\n});\n\naddOps(LispType.IncrementAfter, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, obj.context[obj.prop]++);\n});\n\naddOps(LispType.DecrementBefore, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, --obj.context[obj.prop]);\n});\n\naddOps(LispType.DecrementAfter, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, obj.context[obj.prop]--);\n});\n\naddOps(LispType.Assign, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] = b));\n});\n\naddOps(LispType.AddEquals, (exec, done, ticks, a, b, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] += b));\n});\n\naddOps(LispType.SubractEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] -= b));\n});\n\naddOps(LispType.DivideEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] /= b));\n});\n\naddOps(LispType.MultiplyEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] *= b));\n});\n\naddOps(LispType.PowerEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] **= b));\n});\n\naddOps(LispType.ModulusEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] %= b));\n});\n\naddOps(LispType.BitNegateEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] ^= b));\n});\n\naddOps(LispType.BitAndEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] &= b));\n});\n\naddOps(LispType.BitOrEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] |= b));\n});\n\naddOps(LispType.ShiftLeftEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] <<= b));\n});\n\naddOps(LispType.ShiftRightEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] >>= b));\n});\n\naddOps(LispType.UnsignedShiftRightEquals, (exec, done, ticks, a, b: number, obj, context) => {\n assignCheck(obj, context);\n done(undefined, (obj.context[obj.prop] >>= b));\n});\n\naddOps(LispType.LargerThan, (exec, done, ticks, a, b) => done(undefined, a > b));\naddOps(LispType.SmallerThan, (exec, done, ticks, a, b) => done(undefined, a < b));\naddOps(LispType.LargerEqualThan, (exec, done, ticks, a, b) => done(undefined, a >= b));\naddOps(LispType.SmallerEqualThan, (exec, done, ticks, a, b) => done(undefined, a <= b));\naddOps(LispType.Equal, (exec, done, ticks, a, b) => done(undefined, a == b));\naddOps(LispType.StrictEqual, (exec, done, ticks, a, b) => done(undefined, a === b));\naddOps(LispType.NotEqual, (exec, done, ticks, a, b) => done(undefined, a != b));\naddOps(LispType.StrictNotEqual, (exec, done, ticks, a, b) => done(undefined, a !== b));\naddOps(LispType.And, (exec, done, ticks, a, b) => done(undefined, a && b));\naddOps(LispType.Or, (exec, done, ticks, a, b) => done(undefined, a || b));\naddOps(LispType.BitAnd, (exec, done, ticks, a: number, b: number) => done(undefined, a & b));\naddOps(LispType.BitOr, (exec, done, ticks, a: number, b: number) => done(undefined, a | b));\naddOps(LispType.Plus, (exec, done, ticks, a: number, b: number) => done(undefined, a + b));\naddOps(LispType.Minus, (exec, done, ticks, a: number, b: number) => done(undefined, a - b));\naddOps(LispType.Positive, (exec, done, ticks, a, b) => done(undefined, +b));\naddOps(LispType.Negative, (exec, done, ticks, a, b) => done(undefined, -b));\naddOps(LispType.Divide, (exec, done, ticks, a: number, b: number) => done(undefined, a / b));\naddOps(LispType.BitNegate, (exec, done, ticks, a: number, b: number) => done(undefined, a ^ b));\naddOps(LispType.Multiply, (exec, done, ticks, a: number, b: number) => done(undefined, a * b));\naddOps(LispType.Modulus, (exec, done, ticks, a: number, b: number) => done(undefined, a % b));\naddOps(LispType.BitShiftLeft, (exec, done, ticks, a: number, b: number) => done(undefined, a << b));\naddOps(LispType.BitShiftRight, (exec, done, ticks, a: number, b: number) =>\n done(undefined, a >> b)\n);\naddOps(LispType.BitUnsignedShiftRight, (exec, done, ticks, a: number, b: number) =>\n done(undefined, a >>> b)\n);\naddOps(LispType.Typeof, (exec, done, ticks, a, b: LispItem, obj, context, scope) => {\n exec(ticks, b, scope, context, (e, prop) => {\n done(undefined, typeof valueOrProp(prop, context));\n });\n});\n\naddOps(LispType.Instanceof, (exec, done, ticks, a, b: { new (): unknown }) =>\n done(undefined, a instanceof b)\n);\naddOps(LispType.In, (exec, done, ticks, a: string, b) => done(undefined, a in b));\n\naddOps(LispType.Delete, (exec, done, ticks, a, b, obj, context, scope, bobj: Prop) => {\n if (bobj.context === undefined) {\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?.[bobj.prop]);\n});\n\naddOps(LispType.Return, (exec, done, ticks, a, b) => done(undefined, b));\n\naddOps(LispType.Var, (exec, done, ticks, a: string, b: LispItem, obj, context, scope) => {\n done(undefined, scope.declare(a, VarType.var, b));\n});\n\naddOps(LispType.Let, (exec, done, ticks, a: string, b: LispItem, obj, context, scope, bobj) => {\n done(undefined, scope.declare(a, VarType.let, b, bobj && bobj.isGlobal));\n});\n\naddOps(LispType.Const, (exec, done, ticks, a: string, b: LispItem, obj, context, scope) => {\n done(undefined, scope.declare(a, VarType.const, b));\n});\n\naddOps(\n LispType.ArrowFunction,\n (exec, done, ticks, a: string[], b: Lisp[], obj: Lisp, 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 SandboxError('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(\n LispType.Function,\n (exec, done, ticks, a: (string | LispType)[], b: Lisp[], obj: Lisp, 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 SandboxError('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(\n LispType.InlineFunction,\n (exec, done, ticks, a: (string | LispType)[], b: Lisp[], obj: Lisp, 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 SandboxError('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(LispType.Loop, (exec, done, ticks, a: Lisp[], b: Lisp[], obj, 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(\n LispType.LoopAction,\n (exec, done, ticks, a: LispItem, b: LispItem, obj, context, scope, bobj, inLoopOrSwitch) => {\n if ((inLoopOrSwitch === 'switch' && a === 'continue') || !inLoopOrSwitch) {\n throw new SandboxError('Illegal ' + a + ' statement');\n }\n done(\n undefined,\n new ExecReturn(context.ctx.auditReport, undefined, false, a === 'break', a === 'continue')\n );\n }\n);\n\naddOps(\n LispType.If,\n (exec, done, ticks, a: LispItem, b: If, obj, context, scope) => {\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done);\n }\n);\n\naddOps(LispType.InlineIf, (exec, done, ticks, a: LispItem, b: If, obj, context, scope) => {\n exec(ticks, valueOrProp(a, context) ? b.t : b.f, scope, context, done);\n});\naddOps(LispType.InlineIfCase, (exec, done, ticks, a, b) => done(undefined, new If(a, b)));\naddOps(LispType.IfCase, (exec, done, ticks, a, b) => done(undefined, new If(a, b)));\n\naddOps(LispType.Switch, (exec, done, ticks, a: LispItem, b: SwitchCase[], obj, context, scope) => {\n exec(ticks, a, scope, context, (err, toTest) => {\n if (err) {\n done(err);\n return;\n }\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(\n LispType.Try,\n (\n exec,\n done,\n ticks,\n a: Lisp[],\n b: [string, Lisp[], Lisp[]],\n obj,\n context,\n scope,\n bobj,\n inLoopOrSwitch\n ) => {\n const [exception, catchBody, finallyBody] = b;\n executeTreeWithDone(\n exec,\n (err, res) => {\n executeTreeWithDone(\n exec,\n (e) => {\n if (e) done(e);\n else if (err) {\n const sc: Record<string, unknown> = {};\n if (exception) sc[exception] = err;\n executeTreeWithDone(\n exec,\n done,\n ticks,\n context,\n catchBody,\n [new Scope(scope)],\n inLoopOrSwitch\n );\n } else {\n done(undefined, res);\n }\n },\n ticks,\n context,\n finallyBody,\n [new Scope(scope, {})]\n );\n },\n ticks,\n context,\n a,\n [new Scope(scope)],\n inLoopOrSwitch\n );\n }\n);\n\naddOps(LispType.Void, (exec, done) => {\n done();\n});\naddOps(\n LispType.New,\n (exec, done, ticks, a: new (...args: unknown[]) => unknown, b: unknown[], obj, context) => {\n if (!context.ctx.globalsWhitelist.has(a) && !sandboxedFunctions.has(a)) {\n throw new SandboxError(`Object construction not allowed: ${a.constructor.name}`);\n }\n done(undefined, new a(...b));\n }\n);\n\naddOps(LispType.Throw, (exec, done, ticks, a, b) => {\n done(b);\n});\naddOps(LispType.Expression, (exec, done, ticks, a: unknown[]) => done(undefined, a.pop()));\naddOps(LispType.None, (exec, done) => done());\n\nfunction valueOrProp(a: unknown, context: IExecContext): any {\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 = [];\n for (let i = 0; i < tree.length; i++) {\n let res;\n try {\n res = syncDone((d) => execSync(ticks, tree[i], scope, context, d, inLoopOrSwitch)).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\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 = [];\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((err, result) => {\n if (err) reject(err);\n else {\n isInstant = true;\n instant = result;\n resolve({ result });\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;\n callback((e, r) => {\n err = e;\n result = r;\n });\n if (err) throw err;\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 = (e, r?) => {\n doneOriginal(e, r);\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 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 if (ops.has(op)) {\n try {\n ops.get(op)?.(execAsync, done, ticks, a, b, obj, context, scope, bobj, inLoopOrSwitch);\n } catch (err) {\n done(err);\n }\n } else {\n done(new SyntaxError('Unknown operator: ' + op));\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;\n try {\n obj = syncDone((d) => execSync(ticks, tree[1], scope, context, d, inLoopOrSwitch)).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 let bobj;\n try {\n bobj = syncDone((d) => execSync(ticks, tree[2], scope, context, d, inLoopOrSwitch)).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 if (ops.has(op)) {\n try {\n ops.get(op)?.(execSync, done, ticks, a, b, obj, context, scope, bobj, inLoopOrSwitch);\n } catch (err) {\n done(err);\n }\n } else {\n done(new SyntaxError('Unknown operator: ' + op));\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\nexport const currentTicks = { current: { ticks: BigInt(0) } as Ticks };\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 (context.ctx.options.executionQuota && context.ctx.options.executionQuota <= ticks.ticks) {\n if (\n !(\n typeof context.ctx.options.onExecutionQuotaReached === 'function' &&\n context.ctx.options.onExecutionQuotaReached(ticks, scope, context, tree)\n )\n ) {\n done(new SandboxError('Execution quota exceeded'));\n return true;\n }\n }\n ticks.ticks++;\n currentTicks.current = ticks;\n if (tree instanceof Prop) {\n try {\n done(undefined, tree.get(context));\n } catch (err) {\n done(err);\n }\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 SandboxError(\"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 (e, r) => {\n if (e) done(e);\n else\n try {\n done(undefined, await valueOrProp(r, context));\n } catch (err) {\n done(err);\n }\n },\n inLoopOrSwitch\n ).catch(done);\n } else {\n done(new SandboxError('Async/await is not permitted'));\n }\n } else if (unexecTypes.has(tree[0])) {\n try {\n ops.get(tree[0])?.(\n exec,\n done,\n ticks,\n tree[1],\n tree[2],\n tree,\n context,\n scope,\n undefined,\n inLoopOrSwitch\n );\n } catch (err) {\n done(err);\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: unknown;\n const current = executionTree[i];\n try {\n execSync(\n ticks,\n current,\n scope,\n context,\n (e, r) => {\n err = e;\n res = r;\n },\n inLoopOrSwitch\n );\n } catch (e) {\n err = e;\n }\n if (err) {\n done(err);\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: unknown;\n const current = executionTree[i];\n try {\n await execAsync(\n ticks,\n current,\n scope,\n context,\n (e, r) => {\n err = e;\n res = r;\n },\n inLoopOrSwitch\n );\n } catch (e) {\n err = e;\n }\n if (err) {\n done(err);\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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"}
@@ -1,90 +1,23 @@
1
- import { IGlobals, replacementCallback, IAuditReport, Change, ExecReturn, executeTree, executeTreeAsync, ops, assignCheck, execMany, execAsync, execSync, asyncDone, Scope, IScope, FunctionScope, LocalScope, syncDone } from "./executor.js";
2
- import { IExecutionTree, expectTypes, setLispType, LispItem, LispArray, IConstants } from "./parser.js";
3
- export { expectTypes, setLispType, ops as executionOps, assignCheck, execMany, execAsync, execSync, asyncDone, syncDone, executeTree, executeTreeAsync, FunctionScope, LocalScope, };
4
- export interface IOptions {
5
- audit?: boolean;
6
- forbidFunctionCalls?: boolean;
7
- forbidFunctionCreation?: boolean;
8
- prototypeReplacements?: Map<new () => any, replacementCallback>;
9
- prototypeWhitelist?: Map<any, Set<string>>;
10
- globals: IGlobals;
11
- executionQuota?: bigint;
12
- onExecutionQuotaReached?: (ticks: Ticks, scope: Scope, context: IExecutionTree, tree: LispItem) => boolean | void;
13
- }
14
- export interface IContext {
15
- sandbox: Sandbox;
16
- globalScope: Scope;
17
- sandboxGlobal: SandboxGlobal;
18
- globalsWhitelist?: Set<any>;
19
- prototypeWhitelist?: Map<any, Set<string>>;
20
- options: IOptions;
21
- auditReport?: IAuditReport;
22
- }
23
- export interface Ticks {
24
- ticks: bigint;
25
- }
26
- export interface IExecContext extends IExecutionTree {
27
- ctx: IContext;
28
- getSubscriptions: Set<(obj: object, name: string) => void>;
29
- setSubscriptions: WeakMap<object, Map<string, Set<(modification: Change) => void>>>;
30
- changeSubscriptions: WeakMap<object, Set<(modification: Change) => void>>;
31
- setSubscriptionsGlobal: WeakMap<object, Map<string, Set<(modification: Change) => void>>>;
32
- changeSubscriptionsGlobal: WeakMap<object, Set<(modification: Change) => void>>;
33
- registerSandboxFunction: (fn: (...args: any[]) => any) => void;
34
- evals: Map<any, any>;
35
- }
36
- export declare class SandboxGlobal {
37
- constructor(globals: IGlobals);
38
- }
39
- export declare class ExecContext implements IExecContext {
40
- ctx: IContext;
41
- constants: IConstants;
42
- tree: LispArray;
43
- getSubscriptions: Set<(obj: object, name: string) => void>;
44
- setSubscriptions: WeakMap<object, Map<string, Set<(modification: Change) => void>>>;
45
- changeSubscriptions: WeakMap<object, Set<(modification: Change) => void>>;
46
- setSubscriptionsGlobal: WeakMap<object, Map<string, Set<(modification: Change) => void>>>;
47
- changeSubscriptionsGlobal: WeakMap<object, Set<(modification: Change) => void>>;
48
- evals: Map<any, any>;
49
- registerSandboxFunction: (fn: (...args: any[]) => any) => void;
50
- constructor(ctx: IContext, constants: IConstants, tree: LispArray, getSubscriptions: Set<(obj: object, name: string) => void>, setSubscriptions: WeakMap<object, Map<string, Set<(modification: Change) => void>>>, changeSubscriptions: WeakMap<object, Set<(modification: Change) => void>>, setSubscriptionsGlobal: WeakMap<object, Map<string, Set<(modification: Change) => void>>>, changeSubscriptionsGlobal: WeakMap<object, Set<(modification: Change) => void>>, evals: Map<any, any>, registerSandboxFunction: (fn: (...args: any[]) => any) => void);
51
- }
52
- export default class Sandbox {
53
- context: IContext;
54
- setSubscriptions: WeakMap<object, Map<string, Set<(modification: Change) => void>>>;
55
- changeSubscriptions: WeakMap<object, Set<(modification: Change) => void>>;
56
- sandboxFunctions: WeakMap<(...args: any[]) => any, IExecContext>;
57
- constructor(options?: IOptions);
58
- static get SAFE_GLOBALS(): IGlobals;
59
- static get SAFE_PROTOTYPES(): Map<any, Set<string>>;
60
- subscribeGet(callback: (obj: object, name: string) => void, context: IExecContext): {
61
- unsubscribe: () => void;
62
- };
63
- subscribeSet(obj: object, name: string, callback: (modification: Change) => void, context: Sandbox | IExecContext): {
64
- unsubscribe: () => void;
65
- };
66
- subscribeSetGlobal(obj: object, name: string, callback: (modification: Change) => void): {
67
- unsubscribe: () => void;
68
- };
69
- static audit<T>(code: string, scopes?: (IScope)[]): ExecReturn<T>;
70
- static parse(code: string): IExecutionTree;
71
- createContext(context: IContext, executionTree: IExecutionTree): any;
72
- getContext(fn: (...args: any[]) => any): IExecContext;
73
- executeTree<T>(context: IExecContext, scopes?: (IScope)[]): ExecReturn<T>;
74
- executeTreeAsync<T>(context: IExecContext, scopes?: (IScope)[]): Promise<ExecReturn<T>>;
75
- compile<T>(code: string, optimize?: boolean): (...scopes: (IScope)[]) => {
1
+ import { IExecContext, IOptionParams, IScope } from './utils.js';
2
+ import { ExecReturn } from './executor.js';
3
+ import SandboxExec from './SandboxExec.js';
4
+ export default class Sandbox extends SandboxExec {
5
+ constructor(options?: IOptionParams);
6
+ static audit<T>(code: string, scopes?: IScope[]): ExecReturn<T>;
7
+ static parse(code: string): import("./parser.js").IExecutionTree;
8
+ compile<T>(code: string, optimize?: boolean): (...scopes: IScope[]) => {
76
9
  context: IExecContext;
77
10
  run: () => T;
78
11
  };
79
- compileAsync<T>(code: string, optimize?: boolean): (...scopes: (IScope)[]) => {
12
+ compileAsync<T>(code: string, optimize?: boolean): (...scopes: IScope[]) => {
80
13
  context: IExecContext;
81
14
  run: () => Promise<T>;
82
15
  };
83
- compileExpression<T>(code: string, optimize?: boolean): (...scopes: (IScope)[]) => {
16
+ compileExpression<T>(code: string, optimize?: boolean): (...scopes: IScope[]) => {
84
17
  context: IExecContext;
85
18
  run: () => T;
86
19
  };
87
- compileExpressionAsync<T>(code: string, optimize?: boolean): (...scopes: (IScope)[]) => {
20
+ compileExpressionAsync<T>(code: string, optimize?: boolean): (...scopes: IScope[]) => {
88
21
  context: IExecContext;
89
22
  run: () => Promise<T>;
90
23
  };