12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _helperPluginUtils = require("@babel/helper-plugin-utils");
- var _helperReplaceSupers = require("@babel/helper-replace-supers");
- var _core = require("@babel/core");
- function replacePropertySuper(path, getObjectRef, file) {
- const replaceSupers = new _helperReplaceSupers.default({
- getObjectRef: getObjectRef,
- methodPath: path,
- file: file
- });
- replaceSupers.replace();
- }
- var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
- api.assertVersion(7);
- const newLets = new Set();
- return {
- name: "transform-object-super",
- visitor: {
- Loop: {
- exit(path) {
- newLets.forEach(v => {
- if (v.scopePath === path) {
- path.scope.push({
- id: v.id,
- kind: "let"
- });
- path.scope.crawl();
- path.requeue();
- newLets.delete(v);
- }
- });
- }
- },
- ObjectExpression(path, state) {
- let objectRef;
- const getObjectRef = () => objectRef = objectRef || path.scope.generateUidIdentifier("obj");
- path.get("properties").forEach(propPath => {
- if (!propPath.isMethod()) return;
- replacePropertySuper(propPath, getObjectRef, state.file);
- });
- if (objectRef) {
- const scopePath = path.findParent(p => p.isFunction() || p.isProgram() || p.isLoop());
- const useLet = scopePath.isLoop();
- if (useLet) {
- newLets.add({
- scopePath,
- id: _core.types.cloneNode(objectRef)
- });
- } else {
- path.scope.push({
- id: _core.types.cloneNode(objectRef),
- kind: "var"
- });
- }
- path.replaceWith(_core.types.assignmentExpression("=", _core.types.cloneNode(objectRef), path.node));
- }
- }
- }
- };
- });
- //# sourceMappingURL=index.js.map
|