Files
react-native-devtools-frontend/node_modules/@babel/helper-hoist-variables/lib/index.js
T
Tim van der Lippe fe1b426acc Update Istanbul packages and configuration
- Update istanbul-lib-instrument (breaking change is not affecting us)
- Explicitly update @istanbuljs/schema to 0.1.3. This directly instructs
Babel to accept top-level await. As such, we can remove our special
configuration for our `ui/components/docs` folder, which we can now
safely preprocess.

DISABLE_THIRD_PARTY_CHECK=Karma fix
R=jacktfranklin@chromium.org

Bug: none
Change-Id: I0e96dce0117550f1a2db6a93654d8862d9cae95a
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3158226
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Commit-Queue: Jack Franklin <jacktfranklin@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2021-09-13 14:22:17 +00:00

58 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = hoistVariables;
var _t = require("@babel/types");
const {
assignmentExpression,
expressionStatement,
identifier
} = _t;
const visitor = {
Scope(path, state) {
if (state.kind === "let") path.skip();
},
FunctionParent(path) {
path.skip();
},
VariableDeclaration(path, state) {
if (state.kind && path.node.kind !== state.kind) return;
const nodes = [];
const declarations = path.get("declarations");
let firstId;
for (const declar of declarations) {
firstId = declar.node.id;
if (declar.node.init) {
nodes.push(expressionStatement(assignmentExpression("=", declar.node.id, declar.node.init)));
}
for (const name of Object.keys(declar.getBindingIdentifiers())) {
state.emit(identifier(name), name, declar.node.init !== null);
}
}
if (path.parentPath.isFor({
left: path.node
})) {
path.replaceWith(firstId);
} else {
path.replaceWithMultiple(nodes);
}
}
};
function hoistVariables(path, emit, kind = "var") {
path.traverse(visitor, {
kind,
emit
});
}