Sha256: 7be460d1f9616761ba7a737b349a37425281c9ecc870578a4438ac715dcc7321

Contents?: true

Size: 1012 Bytes

Versions: 43

Compression:

Stored size: 1012 Bytes

Contents

/**
 * Converts destructured parameters with default values to non-shorthand syntax.
 * This fixes the only arguments-related bug in ES Modules-supporting browsers (Edge 16 & 17).
 * Use this plugin instead of @babel/plugin-transform-parameters when targeting ES Modules.
 */

export default ({ types: t }) => {
  const isArrowParent = p =>
    p.parentKey === "params" &&
    p.parentPath &&
    t.isArrowFunctionExpression(p.parentPath);

  return {
    name: "transform-edge-default-parameters",
    visitor: {
      AssignmentPattern(path) {
        const arrowArgParent = path.find(isArrowParent);
        if (arrowArgParent && path.parent.shorthand) {
          // In Babel 7+, there is no way to force non-shorthand properties.
          path.parent.shorthand = false;
          (path.parent.extra || {}).shorthand = false;

          // So, to ensure non-shorthand, rename the local identifier so it no longer matches:
          path.scope.rename(path.parent.key.name);
        }
      },
    },
  };
};

Version data entries

43 entries across 42 versions & 8 rubygems

Version Path
immosquare-cleaner-0.1.67 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.66 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.65 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.64 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.63 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
rapid_stack-0.2.0 templates/frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.62 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.61 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.60 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.59 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.58 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.57 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.56 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.55 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.54 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.53 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.52 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
immosquare-cleaner-0.1.51 node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js