{
  "version": 3,
  "sources": ["../../src/main-file.ts"],
  "sourcesContent": ["/**\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\"*/\nimport path from \"path\";\nimport fs from \"fs\";\nimport mime from \"mime\";\n\nimport { InheritClass, CONFIG, logger, New, Component, Package } from \"qcobjects\";\n\nexport class FileDispatcher extends InheritClass {\n  scriptname: any;\n  filename: any;\n  pathname!: string;\n  headers: any;\n  templateURI!: string;\n  template: any;\n  body: any;\n  constructor({\n    name = CONFIG.get(\"documentRootFileIndex\"),\n    template = \"\",\n    templateURI = CONFIG.get(\"documentRootFileIndex\"),\n    headers = {},\n    body = \"\",\n    filename = \"\",\n    done\n  }: {\n    name: string, template: string, templateURI: string, headers: any, body: string, filename: string,\n    done: (headers: any, body: any, templateURI?: string, isTemplate?: boolean) => any\n  }) {\n    super({\n      name,\n      template,\n      templateURI,\n      headers,\n      body,\n      filename,\n      done\n    });\n\n    var o = this;\n\n    var scriptname = o.scriptname;\n    this.filename = scriptname;\n    var pathname = (o.pathname !== \"\") ? (o.pathname + \"/\") : (\"\");\n    var appTemplateInstance = this;\n    if (typeof appTemplateInstance.headers === \"undefined\") {\n      appTemplateInstance.headers = {\n        \":status\": 500,\n        \"content-type\": \"text/html\"\n      };\n    }\n\n    appTemplateInstance.done = o.done.bind(appTemplateInstance);\n    appTemplateInstance.templateURI = CONFIG.get(\"documentRoot\") + pathname + scriptname;\n    appTemplateInstance.templateURI = appTemplateInstance.templateURI.replace(\"//\", \"/\");\n\n    if (appTemplateInstance.isTemplate()) {\n      fs.readFile(appTemplateInstance.templateURI, function (err: any, data: any) {\n        logger.debug(\"reading data from \" + appTemplateInstance.templateURI);\n        if (typeof data !== \"undefined\") {\n          appTemplateInstance.template = data.toString();\n          appTemplateInstance._done();\n        } else {\n          appTemplateInstance.headers = {\n            \":status\": 404,\n            \"content-type\": \"text/html\"\n          };\n          appTemplateInstance.done(\n            appTemplateInstance.headers,\n            \"FILE NOT FOUND\", \"notfound.html\", false);\n          logger.debug(\"file not found\");\n        }\n      });\n    } else {\n      appTemplateInstance.headers[\":status\"] = 200;\n      appTemplateInstance.headers[\"content-type\"] = mime.getType(appTemplateInstance.templateURI);\n      appTemplateInstance.done(\n        appTemplateInstance.headers,\n        \"\", appTemplateInstance.templateURI, false);\n    }\n\n    logger.info(\"FileDispatcher initialized\");\n\n  }\n\n  file_extension() {\n    return this.filename.substr(this.filename.indexOf(\".\"));\n  }\n  isTemplate() {\n    return CONFIG.get(\"useTemplate\") && (this.file_extension() == \".html\" || this.file_extension() == \".tpl.html\");\n  }\n  _done() {\n    var appTemplateInstance = this;\n    const source = appTemplateInstance.template;\n    if (appTemplateInstance.isTemplate()) {\n\n      (New(Component, {\n        name: \"static_source\",\n        template: source,\n        cached: false,\n        tplsource: \"inline\",\n        data: {\n          title: \"QCObjects\"\n        },\n        done({\n          request,\n          component\n        }: { request: any, component: any }) {\n          appTemplateInstance.body = component.parsedAssignmentText;\n          return Promise.resolve({\n            request,\n            component\n          });\n        }\n      }));\n\n    } else {\n      appTemplateInstance.body = source;\n    }\n\n    if ([\".png\",\n      \".jpg\",\n      \".jpeg\",\n      \".json\",\n      \".html\",\n      \".tpl.html\",\n      \".css\",\n      \".js\",\n      \".svg\"\n    ].includes(appTemplateInstance.file_extension())) {\n      appTemplateInstance.headers[\"content-type\"] = mime.getType(appTemplateInstance.templateURI);\n      appTemplateInstance.headers[\"cache-control\"] = CONFIG.get(\"cacheControl\", \"max-age=31536000\");\n      appTemplateInstance.done(\n        appTemplateInstance.headers,\n        appTemplateInstance.body,\n        appTemplateInstance.templateURI,\n        appTemplateInstance.isTemplate());\n    } else {\n      appTemplateInstance.done({\n        \":status\": 403,\n        \"content-type\": \"text/plain\"\n      },\n        \"FORBIDDEN\", \"notfound.html\", false);\n    }\n  }\n  done(headers: any, body: any, templateURI = \"\", isTemplate = false) { }\n\n}\n\n\n( () => {\n  \"use strict\";\n\n  const absolutePath = path.resolve(__dirname, \"./\");\n\n\n\n  Package(\"org.quickcorp.qcobjects.main.file\", [\n    FileDispatcher\n  ]);\n\n  exports = {\n    FileDispatcher\n  };\n})();"],
  "mappings": "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",
  "names": ["fs", "mime", "path"]
}
