Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F102563518
index.js.map
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Feb 22, 01:05
Size
9 KB
Mime Type
text/x-Algol68
Expires
Mon, Feb 24, 01:05 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
24344969
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
index.js.map
View Options
{
"version"
:
3
,
"names"
:
[
"blockStatement"
,
"callExpression"
,
"functionExpression"
,
"isAssignmentPattern"
,
"isFunctionDeclaration"
,
"isRestElement"
,
"returnStatement"
,
"isCallExpression"
,
"buildAnonymousExpressionWrapper"
,
"template"
,
"expression"
,
"buildNamedExpressionWrapper"
,
"buildDeclarationWrapper"
,
"statements"
,
"classOrObjectMethod"
,
"path"
,
"callId"
,
"node"
,
"body"
,
"container"
,
"async"
,
"generator"
,
"get"
,
"unwrapFunctionEnvironment"
,
"plainFunction"
,
"inPath"
,
"noNewArrows"
,
"ignoreFunctionLength"
,
"functionId"
,
"nodeParams"
,
"params"
,
"isArrowFunctionExpression"
,
"arrowFunctionToExpression"
,
"isDeclaration"
,
"built"
,
"id"
,
"type"
,
"param"
,
"push"
,
"scope"
,
"generateUidIdentifier"
,
"wrapperArgs"
,
"NAME"
,
"REF"
,
"name"
,
"FUNCTION"
,
"PARAMS"
,
"replaceWith"
,
"insertAfter"
,
"returnFn"
,
"callee"
,
"argument"
,
"nameFunction"
,
"parent"
,
"length"
,
"wrapFunction"
,
"isMethod"
],
"sources"
:
[
"../src/index.ts"
],
"sourcesContent"
:
[
"import type { NodePath } from
\"
@babel/traverse
\"
;
\n
import nameFunction from
\"
@babel/helper-function-name
\"
;
\n
import template from
\"
@babel/template
\"
;
\n
import {
\n
blockStatement,
\n
callExpression,
\n
functionExpression,
\n
isAssignmentPattern,
\n
isFunctionDeclaration,
\n
isRestElement,
\n
returnStatement,
\n
isCallExpression,
\n
} from
\"
@babel/types
\"
;
\n
import type * as t from
\"
@babel/types
\"
;
\n\n
type ExpressionWrapperBuilder<ExtraBody extends t.Node[]> = (
\n
replacements?: Parameters<ReturnType<typeof template.expression>>[0],
\n
) => t.CallExpression & {
\n
callee: t.FunctionExpression & {
\n
body: {
\n
body: [
\n
t.VariableDeclaration & {
\n
declarations: [
\n
{ init: t.FunctionExpression | t.ArrowFunctionExpression },
\n
];
\n
},
\n
...ExtraBody,
\n
];
\n
};
\n
};
\n
};
\n\n
const buildAnonymousExpressionWrapper = template.expression(`
\n
(function () {
\n
var REF = FUNCTION;
\n
return function NAME(PARAMS) {
\n
return REF.apply(this, arguments);
\n
};
\n
})()
\n
`) as ExpressionWrapperBuilder<
\n
[t.ReturnStatement & { argument: t.FunctionExpression }]
\n
>;
\n\n
const buildNamedExpressionWrapper = template.expression(`
\n
(function () {
\n
var REF = FUNCTION;
\n
function NAME(PARAMS) {
\n
return REF.apply(this, arguments);
\n
}
\n
return NAME;
\n
})()
\n
`) as ExpressionWrapperBuilder<
\n
[t.FunctionDeclaration, t.ReturnStatement & { argument: t.Identifier }]
\n
>;
\n\n
const buildDeclarationWrapper = template.statements(`
\n
function NAME(PARAMS) { return REF.apply(this, arguments); }
\n
function REF() {
\n
REF = FUNCTION;
\n
return REF.apply(this, arguments);
\n
}
\n
`);
\n\n
function classOrObjectMethod(
\n
path: NodePath<t.ClassMethod | t.ClassPrivateMethod | t.ObjectMethod>,
\n
callId: t.Expression,
\n
) {
\n
const node = path.node;
\n
const body = node.body;
\n\n
const container = functionExpression(
\n
null,
\n
[],
\n
blockStatement(body.body),
\n
true,
\n
);
\n
body.body = [
\n
returnStatement(callExpression(callExpression(callId, [container]), [])),
\n
];
\n\n
// Regardless of whether or not the wrapped function is a an async method
\n
// or generator the outer function should not be
\n
node.async = false;
\n
node.generator = false;
\n\n
// Unwrap the wrapper IIFE's environment so super and this and such still work.
\n
(
\n
path.get(
\"
body.body.0.argument.callee.arguments.0
\"
) as NodePath
\n
).unwrapFunctionEnvironment();
\n
}
\n\n
function plainFunction(
\n
inPath: NodePath<Exclude<t.Function, t.Method>>,
\n
callId: t.Expression,
\n
noNewArrows: boolean,
\n
ignoreFunctionLength: boolean,
\n
) {
\n
let path: NodePath<
\n
| t.FunctionDeclaration
\n
| t.FunctionExpression
\n
| t.CallExpression
\n
| t.ArrowFunctionExpression
\n
> = inPath;
\n
let node;
\n
let functionId = null;
\n
const nodeParams = inPath.node.params;
\n\n
if (path.isArrowFunctionExpression()) {
\n
if (process.env.BABEL_8_BREAKING) {
\n
path = path.arrowFunctionToExpression({ noNewArrows });
\n
} else {
\n
// arrowFunctionToExpression returns undefined in @babel/traverse < 7.18.10
\n
path = path.arrowFunctionToExpression({ noNewArrows }) ?? path;
\n
}
\n
node = path.node as
\n
| t.FunctionDeclaration
\n
| t.FunctionExpression
\n
| t.CallExpression;
\n
} else {
\n
node = path.node as t.FunctionDeclaration | t.FunctionExpression;
\n
}
\n\n
const isDeclaration = isFunctionDeclaration(node);
\n\n
let built = node;
\n
if (!isCallExpression(node)) {
\n
functionId = node.id;
\n
node.id = null;
\n
node.type =
\"
FunctionExpression
\"
;
\n
built = callExpression(callId, [
\n
node as Exclude<typeof node, t.FunctionDeclaration>,
\n
]);
\n
}
\n\n
const params: t.Identifier[] = [];
\n
for (const param of nodeParams) {
\n
if (isAssignmentPattern(param) || isRestElement(param)) {
\n
break;
\n
}
\n
params.push(path.scope.generateUidIdentifier(
\"
x
\"
));
\n
}
\n\n
const wrapperArgs = {
\n
NAME: functionId || null,
\n
REF: path.scope.generateUidIdentifier(functionId ? functionId.name :
\"
ref
\"
),
\n
FUNCTION: built,
\n
PARAMS: params,
\n
};
\n\n
if (isDeclaration) {
\n
const container = buildDeclarationWrapper(wrapperArgs);
\n
path.replaceWith(container[0]);
\n
path.insertAfter(container[1]);
\n
} else {
\n
let container;
\n\n
if (functionId) {
\n
container = buildNamedExpressionWrapper(wrapperArgs);
\n
} else {
\n
container = buildAnonymousExpressionWrapper(wrapperArgs);
\n\n
const returnFn = container.callee.body.body[1].argument;
\n
nameFunction({
\n
node: returnFn,
\n
parent: (path as NodePath<t.FunctionExpression>).parent,
\n
scope: path.scope,
\n
});
\n
functionId = returnFn.id;
\n
}
\n\n
if (functionId || (!ignoreFunctionLength && params.length)) {
\n
path.replaceWith(container);
\n
} else {
\n
// we can omit this wrapper as the conditions it protects for do not apply
\n
path.replaceWith(built);
\n
}
\n
}
\n
}
\n\n
export default function wrapFunction(
\n
path: NodePath<t.Function>,
\n
callId: t.Expression,
\n
// TODO(Babel 8): Consider defaulting to false for spec compliancy
\n
noNewArrows: boolean = true,
\n
ignoreFunctionLength: boolean = false,
\n
) {
\n
if (path.isMethod()) {
\n
classOrObjectMethod(path, callId);
\n
} else {
\n
plainFunction(
\n
path as NodePath<Exclude<t.Function, t.Method>>,
\n
callId,
\n
noNewArrows,
\n
ignoreFunctionLength,
\n
);
\n
}
\n
}
\n
"
],
"mappings"
:
"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"
}
Event Timeline
Log In to Comment