UNPKG

babel-plugin-show-source

Version:

Explicit Function.prototype.toString() via Babel

30 lines (24 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createInjectionBlockStatement = createInjectionBlockStatement; exports.createInjectionObjectExpression = createInjectionObjectExpression; exports.default = createInjectionStatement; var _core = require("@babel/core"); const TO_STRING_EXCEPTION = `function() { return null; }`; function createInjectionStatement(funcId, funcCode, property, removeFunction) { if (removeFunction) { return _core.types.variableDeclaration('const', [_core.types.variableDeclarator(_core.types.identifier(funcId), createInjectionObjectExpression(funcCode, property))]); } else { return _core.types.expressionStatement(_core.types.assignmentExpression('=', _core.types.memberExpression(_core.types.identifier(funcId), _core.types.identifier(property)), _core.types.functionExpression(undefined, [], createInjectionBlockStatement(funcCode)))); } } function createInjectionBlockStatement(funcCode) { return _core.types.blockStatement([_core.types.returnStatement(_core.types.stringLiteral(funcCode || TO_STRING_EXCEPTION))]); } function createInjectionObjectExpression(funcCode, property) { return _core.types.objectExpression([_core.types.objectMethod('method', _core.types.identifier(property), [], createInjectionBlockStatement(funcCode))]); }