aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nyc/lib/instrumenters/istanbul.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/nyc/lib/instrumenters/istanbul.js
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
add linting (and some initial fixes)
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