UNPKG

ddd-jquery

Version:

de-bowerified, de-amdified, de-gruntified... jQuery.

78 lines (67 loc) 2.02 kB
var through = require('through') , esprima = require('esprima') , estraverse = require('estraverse') , escodegen = require('escodegen') /** * Browserify transform, returning writeable/readable stream. * If the given path contains 'sizzle', remove the UMD guard to * prevent interference when running within a hybrid environment. * The guard is replaced with a simple `module.exports = Sizzle;`. * */ module.exports = function (file) { var data = ''; var stream; if (file.indexOf('sizzle') === -1) { stream = through(); } else { stream = through(write, end); } return stream; function write(buf) { data += buf } function end() { var ast = esprima.parse(data) estraverse.replace(ast, { enter: function(node) { if ( node.type === 'IfStatement' && node.test.type === 'LogicalExpression' && node.test.operator === '&&' && node.test.left.type === 'BinaryExpression' && node.test.left.left && node.test.left.left.type === 'UnaryExpression' && node.test.left.left.operator === 'typeof' && node.test.left.left.argument && node.test.left.left.argument.name === 'define' ) { return { "type": "ExpressionStatement", "expression": { "type": "AssignmentExpression", "operator": "=", "left": { "type": "MemberExpression", "computed": false, "object": { "type": "Identifier", "name": "module" }, "property": { "type": "Identifier", "name": "exports" } }, "right": { "type": "Identifier", "name": "Sizzle" } } } } } }); var out = escodegen.generate(ast); stream.queue(out); stream.queue(null); } }