{
  "version": 3,
  "sources": ["../../src/qcobjects-shell.ts"],
  "sourcesContent": ["#!/usr/bin/env node\n/**\n * QCObjects CLI 2.4.x\n * ________________\n *\n * Author: Jean Machuca <correojean@gmail.com>\n *\n * Cross Browser Javascript Framework for MVC Patterns\n * QuickCorp/QCObjects is licensed under the\n * GNU Lesser General Public License v3.0\n * [LICENSE] (https://github.com/QuickCorp/QCObjects/blob/master/LICENSE.txt)\n *\n * Permissions of this copyleft license are conditioned on making available\n * complete source code of licensed works and modifications under the same\n * license or the GNU GPLv3. Copyright and license notices must be preserved.\n * Contributors provide an express grant of patent rights. However, a larger\n * work using the licensed work through interfaces provided by the licensed\n * work may be distributed under different terms and without source code for\n * the larger work.\n *\n * Copyright (C) 2015 Jean Machuca,<correojean@gmail.com>\n *\n * Everyone is permitted to copy and distribute verbatim copies of this\n * license document, but changing it is not allowed.\n*/\n/*eslint no-unused-vars: \"off\"*/\n/*eslint no-redeclare: \"off\"*/\n/*eslint no-empty: \"off\"*/\n/*eslint strict: \"off\"*/\n/*eslint no-mixed-operators: \"off\"*/\n/*eslint no-undef: \"off\"*/\n\"use strict\";\n\nconst welcometo = \"Welcome to \\n\";\nconst instructions = \"Type:\\n .exit to quit\\n .help for see a quick guide\\n And any other command to execute like pure javascript \\n All the QCObjects stuff is already loaded for you\";\n//const logo = ' .88888.    a88888b.  .88888.  dP       oo                     dP            \\r\\nd8\\'   `8b  d8\\'   `88 d8\\'   `8b 88                              88            \\r\\n88     88  88        88     88 88d888b. dP .d8888b. .d8888b. d8888P .d8888b. \\r\\n88  db 88  88        88     88 88\\'  `88 88 88ooood8 88\\'  `\\\"\\\"   88   Y8ooooo. \\r\\nY8.  Y88P  Y8.   .88 Y8.   .8P 88.  .88 88 88.  ... 88.  ...   88         88 \\r\\n `8888PY8b  Y88888P\\'  `8888P\\'  88Y8888\\' 88 `88888P\\' `88888P\\'   dP   `88888P\\' \\r\\noooooooooooooooooooooooooooooooooooooooo88~oooooooooooooooooooooooooooooooooo\\r\\n                                        dP    ';\nconst logo = \" .d88888b.  .d8888b.  .d88888b. 888       d8b                888            \\r\\nd88P\\\" \\\"Y88bd88P  Y88bd88P\\\" \\\"Y88b888       Y8P                888            \\r\\n888     888888    888888     888888                          888            \\r\\n888     888888       888     88888888b.  8888 .d88b.  .d8888b888888.d8888b  \\r\\n888     888888       888     888888 \\\"88b \\\"888d8P  Y8bd88P\\\"   888   88K      \\r\\n888 Y8b 888888    888888     888888  888  88888888888888     888   \\\"Y8888b. \\r\\nY88b.Y8b88PY88b  d88PY88b. .d88P888 d88P  888Y8b.    Y88b.   Y88b.      X88 \\r\\n \\\"Y888888\\\"  \\\"Y8888P\\\"  \\\"Y88888P\\\" 88888P\\\"   888 \\\"Y8888  \\\"Y8888P \\\"Y888 88888P' \\r\\n       Y8b                                888                               \\r\\n                                         d88P                               \\r\\n                                       888P\\\"   \";\nimport path from \"path\";\nconst absolutePath = path.resolve( __dirname, \"./\" );\n\nimport vm from \"vm\";\n\nimport {InheritClass, global} from \"qcobjects\";\nimport \"./defaultsettings\";\nimport readline from \"readline\";\n\n\nclass Main extends InheritClass {\n  constructor(){\n    super();\n    this.start();\n  }\n\n  start (){\n    const sandbox = {\n      require:require,\n      module:module,\n      __dirname:\"./\",\n      __filename:\"qcobjects-shell-file.js\"\n    };\n    global.context = vm.createContext(sandbox);\n    \n    const runScript = (code: string,logOutput=false)=>{\n      const options = {filename:sandbox.__filename};\n    \n      const backgroundRunScript = (code: string):any=>{\n        var output = vm.runInContext(code,global.context,options);\n        return output;\n      };\n    \n      var output = backgroundRunScript(code);\n    \n      if (logOutput && typeof output !== \"undefined\"){\n        console.log(output);\n      }\n    };\n    \n    const syncGlobal = ()=>{\n      var s = \"Object.assign(this,this.constructor.constructor('return this')())\";\n      runScript(s);\n    };\n    \n    readline.emitKeypressEvents(process.stdin);\n    if (process.stdin.isTTY)\n      process.stdin.setRawMode(true);\n    \n    const qcobjects_version = global.__get_version_string__();\n    \n    const rl = readline.createInterface({\n      input: process.stdin,\n      output: process.stdout,\n      prompt: qcobjects_version + \" >\"\n    });\n    \n    const protected_symbols = [ \"clearInterval\",\n      \"clearTimeout\",\n      \"setInterval\",\n      \"setTimeout\",      \"queueMicrotask\",\n       \"clearImmediate\",        \"setImmediate\",          \"_asyncLoad\",\n       \"_fireAsyncLoad\",           \"asyncLoad\",              \"logger\",\n               \"_Crypt\",              \"CONFIG\",           \"waitUntil\",\n              \"_super_\", \"ComplexStorageCache\",         \"TagElements\",\n               \"onload\",        \"InheritClass\",           \"Component\",\n           \"Controller\",                \"View\",             \"Service\",\n          \"JSONService\",       \"ConfigService\",                  \"VO\",\n        \"serviceLoader\",     \"componentLoader\",        \"ComponentURI\",\n             \"SourceJS\",           \"SourceCSS\",           \"ArrayList\",\n      \"ArrayCollection\",              \"Effect\",               \"Timer\",\n               \"Export\",              \"Import\",             \"Package\",\n                \"Class\",                 \"New\",                 \"Tag\",\n                \"Ready\",             \"Contact\",           \"FormField\",\n          \"ButtonField\",          \"InputField\",           \"TextField\",\n           \"EmailField\",       \"GridComponent\",      \"GridController\",\n             \"GridView\",                \"Move\",             \"RotateX\",\n              \"RotateY\",             \"RotateZ\",              \"Rotate\",\n                 \"Fade\",              \"Radius\",          \"CanvasTool\",\n          \"BasicLayout\"\n    ];\n    \n    const preloaded_scripts = [\n      \"require('qcobjects')\",\n      \"Object.assign(this,this.constructor.constructor('return this')())\"\n    ];\n    \n    preloaded_scripts.map(preloaded_script =>\n      runScript(preloaded_script.trim())\n    );\n    \n    \n    console.log(welcometo);\n    console.log(logo);\n    console.log(instructions);\n    rl.prompt(true);\n    \n    rl.on(\"line\", (line) => {\n      var codeline = line.trim();\n      switch (true) {\n        case codeline==\"hello\":\n          console.log(\"world!\");\n          break;\n        case codeline==\".exit\":\n          rl.close();\n          break;\n        default:\n          try{\n            runScript(codeline,true);\n            syncGlobal.bind(sandbox)();\n          }catch (e){\n            console.log(\"An exeption ocurred while trying to run your awesome code! \");\n            console.log(e);\n          }\n          break;\n      }\n      rl.prompt();\n    }).on(\"close\", () => {\n      console.log(\"Thank you for using QCObjects.\");\n      console.log(\"Have a nice day!\");\n      process.exit(0);\n    });\n    \n  }\n}"],
  "mappings": "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",
  "names": ["code", "output"]
}
