aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nyc/lib/instrumenters/istanbul.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/nyc/lib/instrumenters/istanbul.js')
-rw-r--r--node_modules/nyc/lib/instrumenters/istanbul.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/nyc/lib/instrumenters/istanbul.js b/node_modules/nyc/lib/instrumenters/istanbul.js
new file mode 100644
index 000000000..c1d4b1338
--- /dev/null
+++ b/node_modules/nyc/lib/instrumenters/istanbul.js
@@ -0,0 +1,49 @@
+'use strict'
+
+var convertSourceMap = require('convert-source-map')
+var mergeSourceMap = require('merge-source-map')
+
+function InstrumenterIstanbul (cwd, options) {
+ var istanbul = InstrumenterIstanbul.istanbul()
+ var instrumenter = istanbul.createInstrumenter({
+ autoWrap: true,
+ coverageVariable: '__coverage__',
+ embedSource: true,
+ noCompact: false,
+ preserveComments: true,
+ produceSourceMap: options.produceSourceMap
+ })
+
+ return {
+ instrumentSync: function (code, filename, sourceMap) {
+ var instrumented = instrumenter.instrumentSync(code, filename)
+ // the instrumenter can optionally produce source maps,
+ // this is useful for features like remapping stack-traces.
+ // TODO: test source-map merging logic.
+ if (options.produceSourceMap) {
+ var lastSourceMap = instrumenter.lastSourceMap()
+ if (lastSourceMap) {
+ if (sourceMap) {
+ lastSourceMap = mergeSourceMap(
+ sourceMap.toObject(),
+ lastSourceMap
+ )
+ }
+ instrumented += '\n' + convertSourceMap.fromObject(lastSourceMap).toComment()
+ }
+ }
+ return instrumented
+ },
+ lastFileCoverage: function () {
+ return instrumenter.lastFileCoverage()
+ }
+ }
+}
+
+InstrumenterIstanbul.istanbul = function () {
+ InstrumenterIstanbul._istanbul || (InstrumenterIstanbul._istanbul = require('istanbul-lib-instrument'))
+
+ return InstrumenterIstanbul._istanbul || (InstrumenterIstanbul._istanbul = require('istanbul'))
+}
+
+module.exports = InstrumenterIstanbul