diff --git a/lib/6to5/transformers/_use-strict.js b/lib/6to5/transformers/_use-strict.js new file mode 100644 index 0000000000..11d682480a --- /dev/null +++ b/lib/6to5/transformers/_use-strict.js @@ -0,0 +1,15 @@ +var b = require("recast").types.builders; + +module.exports = function (ast, file) { + var body = ast.program.body; + var first = body[0]; + + var noStrict = !first || first.type !== "ExpressionStatement" || first.expression.type !== "Literal" || first.expression.value !== "use strict"; + + if (noStrict) { + if (file.opts._noStrict) return; + body.unshift(b.expressionStatement(b.literal("use strict"))); + } else { + if (file.opts._noStrict) body.shift(); + } +};