From 000a2ca0b18abe83649e219fb14d916d7a503c1a Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Thu, 23 Apr 2020 23:49:20 +0200 Subject: [PATCH] fix(optimize-hook-destructuring): handle skipped items --- .../src/__tests__/optimize-hook-destructuring.js | 12 ++++++++++++ .../src/optimize-hook-destructuring.ts | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/babel-preset-gatsby/src/__tests__/optimize-hook-destructuring.js b/packages/babel-preset-gatsby/src/__tests__/optimize-hook-destructuring.js index a28360cb5bc1b..cc0c91774650a 100644 --- a/packages/babel-preset-gatsby/src/__tests__/optimize-hook-destructuring.js +++ b/packages/babel-preset-gatsby/src/__tests__/optimize-hook-destructuring.js @@ -36,4 +36,16 @@ describe(`optimize-hook-destructuring`, () => { `"\\"use strict\\";var _react=require(\\"react\\");const{0:count,1:setCount}=(0,_react.useState)(0);"` ) }) + + it(`should handle skipped items`, () => { + const input = trim` + import { useState } from 'react'; + const [, setCount] = useState(0); + ` + + expect(() => babel(input)).not.toThrow() + expect(babel(input)).toMatchInlineSnapshot( + `"\\"use strict\\";var _react=require(\\"react\\");const{1:setCount}=(0,_react.useState)(0);"` + ) + }) }) diff --git a/packages/babel-preset-gatsby/src/optimize-hook-destructuring.ts b/packages/babel-preset-gatsby/src/optimize-hook-destructuring.ts index eb997133eec68..cd0f924ba82f0 100644 --- a/packages/babel-preset-gatsby/src/optimize-hook-destructuring.ts +++ b/packages/babel-preset-gatsby/src/optimize-hook-destructuring.ts @@ -52,8 +52,14 @@ export default function ({ if (!(onlyBuiltIns ? isBuiltInHook : isHook).test(hookName)) return path.parent.id = t.objectPattern( - path.parent.id.elements.map((element, i) => - t.objectProperty(t.numericLiteral(i), element!) + path.parent.id.elements.reduce( + (acc: BabelTypes.ObjectProperty[], element, i) => { + if (element) { + acc.push(t.objectProperty(t.numericLiteral(i), element)) + } + return acc + }, + [] ) ) },