* Changes global `require` calls to be referenced from a given global * namespace. e.g. if scopeName is `AMP`, calls will be transformed to * `AMP.require`. * @param {string} src The contents of a JavaScript source file. * @param {string} scopeName The name to prepend to `require` calls. * @ret
(src, scopeName)
| 20 | * @return {string} The transformed source code |
| 21 | */ |
| 22 | function scopeRequire(src, scopeName) { |
| 23 | const ast = rocambole.parse(src); |
| 24 | const globals = detectGlobals(ast); |
| 25 | const flatGlobals = globals.reduce((acc, g) => acc.concat(g.nodes), []); |
| 26 | |
| 27 | flatGlobals |
| 28 | .filter(node => isIdentifier(node) && isRequire(node)) |
| 29 | .forEach(node => |
| 30 | replaceIdentifier(node.parent, test => test === node, scopeName) |
| 31 | ); |
| 32 | |
| 33 | return escodegen.generate(ast, {format: {compact: true}}); |
| 34 | } |
| 35 | |
| 36 | /** |
| 37 | * True if the node is an Identifier node |
no test coverage detected