{
  "version": 3,
  "sources": ["../dist/index.js", "../dist/nodes/index.js", "../dist/nodes/BaseJSNode.js", "../dist/nodes/ArrayExpression.js", "../dist/utils/index.js", "../dist/nodes/ArrowFunctionExpression.js", "../dist/nodes/AssignmentExpression.js", "../dist/nodes/BinaryExpression.js", "../dist/nodes/BlockStatement.js", "../dist/nodes/BreakStatement.js", "../dist/nodes/CallExpression.js", "../dist/nodes/ConditionalExpression.js", "../dist/nodes/ContinueStatement.js", "../dist/nodes/ExpressionStatement.js", "../dist/nodes/ForOfStatement.js", "../dist/nodes/ForStatement.js", "../dist/nodes/FunctionDeclaration.js", "../dist/nodes/FunctionExpression.js", "../dist/nodes/Identifier.js", "../dist/nodes/IfStatement.js", "../dist/nodes/Literal.js", "../dist/nodes/LogicalExpression.js", "../dist/nodes/MemberExpression.js", "../dist/nodes/NewExpression.js", "../dist/nodes/ObjectExpression.js", "../dist/nodes/Property.js", "../dist/nodes/ReturnStatement.js", "../dist/nodes/SequenceExpression.js", "../dist/nodes/SwitchCase.js", "../dist/nodes/SwitchStatement.js", "../dist/nodes/TemplateLiteral.js", "../dist/nodes/ThisExpression.js", "../dist/nodes/ThrowStatement.js", "../dist/nodes/TryStatement.js", "../dist/nodes/UnaryExpression.js", "../dist/nodes/UpdateExpression.js", "../dist/nodes/VariableDeclaration.js", "../dist/nodes/WhileStatement.js", "../dist/visitor.js", "../dist/main.js"],
  "sourcesContent": ["import Jinter from './main.js';\nexport * as Nodes from './nodes/index.js';\nexport * as Utils from './utils/index.js';\nexport { Jinter };\nexport default Jinter;\n", "// This file is auto-generated by ./scripts/build-nodes-map.js.\nexport { default as ArrayExpression } from './ArrayExpression.js';\nexport { default as ArrowFunctionExpression } from './ArrowFunctionExpression.js';\nexport { default as AssignmentExpression } from './AssignmentExpression.js';\nexport { default as BinaryExpression } from './BinaryExpression.js';\nexport { default as BlockStatement } from './BlockStatement.js';\nexport { default as BreakStatement } from './BreakStatement.js';\nexport { default as CallExpression } from './CallExpression.js';\nexport { default as ConditionalExpression } from './ConditionalExpression.js';\nexport { default as ContinueStatement } from './ContinueStatement.js';\nexport { default as ExpressionStatement } from './ExpressionStatement.js';\nexport { default as ForOfStatement } from './ForOfStatement.js';\nexport { default as ForStatement } from './ForStatement.js';\nexport { default as FunctionDeclaration } from './FunctionDeclaration.js';\nexport { default as FunctionExpression } from './FunctionExpression.js';\nexport { default as Identifier } from './Identifier.js';\nexport { default as IfStatement } from './IfStatement.js';\nexport { default as Literal } from './Literal.js';\nexport { default as LogicalExpression } from './LogicalExpression.js';\nexport { default as MemberExpression } from './MemberExpression.js';\nexport { default as NewExpression } from './NewExpression.js';\nexport { default as ObjectExpression } from './ObjectExpression.js';\nexport { default as Property } from './Property.js';\nexport { default as ReturnStatement } from './ReturnStatement.js';\nexport { default as SequenceExpression } from './SequenceExpression.js';\nexport { default as SwitchCase } from './SwitchCase.js';\nexport { default as SwitchStatement } from './SwitchStatement.js';\nexport { default as TemplateLiteral } from './TemplateLiteral.js';\nexport { default as ThisExpression } from './ThisExpression.js';\nexport { default as ThrowStatement } from './ThrowStatement.js';\nexport { default as TryStatement } from './TryStatement.js';\nexport { default as UnaryExpression } from './UnaryExpression.js';\nexport { default as UpdateExpression } from './UpdateExpression.js';\nexport { default as VariableDeclaration } from './VariableDeclaration.js';\nexport { default as WhileStatement } from './WhileStatement.js';\n", "export default class BaseJSNode {\n    constructor(node, visitor) {\n        this.node = node;\n        this.visitor = visitor;\n    }\n    run() { }\n}\n", "import BaseNode from './BaseJSNode.js';\nexport default class ArrayExpression extends BaseNode {\n    run() {\n        return this.node.elements.map((el) => this.visitor.visitNode(el));\n    }\n}\n", "export const namedFunction = (name, fn) => Object.defineProperty(fn, 'name', { value: name });\nexport class JinterError extends Error {\n    constructor(message, info) {\n        super(message);\n        if (info) {\n            this.info = info;\n        }\n    }\n}\n", "import { namedFunction } from '../utils/index.js';\nimport BaseJSNode from './BaseJSNode.js';\nexport default class ArrowFunctionExpression extends BaseJSNode {\n    run() {\n        const { params, body } = this.node;\n        // @TODO: Handle other types of params and pass them directly to next node instead of saving them in the global scope\n        const fn = namedFunction('anonymous function', (args) => {\n            let index = 0;\n            for (const param of params) {\n                this.visitor.visitNode(param);\n                if (param.type === 'Identifier') {\n                    this.visitor.scope.set(param.name, args[index]);\n                }\n                else {\n                    console.warn('Unhandled param type', param.type);\n                }\n                index++;\n            }\n            return this.visitor.visitNode(body);\n        });\n        return fn;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class AssignmentExpression extends BaseJSNode {\n    run() {\n        const operator = this.node.operator;\n        const right_node = this.visitor.visitNode(this.node.right);\n        switch (operator) {\n            case '=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] = right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    this.visitor.scope.set(this.node.left.name, right_node);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '+=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] += right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) + right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '-=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] -= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) - right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '*=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] *= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) * right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '/=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] /= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) / right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '%=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] %= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) % right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '**=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] **= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) ** right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '<<=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] <<= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) << right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '>>=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] >>= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) >> right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '>>>=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] >>>= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) >>> right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n            case '&=':\n                if (this.node.left.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.left.object);\n                    const prop = this.visitor.visitNode(this.node.left.property);\n                    return obj[prop] &= right_node;\n                }\n                else if (this.node.left.type === 'Identifier') {\n                    const result = this.visitor.visitNode(this.node.left) & right_node;\n                    this.visitor.scope.set(this.node.left.name, result);\n                    return this.visitor.scope.get(this.node.left.name);\n                }\n                console.warn('Unhandled left node', this.node.left);\n                break;\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class BinaryExpression extends BaseJSNode {\n    run() {\n        const operator = this.node.operator;\n        const left_node = this.visitor.visitNode(this.node.left);\n        const right_node = this.visitor.visitNode(this.node.right);\n        switch (operator) {\n            case '!=':\n                return left_node != right_node;\n            case '!==':\n                return left_node !== right_node;\n            case '%':\n                return left_node % right_node;\n            case '&':\n                return left_node & right_node;\n            case '*':\n                return left_node * right_node;\n            case '**':\n                return left_node ** right_node;\n            case '+':\n                return left_node + right_node;\n            case '-':\n                return left_node - right_node;\n            case '/':\n                return left_node / right_node;\n            case '<':\n                return left_node < right_node;\n            case '<<':\n                return left_node << right_node;\n            case '<=':\n                return left_node <= right_node;\n            case '==':\n                return left_node == right_node;\n            case '===':\n                return left_node === right_node;\n            case '>':\n                return left_node > right_node;\n            case '>=':\n                return left_node >= right_node;\n            case '>>':\n                return left_node >> right_node;\n            case '>>>':\n                return left_node >>> right_node;\n            case '^':\n                return left_node ^ right_node;\n            case '|':\n                return left_node | right_node;\n            case 'in':\n                return left_node in right_node;\n            case 'instanceof':\n                return left_node instanceof right_node;\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class BlockStatement extends BaseJSNode {\n    run() {\n        for (const stmt of this.node.body) {\n            const result = this.visitor.visitNode(stmt);\n            if (stmt.type === 'ReturnStatement')\n                return result;\n            if (result === 'break' || result === 'continue')\n                return result;\n            if ((stmt.type === 'WhileStatement' ||\n                stmt.type === 'IfStatement' ||\n                stmt.type === 'ForStatement' ||\n                stmt.type === 'TryStatement') &&\n                !!result) {\n                return result;\n            }\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class BreakStatement extends BaseJSNode {\n    run() {\n        // @TODO: Parse label\n        return 'break';\n    }\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CallExpression_instances, _CallExpression_throwError, _CallExpression_getCalleeString;\nimport BaseJSNode from './BaseJSNode.js';\nimport { JinterError } from '../utils/index.js';\nexport default class CallExpression extends BaseJSNode {\n    constructor() {\n        super(...arguments);\n        _CallExpression_instances.add(this);\n    }\n    run() {\n        let exp_object;\n        let exp_property;\n        if (this.node.callee.type === 'MemberExpression') {\n            exp_object = this.visitor.getName(this.node.callee.object);\n            exp_property = this.visitor.getName(this.node.callee.property);\n        }\n        else if (this.node.callee.type === 'Identifier') {\n            exp_property = this.node.callee.name;\n        }\n        // Obj.fn(...);\n        if (exp_object && this.visitor.listeners[exp_object]) {\n            const cb = this.visitor.listeners[exp_object](this.node, this.visitor);\n            if (cb !== '__continue_exec') {\n                return cb;\n            }\n        }\n        // ?.fn(...);\n        if (exp_property && exp_property !== 'toString' && this.visitor.listeners[exp_property]) {\n            const cb = this.visitor.listeners[exp_property](this.node, this.visitor);\n            if (cb !== '__continue_exec') {\n                return cb;\n            }\n        }\n        if (this.node.callee.type === 'MemberExpression') {\n            if (Builtins.has(this.node, this.visitor)) {\n                return Builtins.execute(this.node, this.visitor);\n            }\n            const obj = this.visitor.visitNode(this.node.callee.object);\n            const prop = this.node.callee.computed ? this.visitor.visitNode(this.node.callee.property) : this.visitor.getName(this.node.callee.property);\n            const args = this.node.arguments.map((arg) => this.visitor.visitNode(arg));\n            if (!obj)\n                __classPrivateFieldGet(this, _CallExpression_instances, \"m\", _CallExpression_throwError).call(this);\n            if (typeof obj[prop] !== 'function')\n                __classPrivateFieldGet(this, _CallExpression_instances, \"m\", _CallExpression_throwError).call(this);\n            if (obj[prop].toString().includes('[native code]'))\n                return obj[prop](...args);\n            return obj[prop](args);\n        }\n        const fn = this.visitor.visitNode(this.node.callee);\n        const args = this.node.arguments.map((arg) => this.visitor.visitNode(arg));\n        if (typeof fn !== 'function')\n            __classPrivateFieldGet(this, _CallExpression_instances, \"m\", _CallExpression_throwError).call(this);\n        return fn(args);\n    }\n}\n_CallExpression_instances = new WeakSet(), _CallExpression_throwError = function _CallExpression_throwError() {\n    if (this.node.callee.type === 'MemberExpression' || this.node.callee.type === 'Identifier') {\n        const callee_string = __classPrivateFieldGet(this, _CallExpression_instances, \"m\", _CallExpression_getCalleeString).call(this, this.node.callee);\n        throw new JinterError(`${callee_string} is not a function`);\n    }\n    else if (this.node.callee.type === 'SequenceExpression') {\n        const call = [];\n        const items = [];\n        call.push('(');\n        this.node.callee.expressions.forEach((expr) => {\n            if (expr.type === 'Literal') {\n                items.push(expr.raw || '');\n            }\n            else if (expr.type === 'Identifier') {\n                items.push(expr.name);\n            }\n            else if (expr.type === 'MemberExpression') {\n                if (expr.computed) {\n                    items.push(`${this.visitor.getName(expr.object)}[${this.visitor.getName(expr.property) || '...'}]`);\n                }\n                else {\n                    items.push(`${this.visitor.getName(expr.object)}.${this.visitor.getName(expr.property)}`);\n                }\n            }\n        });\n        call.push(items.join(', '));\n        call.push(')');\n        throw new JinterError(`${call.join('')} is not a function`);\n    }\n}, _CallExpression_getCalleeString = function _CallExpression_getCalleeString(node) {\n    if (node.type === 'Identifier') {\n        return node.name;\n    }\n    else if (node.type === 'MemberExpression') {\n        const object_string = __classPrivateFieldGet(this, _CallExpression_instances, \"m\", _CallExpression_getCalleeString).call(this, node.object);\n        const property_string = node.computed ? `[${this.visitor.getName(node.property) || '...'}]` : `.${this.visitor.getName(node.property)}`;\n        return `${object_string}${property_string}`;\n    }\n    return '<unknown>';\n};\nclass Builtins {\n    static has(node, visitor) {\n        var _a;\n        if (node.callee.type === 'MemberExpression') {\n            return !!((_a = this.builtins) === null || _a === void 0 ? void 0 : _a[visitor.getName(node.callee.property) || '']);\n        }\n        return false;\n    }\n    static execute(node, visitor) {\n        if (node.callee.type === 'MemberExpression') {\n            return this.builtins[visitor.getName(node.callee.property) || ''](node, visitor);\n        }\n    }\n}\nBuiltins.builtins = {\n    // Override the forEach method so that the \"this\" arg is set correctly\n    forEach: (node, visitor) => {\n        const args = node.arguments.map((arg) => visitor.visitNode(arg));\n        if (node.callee.type === 'MemberExpression') {\n            const arr = visitor.visitNode(node.callee.object);\n            // Set forEach's \u201Cthis\u201D arg\n            if (args.length > 1) {\n                visitor.scope.set('_this', args.slice(-1)[0]);\n            }\n            // Execute callback function\n            let index = 0;\n            for (const element of arr) {\n                args[0]([element, index++, arr]);\n            }\n        }\n        else {\n            console.warn('Unhandled callee type:', node.callee.type);\n        }\n    },\n    // Also override the toString method so that it stringifies the correct object\n    toString: (node, visitor) => {\n        if (node.callee.type === 'MemberExpression') {\n            return visitor.visitNode(node.callee.object).toString();\n        }\n    }\n};\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ConditionalExpression extends BaseJSNode {\n    run() {\n        const { test, consequent, alternate } = this.node;\n        const check = this.visitor.visitNode(test);\n        if (check) {\n            return this.visitor.visitNode(consequent);\n        }\n        return this.visitor.visitNode(alternate);\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ContinueStatement extends BaseJSNode {\n    run() {\n        return 'continue';\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ExpressionStatement extends BaseJSNode {\n    run() {\n        return this.visitor.visitNode(this.node.expression);\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ForOfStatement extends BaseJSNode {\n    run() {\n        this.visitor.visitNode(this.node.left);\n        const right_node = this.visitor.visitNode(this.node.right);\n        for (const el of right_node) {\n            if (this.node.left.type === 'VariableDeclaration' && this.node.left.declarations[0].id.type === 'Identifier') {\n                this.visitor.scope.set(this.node.left.declarations[0].id.name, el);\n            }\n            else if (this.node.left.type === 'VariableDeclaration' && this.node.left.declarations[0].id.type === 'ObjectPattern') {\n                for (const propert of this.node.left.declarations[0].id.properties) {\n                    if (propert.type === 'Property' && (propert.value.type === 'Identifier' && propert.key.type === 'Identifier')) {\n                        this.visitor.scope.set(propert.value.name, el[propert.key.name]);\n                    }\n                }\n            }\n            const body = this.visitor.visitNode(this.node.body);\n            if (body === 'break') {\n                break;\n            }\n            if (body === 'continue') {\n                continue;\n            }\n            if (body && this.node.body.type !== 'ExpressionStatement') {\n                return body;\n            }\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ForStatement extends BaseJSNode {\n    run() {\n        if (this.node.init) {\n            this.visitor.visitNode(this.node.init);\n        }\n        const test = () => {\n            return this.node.test\n                ? this.visitor.visitNode(this.node.test)\n                : true;\n        };\n        for (;;) {\n            const _test = test();\n            if (!_test) {\n                break;\n            }\n            const body = this.visitor.visitNode(this.node.body);\n            if (body === 'continue') {\n                continue;\n            }\n            if (body === 'break') {\n                break;\n            }\n            if (this.node.update) {\n                this.visitor.visitNode(this.node.update);\n            }\n            if (body && this.node.body.type !== 'ExpressionStatement') {\n                return body;\n            }\n        }\n    }\n}\n", "import { namedFunction } from '../utils/index.js';\nimport BaseJSNode from './BaseJSNode.js';\nexport default class FunctionDeclaration extends BaseJSNode {\n    run() {\n        const { params, body } = this.node;\n        const id = this.visitor.visitNode(this.node.id);\n        // @TODO: Handle other types of params and pass them directly to next node instead of saving them in the global scope\n        const fn = namedFunction(id, (args) => {\n            let index = 0;\n            for (const param of params) {\n                this.visitor.visitNode(param);\n                if (param.type === 'Identifier') {\n                    this.visitor.scope.set(param.name, args[index]);\n                }\n                else {\n                    console.warn('Unhandled param type', param.type);\n                }\n                index++;\n            }\n            return this.visitor.visitNode(body);\n        });\n        this.visitor.scope.set(id, fn);\n    }\n}\n", "import { namedFunction } from '../utils/index.js';\nimport BaseJSNode from './BaseJSNode.js';\nexport default class FunctionExpression extends BaseJSNode {\n    run() {\n        const { params, body } = this.node;\n        const fn = namedFunction('anonymous function', (args) => {\n            let index = 0;\n            for (const param of params) {\n                this.visitor.visitNode(param);\n                if (param.type === 'Identifier') {\n                    this.visitor.scope.set(param.name, args[index]);\n                }\n                else {\n                    console.warn('Unhandled param type', param.type);\n                }\n                index++;\n            }\n            return this.visitor.visitNode(body);\n        });\n        return fn;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class Identifier extends BaseJSNode {\n    run() {\n        if (this.visitor.listeners[this.node.name]) {\n            const cb = this.visitor.listeners[this.node.name](this.node, this.visitor);\n            if (cb !== '__continue_exec') {\n                return cb;\n            }\n        }\n        if (this.visitor.scope.has(this.node.name))\n            return this.visitor.scope.get(this.node.name);\n        return this.node.name;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class IfStatement extends BaseJSNode {\n    run() {\n        const test = this.visitor.visitNode(this.node.test);\n        if (test) {\n            return this.visitor.visitNode(this.node.consequent);\n        }\n        else if (this.node.alternate) {\n            return this.visitor.visitNode(this.node.alternate);\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class Literal extends BaseJSNode {\n    run() {\n        return this.node.value;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class LogicalExpression extends BaseJSNode {\n    run() {\n        const operator = this.node.operator;\n        switch (operator) {\n            case '&&': {\n                const left_side = this.visitor.visitNode(this.node.left);\n                if (left_side === true)\n                    return this.visitor.visitNode(this.node.right);\n                return left_side;\n            }\n            case '||': {\n                const left_side = this.visitor.visitNode(this.node.left);\n                return left_side || this.visitor.visitNode(this.node.right);\n            }\n            case '??': {\n                const left_side = this.visitor.visitNode(this.node.left);\n                return left_side !== null && left_side !== void 0 ? left_side : this.visitor.visitNode(this.node.right);\n            }\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class MemberExpression extends BaseJSNode {\n    run() {\n        const { object, property, computed } = this.node;\n        const obj = this.visitor.visitNode(object);\n        const prop = computed ? this.visitor.visitNode(property) : this.visitor.getName(property);\n        if (prop !== undefined || prop !== null) {\n            if (this.visitor.listeners[prop]) {\n                const cb = this.visitor.listeners[prop](this.node, this.visitor);\n                if (cb !== '__continue_exec') {\n                    return cb;\n                }\n            }\n            return obj === null || obj === void 0 ? void 0 : obj[prop];\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class NewExpression extends BaseJSNode {\n    run() {\n        const callee = this.visitor.visitNode(this.node.callee);\n        const args = this.node.arguments.map((arg) => this.visitor.visitNode(arg));\n        return args.length ? new callee(args) : new callee();\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ObjectExpression extends BaseJSNode {\n    run() {\n        let result = {};\n        for (const prop of this.node.properties) {\n            if (prop.type === 'Property') {\n                result = Object.assign(Object.assign({}, result), this.visitor.visitNode(prop));\n            }\n            else {\n                throw new Error(`Unhandled property type: ${prop.type}`);\n            }\n        }\n        return result;\n    }\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Property_instances, _Property_init, _Property_get, _Property_set;\nimport BaseJSNode from './BaseJSNode.js';\nexport default class Property extends BaseJSNode {\n    constructor() {\n        super(...arguments);\n        _Property_instances.add(this);\n    }\n    run() {\n        switch (this.node.kind) {\n            case 'init':\n                return __classPrivateFieldGet(this, _Property_instances, \"m\", _Property_init).call(this);\n            case 'get':\n                return __classPrivateFieldGet(this, _Property_instances, \"m\", _Property_get).call(this);\n            case 'set':\n                return __classPrivateFieldGet(this, _Property_instances, \"m\", _Property_set).call(this);\n            default:\n                throw new Error(`Unhandled property kind: ${this.node.kind}`);\n        }\n    }\n}\n_Property_instances = new WeakSet(), _Property_init = function _Property_init() {\n    const key = this.node.computed ? this.visitor.visitNode(this.node.key) : this.visitor.getName(this.node.key);\n    const value = this.visitor.visitNode(this.node.value);\n    if (key) {\n        return { [key]: value };\n    }\n}, _Property_get = function _Property_get() {\n    throw new TypeError('Not implemented: Property.get');\n}, _Property_set = function _Property_set() {\n    throw new TypeError('Not implemented: Property.set');\n};\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ReturnStatement extends BaseJSNode {\n    run() {\n        if (this.node.argument) {\n            return this.visitor.visitNode(this.node.argument);\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class SequenceExpression extends BaseJSNode {\n    run() {\n        let result;\n        for (const expression of this.node.expressions) {\n            result = this.visitor.visitNode(expression);\n        }\n        return result;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class SwitchCase extends BaseJSNode {\n    run() {\n        for (const stmt of this.node.consequent) {\n            const result = this.visitor.visitNode(stmt);\n            if (stmt.type === 'ContinueStatement' || stmt.type === 'BreakStatement') {\n                return result;\n            }\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class SwitchStatement extends BaseJSNode {\n    run() {\n        const discriminant = this.visitor.visitNode(this.node.discriminant);\n        let matched = false;\n        let default_case = -1;\n        let index = 0;\n        while (true) {\n            const _case = this.node.cases[index];\n            if (matched) {\n                const result = this.visitor.visitNode(_case);\n                // If it's a break then stop here.\n                if (result === 'break') {\n                    break;\n                }\n                // Switch statements do not support continue, but it can be used when inside a while/for loop.\n                if (result === 'continue') {\n                    return result;\n                }\n                ++index;\n                if (index >= this.node.cases.length) {\n                    index = 0;\n                    break;\n                }\n                else {\n                    continue;\n                }\n            }\n            matched = _case && (discriminant === this.visitor.visitNode(_case.test));\n            // Ran through all cases and checked everything, break the loop.\n            if (matched === undefined && index > this.node.cases.length)\n                break;\n            // Save the default case so we can get back to it later.\n            if (_case && !matched && !_case.test) {\n                default_case = index;\n                index += 1;\n                continue;\n            }\n            // Ran through all cases but no match \u2014 run default case.\n            if (!_case && !matched && default_case !== -1) {\n                matched = true;\n                index = default_case;\n                continue;\n            }\n            if (!matched) {\n                ++index;\n            }\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class TemplateLiteral extends BaseJSNode {\n    run() {\n        let result = '';\n        for (let i = 0; i < this.node.quasis.length; ++i) {\n            const quasi = this.node.quasis[i];\n            if (quasi.type === 'TemplateElement') {\n                if (quasi.value.cooked === null) {\n                    throw new Error(`Invalid template literal: ${quasi.value.raw}`);\n                }\n                if (quasi.value.cooked !== undefined) {\n                    result += quasi.value.cooked;\n                }\n                if (!quasi.tail) {\n                    const expr = this.node.expressions[i];\n                    if (expr !== undefined) {\n                        // This will automatically stringify the node's return value, since result is a string.\n                        result += this.visitor.visitNode(expr);\n                    }\n                    else {\n                        throw new Error(`Expected expression after: ${quasi.value}`);\n                    }\n                }\n            }\n            else {\n                throw new Error(`Unhandled quasi type: ${quasi.type}`);\n            }\n        }\n        return result;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ThisExpression extends BaseJSNode {\n    run() {\n        return this.visitor.scope.get('_this');\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class ThrowStatement extends BaseJSNode {\n    run() {\n        const arg = this.visitor.visitNode(this.node.argument);\n        throw arg;\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class TryStatement extends BaseJSNode {\n    run() {\n        try {\n            return this.visitor.visitNode(this.node.block);\n        }\n        catch (e) {\n            if (this.node.handler) {\n                if (this.node.handler.param && this.node.handler.param.type === 'Identifier') {\n                    this.visitor.scope.set(this.node.handler.param.name, e);\n                }\n                return this.visitor.visitNode(this.node.handler.body);\n            }\n        }\n        finally {\n            this.visitor.visitNode(this.node.finalizer);\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class UnaryExpression extends BaseJSNode {\n    run() {\n        const operator = this.node.operator;\n        switch (operator) {\n            case '-': {\n                const arg = this.visitor.visitNode(this.node.argument);\n                return -arg;\n            }\n            case '+': {\n                const arg = this.visitor.visitNode(this.node.argument);\n                return +arg;\n            }\n            case '!': {\n                const arg = this.visitor.visitNode(this.node.argument);\n                return !arg;\n            }\n            case '~': {\n                const arg = this.visitor.visitNode(this.node.argument);\n                return ~arg;\n            }\n            case 'void': {\n                this.visitor.visitNode(this.node.argument);\n                return undefined;\n            }\n            case 'typeof': {\n                const arg = this.visitor.visitNode(this.node.argument);\n                return typeof arg;\n            }\n            case 'delete': {\n                if (this.node.argument.type === 'MemberExpression') {\n                    const obj = this.visitor.visitNode(this.node.argument.object);\n                    const prop = this.node.argument.computed ? this.visitor.visitNode(this.node.argument.property) : this.visitor.getName(this.node.argument.property);\n                    return delete obj[prop];\n                }\n                else if (this.node.argument.type === 'Identifier') {\n                    return this.visitor.scope.delete(this.node.argument.name);\n                }\n                return true;\n            }\n            default:\n                console.warn('Unhandled UnaryExpression operator', operator);\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class UpdateExpression extends BaseJSNode {\n    run() {\n        const operator = this.node.operator;\n        switch (operator) {\n            case '++':\n                {\n                    if (this.node.argument.type === 'MemberExpression') {\n                        const target_node = this.visitor.visitNode(this.node.argument.object);\n                        return target_node[this.visitor.visitNode(this.node.argument.property)]++;\n                    }\n                    else if (this.node.argument.type === 'Identifier') {\n                        let target_node = this.visitor.visitNode(this.node.argument);\n                        this.visitor.scope.set(this.node.argument.name, target_node + 1);\n                        return this.node.prefix ? ++target_node : target_node;\n                    }\n                }\n                break;\n            case '--':\n                {\n                    if (this.node.argument.type === 'MemberExpression') {\n                        const target_node = this.visitor.visitNode(this.node.argument.object);\n                        return target_node[this.visitor.visitNode(this.node.argument.property)]--;\n                    }\n                    else if (this.node.argument.type === 'Identifier') {\n                        let target_node = this.visitor.visitNode(this.node.argument);\n                        this.visitor.scope.set(this.node.argument.name, target_node - 1);\n                        return this.node.prefix ? --target_node : target_node;\n                    }\n                }\n                break;\n        }\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class VariableDeclaration extends BaseJSNode {\n    run() {\n        // TODO: Parse kind\n        this.node.declarations.forEach((declar) => {\n            const { id, init } = declar;\n            const key = this.visitor.getName(id);\n            const value = init\n                ? this.visitor.visitNode(init)\n                : undefined;\n            if (key)\n                this.visitor.scope.set(key, value);\n            if (typeof value === 'object' && value !== null)\n                this.visitor.scope.set('_this', value);\n        });\n    }\n}\n", "import BaseJSNode from './BaseJSNode.js';\nexport default class WhileStatement extends BaseJSNode {\n    run() {\n        while (this.visitor.visitNode(this.node.test)) {\n            const body = this.visitor.visitNode(this.node.body);\n            if (body === 'break')\n                break;\n            if (body === 'continue')\n                continue;\n            if (body)\n                return body;\n        }\n    }\n}\n", "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Visitor_instances, _Visitor_getNode;\nimport * as Nodes from './nodes/index.js';\nexport default class Visitor {\n    constructor() {\n        _Visitor_instances.add(this);\n        this.scope = new Map();\n        this.listeners = {};\n        this.ast = [];\n    }\n    setAST(ast) {\n        this.ast = ast;\n    }\n    run() {\n        let result;\n        for (const node of this.ast) {\n            result = this.visitNode(node);\n        }\n        return result;\n    }\n    /**\n     * Visits a given node and executes it.\n     */\n    visitNode(node) {\n        if (!node)\n            return null;\n        const target_node = __classPrivateFieldGet(this, _Visitor_instances, \"m\", _Visitor_getNode).call(this, node.type);\n        if (target_node) {\n            const instance = new target_node(node, this);\n            return instance.run();\n        }\n    }\n    /**\n     * Gets the name of a node.\n     * @param node - The target node.\n     */\n    getName(node) {\n        if (node.type === 'Identifier')\n            return node.name;\n        else if (node.type === 'Literal')\n            return node.value;\n    }\n    /**\n     * Listens for node calls. Can be used to override default behavior or add new functionality.\n     * @param node_name - The node to listen for.\n     * @param listener - The callback function.\n     */\n    on(node_name, listener) {\n        this.listeners[node_name] = listener;\n    }\n}\n_Visitor_instances = new WeakSet(), _Visitor_getNode = function _Visitor_getNode(type) {\n    const node = Nodes[type];\n    if (!node) {\n        console.warn('[JINTER]:', `JavaScript node \"${type}\" not implemented!\\nIf this is causing unexpected behavior, please report it at https://github.com/LuanRT/Jinter/issues/new`);\n    }\n    return node;\n};\n", "var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Jinter_ast;\nimport Visitor from './visitor.js';\nimport { parse } from 'acorn';\nimport { JinterError } from './utils/index.js';\nexport default class Jinter {\n    constructor() {\n        _Jinter_ast.set(this, []);\n        this.visitor = new Visitor();\n        this.scope = this.visitor.scope;\n        this.scope.set('print', (args) => console.log(...args));\n        this.defineObject('console', console);\n        this.defineObject('Math', Math);\n        this.defineObject('String', String);\n        this.defineObject('Array', Array);\n        this.defineObject('Date', Date);\n    }\n    defineObject(name, obj) {\n        this.visitor.on(name, (node, visitor) => {\n            if (node.type === 'Identifier')\n                return obj;\n            if (node.type === 'CallExpression' && node.callee.type === 'MemberExpression') {\n                const prop = visitor.visitNode(node.callee.property);\n                const args = node.arguments.map((arg) => visitor.visitNode(arg));\n                const callable = obj[prop];\n                if (!callable)\n                    return '__continue_exec';\n                return callable.apply(obj, args);\n            }\n            return '__continue_exec';\n        });\n    }\n    /**\n     * Generates an AST from the input.\n     */\n    parseScript(input) {\n        try {\n            return parse(input, { ecmaVersion: 2020 });\n        }\n        catch (e) {\n            throw new JinterError(e.message);\n        }\n    }\n    /**\n     * Evaluates the program.\n     * @returns The result of the last statement in the program.\n     */\n    evaluate(input) {\n        try {\n            const program = parse(input, { ecmaVersion: 2020 });\n            __classPrivateFieldSet(this, _Jinter_ast, program.body, \"f\");\n        }\n        catch (e) {\n            throw new JinterError(e.message);\n        }\n        this.visitor.setAST(__classPrivateFieldGet(this, _Jinter_ast, \"f\"));\n        return this.visitor.run();\n    }\n}\n_Jinter_ast = new WeakMap();\n"],
  "mappings": "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",
  "names": ["args", "_CallExpression_throwError", "_CallExpression_getCalleeString", "__classPrivateFieldGet", "_Property_init", "_Property_get", "_Property_set", "__classPrivateFieldGet", "_Visitor_getNode", "__classPrivateFieldGet"]
}