From 934f72221df0a006a96e9be70e5dae72aa060ab3 Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Wed, 26 Jan 2022 13:54:44 -0500 Subject: [PATCH] Gracefully handle empty "xstyle" prop values (#23190) --- .../backend/StyleX/__tests__/utils-test.js | 23 +++++++++++++++++++ .../src/backend/StyleX/utils.js | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/packages/react-devtools-shared/src/backend/StyleX/__tests__/utils-test.js b/packages/react-devtools-shared/src/backend/StyleX/__tests__/utils-test.js index 6783fea27f7ef..d0b8742a82f81 100644 --- a/packages/react-devtools-shared/src/backend/StyleX/__tests__/utils-test.js +++ b/packages/react-devtools-shared/src/backend/StyleX/__tests__/utils-test.js @@ -33,6 +33,29 @@ describe('Stylex plugin utils', () => { }); }); + it('should gracefully handle empty values', () => { + expect(getStyleXData(null)).toMatchInlineSnapshot(` + Object { + "resolvedStyles": Object {}, + "sources": Array [], + } + `); + + expect(getStyleXData(undefined)).toMatchInlineSnapshot(` + Object { + "resolvedStyles": Object {}, + "sources": Array [], + } + `); + + expect(getStyleXData('')).toMatchInlineSnapshot(` + Object { + "resolvedStyles": Object {}, + "sources": Array [], + } + `); + }); + it('should support simple style objects', () => { defineStyles(` .foo { diff --git a/packages/react-devtools-shared/src/backend/StyleX/utils.js b/packages/react-devtools-shared/src/backend/StyleX/utils.js index 14035204a8ddf..230e08360259b 100644 --- a/packages/react-devtools-shared/src/backend/StyleX/utils.js +++ b/packages/react-devtools-shared/src/backend/StyleX/utils.js @@ -29,6 +29,10 @@ export function crawlData( sources: Set, resolvedStyles: Object, ): void { + if (data == null) { + return; + } + if (isArray(data)) { data.forEach(entry => { if (isArray(entry)) {