/** * * Material Design Lite * Copyright 2015 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License * */ 'use strict'; var through = require('through2'); var escodegen = require('escodegen'); var acorn = require('acorn'); function uniffe(contents) { var comments = []; var tokens = []; var ast = acorn.parse(contents, { ranges: true, onComment: comments, onToken: tokens }); escodegen.attachComments(ast, comments, tokens); if (ast.body[0].expression === undefined || ast.body[0].expression.callee === undefined) { return contents; } var rootProgram = ast.body[0].expression.callee.body; rootProgram.type = 'Program'; // drop use strict rootProgram.body = rootProgram.body.slice(1); // attach all leading comments from outside iffe rootProgram.leadingComments = ast.body[0].leadingComments; return escodegen.generate(rootProgram, {comment: true}); } module.exports = function() { return through.obj(function(file, enc, cb) { if (file.isBuffer()) { file.contents = new Buffer(uniffe(file.contents.toString(enc)), enc); } cb(null, file); }); };