1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- 'use strict';
- module.exports = function autoImporter(babel) {
- const t = babel.types;
- function getAssignIdent(path, file, state) {
- if (!state.id) {
- state.id = path.scope.generateUidIdentifier('assign');
- path.scope.getProgramParent().push({
- id: state.id,
- init: t.callExpression(
- t.identifier('require'),
- [t.stringLiteral('object-assign')]
- ),
- });
- }
- return state.id;
- }
- return {
- pre: function() {
- // map from module to generated identifier
- this.id = null;
- },
- visitor: {
- CallExpression: function(path, file) {
- if (path.get('callee').matchesPattern('Object.assign')) {
- // generate identifier and require if it hasn't been already
- var id = getAssignIdent(path, file, this);
- path.node.callee = id;
- }
- },
- MemberExpression: function(path, file) {
- if (path.matchesPattern('Object.assign')) {
- var id = getAssignIdent(path, file, this);
- path.replaceWith(id);
- }
- },
- },
- };
- };
|