From aa773172311dcada759dfbaac485f4bc6e00bc21 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:31:11 +0800 Subject: added babel --- .../@babel/helper-wrap-function/lib/index.js | 123 +++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 node_modules/@babel/helper-wrap-function/lib/index.js (limited to 'node_modules/@babel/helper-wrap-function/lib/index.js') diff --git a/node_modules/@babel/helper-wrap-function/lib/index.js b/node_modules/@babel/helper-wrap-function/lib/index.js new file mode 100644 index 00000000..3c7b997a --- /dev/null +++ b/node_modules/@babel/helper-wrap-function/lib/index.js @@ -0,0 +1,123 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = wrapFunction; +var _helperFunctionName = require("@babel/helper-function-name"); +var _template = require("@babel/template"); +var _t = require("@babel/types"); +const { + blockStatement, + callExpression, + functionExpression, + isAssignmentPattern, + isFunctionDeclaration, + isRestElement, + returnStatement, + isCallExpression +} = _t; +const buildAnonymousExpressionWrapper = _template.default.expression(` + (function () { + var REF = FUNCTION; + return function NAME(PARAMS) { + return REF.apply(this, arguments); + }; + })() +`); +const buildNamedExpressionWrapper = _template.default.expression(` + (function () { + var REF = FUNCTION; + function NAME(PARAMS) { + return REF.apply(this, arguments); + } + return NAME; + })() +`); +const buildDeclarationWrapper = _template.default.statements(` + function NAME(PARAMS) { return REF.apply(this, arguments); } + function REF() { + REF = FUNCTION; + return REF.apply(this, arguments); + } +`); +function classOrObjectMethod(path, callId) { + const node = path.node; + const body = node.body; + const container = functionExpression(null, [], blockStatement(body.body), true); + body.body = [returnStatement(callExpression(callExpression(callId, [container]), []))]; + node.async = false; + node.generator = false; + path.get("body.body.0.argument.callee.arguments.0").unwrapFunctionEnvironment(); +} +function plainFunction(inPath, callId, noNewArrows, ignoreFunctionLength) { + let path = inPath; + let node; + let functionId = null; + const nodeParams = inPath.node.params; + if (path.isArrowFunctionExpression()) { + { + var _path$arrowFunctionTo; + path = (_path$arrowFunctionTo = path.arrowFunctionToExpression({ + noNewArrows + })) != null ? _path$arrowFunctionTo : path; + } + node = path.node; + } else { + node = path.node; + } + const isDeclaration = isFunctionDeclaration(node); + let built = node; + if (!isCallExpression(node)) { + functionId = node.id; + node.id = null; + node.type = "FunctionExpression"; + built = callExpression(callId, [node]); + } + const params = []; + for (const param of nodeParams) { + if (isAssignmentPattern(param) || isRestElement(param)) { + break; + } + params.push(path.scope.generateUidIdentifier("x")); + } + const wrapperArgs = { + NAME: functionId || null, + REF: path.scope.generateUidIdentifier(functionId ? functionId.name : "ref"), + FUNCTION: built, + PARAMS: params + }; + if (isDeclaration) { + const container = buildDeclarationWrapper(wrapperArgs); + path.replaceWith(container[0]); + path.insertAfter(container[1]); + } else { + let container; + if (functionId) { + container = buildNamedExpressionWrapper(wrapperArgs); + } else { + container = buildAnonymousExpressionWrapper(wrapperArgs); + const returnFn = container.callee.body.body[1].argument; + (0, _helperFunctionName.default)({ + node: returnFn, + parent: path.parent, + scope: path.scope + }); + functionId = returnFn.id; + } + if (functionId || !ignoreFunctionLength && params.length) { + path.replaceWith(container); + } else { + path.replaceWith(built); + } + } +} +function wrapFunction(path, callId, noNewArrows = true, ignoreFunctionLength = false) { + if (path.isMethod()) { + classOrObjectMethod(path, callId); + } else { + plainFunction(path, callId, noNewArrows, ignoreFunctionLength); + } +} + +//# sourceMappingURL=index.js.map -- cgit v1.2.3