blob: b957f72daeb8ef9eae6f6a4b3857b5b713085d9c [file] [log] [blame]
{"version":3,"file":"source-reader.js","sourceRoot":"","sources":["../../../src/bundler/resolve/source-reader.ts"],"names":[],"mappings":"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","sourcesContent":["import * as acorn from \"acorn\";\nimport * as fs from \"fs\";\nimport * as os from \"os\";\n\nimport { Logger } from \"log4js\";\n\nimport { Configuration } from \"../../shared/configuration\";\nimport { BundleItem } from \"../bundle-item\";\nimport { Transformer } from \"../transformer\";\n\nexport class SourceReader {\n\n constructor(private config: Configuration,\n private log: Logger,\n private transformer: Transformer) { }\n\n public read(bundleItem: BundleItem, onSourceRead: () => void) {\n\n this.readFile(bundleItem, (source: string) => {\n\n bundleItem.source = source;\n bundleItem.ast = this.createAbstractSyntaxTree(bundleItem);\n\n this.transformer.applyTransforms(bundleItem, () => {\n this.assertValidNonScriptSource(bundleItem);\n onSourceRead();\n });\n });\n }\n\n private readFile(bundleItem: BundleItem, onSourceRead: (source: string) => void) {\n\n if (this.config.bundlerOptions.ignore.indexOf(bundleItem.moduleName) !== -1) {\n onSourceRead(\"module.exports={};\");\n }\n else {\n fs.readFile(bundleItem.filename, (error, data) => {\n if (error) {\n throw error;\n }\n onSourceRead(data.toString());\n });\n }\n }\n\n private assertValidNonScriptSource(bundleItem: BundleItem): void {\n if (!bundleItem.isScript() &&\n !bundleItem.source.match(/^\\s*module\\.exports\\s*=/)) {\n\n let source = bundleItem.source;\n\n try{\n JSON.parse(bundleItem.source);\n }\n catch (jsonError) {\n source = JSON.stringify(bundleItem.source);\n }\n\n bundleItem.source = os.EOL + \"module.exports = \" + source + \";\";\n }\n }\n\n private createAbstractSyntaxTree(bundleItem: BundleItem): acorn.Node {\n\n if (!bundleItem.isScript() ||\n this.config.bundlerOptions.noParse.indexOf(bundleItem.moduleName) !== -1) {\n return undefined;\n }\n\n try {\n return acorn.parse(bundleItem.source, this.config.bundlerOptions.acornOptions);\n }\n catch (error) {\n this.log.error(\"Error parsing code: \" + error.message + os.EOL +\n \"in \" + bundleItem.filename + os.EOL +\n \"at line \" + error.loc.line + \", column \" + error.loc.column + \":\" + os.EOL + os.EOL +\n \"... \" + bundleItem.source.slice(error.pos, error.pos + 50) + \" ...\");\n process.exit(1);\n }\n }\n}\n"]}