From 51c6b5a52dff82fa1774d400a49c3fc099b8e5c2 Mon Sep 17 00:00:00 2001 From: yassin-kammoun-sonarsource Date: Mon, 18 Sep 2023 10:38:25 +0200 Subject: [PATCH] Fix FP S6759 (`prefer-read-only-props`): Restrict the scope to functional components --- .../expected/ts/Joust/typescript-S6759.json | 171 - .../ts/ant-design/typescript-S6759.json | 1453 +------ .../expected/ts/console/typescript-S6759.json | 1963 +--------- .../ts/courselit/typescript-S6759.json | 381 +- .../expected/ts/desktop/typescript-S6759.json | 10 - .../expected/ts/eigen/typescript-S6759.json | 3328 +---------------- .../expected/ts/moose/typescript-S6759.json | 13 - .../ts/searchkit/typescript-S6759.json | 9 +- .../expected/ts/vuetify/typescript-S6759.json | 15 +- .../jsts/src/linter/quickfixes/messages.ts | 1 - packages/jsts/src/linter/quickfixes/rules.ts | 2 +- packages/jsts/src/rules/S6759/cb.fixture.tsx | 112 + packages/jsts/src/rules/S6759/cb.test.ts | 28 + packages/jsts/src/rules/S6759/index.ts | 20 + packages/jsts/src/rules/S6759/rule.ts | 193 + packages/jsts/src/rules/index.ts | 2 + .../sonar-prefer-read-only-props.tsx | 9 + .../checks/PreferReadOnlyPropsCheck.java | 2 +- .../javascript/rules/javascript/S6759.html | 64 +- 19 files changed, 439 insertions(+), 7337 deletions(-) delete mode 100644 its/ruling/src/test/expected/ts/Joust/typescript-S6759.json delete mode 100644 its/ruling/src/test/expected/ts/desktop/typescript-S6759.json delete mode 100644 its/ruling/src/test/expected/ts/moose/typescript-S6759.json create mode 100644 packages/jsts/src/rules/S6759/cb.fixture.tsx create mode 100644 packages/jsts/src/rules/S6759/cb.test.ts create mode 100644 packages/jsts/src/rules/S6759/index.ts create mode 100644 packages/jsts/src/rules/S6759/rule.ts create mode 100644 packages/jsts/tests/linter/fixtures/wrapper/quickfixes/sonar-prefer-read-only-props.tsx diff --git a/its/ruling/src/test/expected/ts/Joust/typescript-S6759.json b/its/ruling/src/test/expected/ts/Joust/typescript-S6759.json deleted file mode 100644 index eeea862fb18..00000000000 --- a/its/ruling/src/test/expected/ts/Joust/typescript-S6759.json +++ /dev/null @@ -1,171 +0,0 @@ -{ -"Joust:ts/components/EventLog.tsx": [ -11, -12, -13, -14 -], -"Joust:ts/components/EventLogCard.tsx": [ -5 -], -"Joust:ts/components/EventLogLine.tsx": [ -6, -7 -], -"Joust:ts/components/GameWrapper.tsx": [ -23, -24, -25, -26, -27, -28 -], -"Joust:ts/components/LoadingScreen.tsx": [ -5 -], -"Joust:ts/components/LocaleSelector.tsx": [ -5, -6, -7 -], -"Joust:ts/components/MessagePicker.tsx": [ -4, -5, -6 -], -"Joust:ts/components/Scrubber.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25 -], -"Joust:ts/components/Settings.tsx": [ -5, -6, -7, -8, -9 -], -"Joust:ts/components/SetupWidget.tsx": [ -16, -17, -18 -], -"Joust:ts/components/SpeedSelector.tsx": [ -5, -6, -7, -8 -], -"Joust:ts/components/Timeline.tsx": [ -8, -9, -10, -11, -12, -13 -], -"Joust:ts/components/Tooltipper.tsx": [ -5, -6, -7, -8, -9 -], -"Joust:ts/components/Turn.tsx": [ -6, -7, -8, -9, -10, -11 -], -"Joust:ts/components/game/Card.tsx": [ -14, -15, -16, -17, -18, -19, -20, -21, -22 -], -"Joust:ts/components/game/EndTurnButton.tsx": [ -7, -8 -], -"Joust:ts/components/game/Player.tsx": [ -33, -34, -35, -36, -37, -38 -], -"Joust:ts/components/game/TwoPlayerGame.tsx": [ -19, -20, -21, -22, -23, -24 -], -"Joust:ts/components/game/stats/Armor.tsx": [ -4 -], -"Joust:ts/components/game/stats/Attack.tsx": [ -4, -5 -], -"Joust:ts/components/game/stats/Cost.tsx": [ -4, -5 -], -"Joust:ts/components/game/stats/Damage.tsx": [ -4 -], -"Joust:ts/components/game/stats/Durability.tsx": [ -4, -5, -6 -], -"Joust:ts/components/game/stats/Healing.tsx": [ -4 -], -"Joust:ts/components/game/stats/Health.tsx": [ -4, -5, -6 -], -"Joust:ts/components/game/stats/SecretText.tsx": [ -4, -5 -], -"Joust:ts/components/game/visuals/CardArt.tsx": [ -12, -13, -14, -15 -], -"Joust:ts/components/game/visuals/HeroArt.tsx": [ -9 -], -"Joust:ts/components/game/visuals/InHandCardArt.tsx": [ -7, -8, -9, -10 -] -} diff --git a/its/ruling/src/test/expected/ts/ant-design/typescript-S6759.json b/its/ruling/src/test/expected/ts/ant-design/typescript-S6759.json index 5d762da096a..2f915f97545 100644 --- a/its/ruling/src/test/expected/ts/ant-design/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/ant-design/typescript-S6759.json @@ -1,1473 +1,60 @@ { -"ant-design:components/_util/ActionButton.tsx": [ -8, -9, -10, -11, -12, -13, -14, -15, -16 -], -"ant-design:components/_util/transButton.tsx": [ -10, -11, -12, -13 -], -"ant-design:components/_util/wave.tsx": [ -29, -30, -31 -], -"ant-design:components/affix/index.tsx": [ -24, -26, -27, -29, -31, -32, -33, -34, -38 -], -"ant-design:components/alert/ErrorBoundary.tsx": [ -5, -6, -7 -], -"ant-design:components/alert/index.tsx": [ -66, -67, -68, -69, -86, -87, -88, -89, -90 -], -"ant-design:components/anchor/Anchor.tsx": [ -70 -], "ant-design:components/anchor/__tests__/Anchor.test.tsx": [ 180 ], -"ant-design:components/auto-complete/index.tsx": [ -42, -43 -], -"ant-design:components/avatar/SizeContext.tsx": [ -9, -10 -], -"ant-design:components/avatar/avatar.tsx": [ -15, -20, -21, -23, -25, -26, -28, -29, -30, -31, -32, -33, -34, -37 -], -"ant-design:components/avatar/group.tsx": [ -12, -13, -14, -15, -16, -17, -18, -19, -24 -], -"ant-design:components/back-top/index.tsx": [ -15, -16, -17, -18, -19, -20, -21, -22, -23 -], -"ant-design:components/badge/Ribbon.tsx": [ -11, -12, -13, -14, -15, -16, -17 -], -"ant-design:components/badge/ScrollNumber.tsx": [ -8, -9, -10, -11, -12, -13, -14, -15, -16 -], "ant-design:components/badge/SingleNumber.tsx": [ -5, -6, -7, -8, -35, -36, -37 -], -"ant-design:components/button/LoadingIcon.tsx": [ -6, -7, -8, -41, -41 -], -"ant-design:components/button/__tests__/index.test.tsx": [ -90 -], -"ant-design:components/button/button-group.tsx": [ -8, -9, -10, 11, -12 +52 ], "ant-design:components/calendar/Header.tsx": [ -14, -14, -15, -15, -16, -16, -17, -17, -18, -18, -19, -19, -20, -20, -21, -21, -121, -122, -143, -144, -145, -146, -147, -148, -149, -150, -151 -], -"ant-design:components/calendar/generateCalendar.tsx": [ -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62 -], -"ant-design:components/card/Card.tsx": [ -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42 -], -"ant-design:components/card/Grid.tsx": [ -7, -8, -9, -10 -], -"ant-design:components/card/Meta.tsx": [ -7, -8, -9, -10, -11, -12 -], -"ant-design:components/carousel/index.tsx": [ -12, -13, -14, -15, -16, -17, -18 -], -"ant-design:components/cascader/index.tsx": [ -103, -104, -105, -106, -107, -108, -109, -110 -], -"ant-design:components/checkbox/Checkbox.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, 24, -25, -26, -27, -28, -29, -30, -45 -], -"ant-design:components/checkbox/Group.tsx": [ -19, -20, -21, -22, -23, -27, -28, -29, -30, -31 -], -"ant-design:components/collapse/CollapsePanel.tsx": [ -10, -11, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22 -], -"ant-design:components/comment/index.tsx": [ -7, -9, -11, -13, -15, -17, -19, -21, -23 -], -"ant-design:components/config-provider/DisabledContext.tsx": [ -8, -9 -], -"ant-design:components/config-provider/SizeContext.tsx": [ -8, -9 -], -"ant-design:components/config-provider/index.tsx": [ -60, -61, -62, -63, -64, -65, -66, -67, -68, -73, -76, -79, -80, -83, -84, -85, -86, -89, -90, -94, -95 +78, +125, +153 ], -"ant-design:components/descriptions/Cell.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19 +"ant-design:components/date-picker/PickerButton.tsx": [ +5 ], -"ant-design:components/descriptions/Row.tsx": [ -90, -91, -92, -93, -94, -95, -96 +"ant-design:components/date-picker/PickerTag.tsx": [ +5 ], "ant-design:components/descriptions/index.tsx": [ -100, -101, -102, -103, -104, -105, -106, -107, -108, -109, -110, -111, -112 -], -"ant-design:components/divider/index.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13, -14 -], -"ant-design:components/drawer/index.tsx": [ -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68 +115 ], "ant-design:components/form/ErrorList.tsx": [ -31, -32, -33, -34, -35 -], -"ant-design:components/form/Form.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -36 +38 ], "ant-design:components/form/FormItem.tsx": [ -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -75 -], -"ant-design:components/form/FormItemInput.tsx": [ -10, -11, -12, -13, -15, -29, -30, -31, -32 -], -"ant-design:components/form/FormItemLabel.tsx": [ -36, -37, -38, -39, -40, -41, -42, -45, -45 -], -"ant-design:components/form/FormList.tsx": [ -22, -23, -24, -25, -26 -], -"ant-design:components/form/__tests__/ref.test.tsx": [ -14, -15 -], -"ant-design:components/form/context.tsx": [ -39, -67, -68 -], -"ant-design:components/grid/col.tsx": [ -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33 -], -"ant-design:components/grid/row.tsx": [ -16, -17, -18, -19, -20 -], -"ant-design:components/input-number/index.tsx": [ -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"ant-design:components/input/ClearableLabeledInput.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -40, -41, -42, -43, -44, -45, -46 -], -"ant-design:components/input/Group.tsx": [ -8, -9, -10, -11, -12, -13, -14, -15, -16, -17 -], -"ant-design:components/input/Input.tsx": [ -117, -118, -119, -120 -], -"ant-design:components/input/Password.tsx": [ -16, -17 -], -"ant-design:components/input/Search.tsx": [ -13, -14, -21, -22 -], -"ant-design:components/input/TextArea.tsx": [ -48, -49, -50, -51, -52, -53 -], -"ant-design:components/layout/Sider.tsx": [ -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45 -], -"ant-design:components/layout/layout.tsx": [ -11, -11, -11, -12, -12, -12, -29, -29 -], -"ant-design:components/list/Item.tsx": [ -18, -19, -20, -21, -22, -23, -24, -28, -29, -30, -31, -32, -33, -34 +102 ], "ant-design:components/list/index.tsx": [ -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57 -], -"ant-design:components/locale-provider/LocaleReceiver.tsx": [ -10, -11, -12 -], -"ant-design:components/locale-provider/index.tsx": [ -51, -52, -53 -], -"ant-design:components/mentions/index.tsx": [ -28, -29 -], -"ant-design:components/menu/MenuDivider.tsx": [ -7, -8, -9, -10 -], -"ant-design:components/menu/MenuItem.tsx": [ -15, -16, -17 -], -"ant-design:components/menu/OverrideContext.tsx": [ -6, -7, -8, -9, -10, -11, -21 +73 ], "ant-design:components/menu/SubMenu.tsx": [ -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27 -], -"ant-design:components/menu/index.tsx": [ -30, -30, -31, -31, -38, -38, -40, -40, -45 -], -"ant-design:components/modal/ConfirmDialog.tsx": [ -11, -12, -13, -14, -15 -], -"ant-design:components/modal/Modal.tsx": [ -40, -42, -44, -46, -48, -50, -51, -53, -55, -57, -59, -61, -63, -65, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87 -], -"ant-design:components/modal/useModal/HookModal.tsx": [ -9, -10 -], -"ant-design:components/page-header/index.tsx": [ -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33 -], -"ant-design:components/pagination/Pagination.tsx": [ -16, -17, -18, -19, -20 -], -"ant-design:components/popconfirm/index.tsx": [ -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31 -], -"ant-design:components/popover/index.tsx": [ -10, -11, -13 -], -"ant-design:components/progress/Circle.tsx": [ -9, -10, -11, -12 -], -"ant-design:components/progress/Line.tsx": [ -8, -9, -10, -11 -], -"ant-design:components/progress/Steps.tsx": [ -6, -7, -8, -9 -], -"ant-design:components/progress/progress.tsx": [ -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -51, -52 -], -"ant-design:components/rate/index.tsx": [ -9 -], -"ant-design:components/result/index.tsx": [ -54, -55, -56, -84, -85 -], -"ant-design:components/segmented/index.tsx": [ -37, -39, -41 -], -"ant-design:components/select/index.tsx": [ -53, -54, -55 -], -"ant-design:components/skeleton/Avatar.tsx": [ -9 -], -"ant-design:components/skeleton/Button.tsx": [ -9, -10 -], -"ant-design:components/skeleton/Element.tsx": [ -5, -6, -7, -8, -9, -10 -], -"ant-design:components/skeleton/Input.tsx": [ -9, -10 -], -"ant-design:components/skeleton/Paragraph.tsx": [ -7, -8, -9, -10, -11 -], -"ant-design:components/skeleton/Skeleton.tsx": [ -19, -20, -21, -22, -23, -24, -25, -26, -27, -28 -], -"ant-design:components/skeleton/Title.tsx": [ -6, -7, -8, -9 +30 ], "ant-design:components/space/Item.tsx": [ -5, -6, -7, -8, -9, -10, -11 -], -"ant-design:components/space/index.tsx": [ -19, -20, -21, -22, -23, -25, -26, -27 -], -"ant-design:components/spin/index.tsx": [ -15, -15, -16, -16, -17, -17, -18, -18, -19, -19, -20, -20, -21, -21, -22, -22, -23, -23, -24, -24, -28 -], -"ant-design:components/statistic/Countdown.tsx": [ -11, -12, -13, 14 ], -"ant-design:components/statistic/Number.tsx": [ -6 -], -"ant-design:components/statistic/Statistic.tsx": [ -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27 -], -"ant-design:components/switch/index.tsx": [ -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32 -], -"ant-design:components/table/Table.tsx": [ -83, -84, -85, -86, -87, -88, -89, -90, -92, -98, -100, -101, -104, -105 -], "ant-design:components/table/hooks/useFilter/FilterDropdown.tsx": [ -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119 -], -"ant-design:components/table/hooks/useFilter/FilterSearch.tsx": [ -7, -8, -9, -10, -11 -], -"ant-design:components/table/hooks/useFilter/FilterWrapper.tsx": [ -4, -5 +122 ], "ant-design:components/tabs/index.tsx": [ -21, -22, -23, -24, -25, -26 -], -"ant-design:components/tag/CheckableTag.tsx": [ -6, -7, -8, -14, -15, -16, -17 -], -"ant-design:components/tag/index.tsx": [ -16, -17, -18, -19, -20, -21, -22, -23, -24 -], -"ant-design:components/time-picker/index.tsx": [ -16, -30, -31, -32 -], -"ant-design:components/timeline/TimelineItem.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13, -14 -], -"ant-design:components/transfer/ListBody.tsx": [ -16, -17, -18 -], -"ant-design:components/transfer/ListItem.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19 -], -"ant-design:components/transfer/index.tsx": [ -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -92, -93, -94, -95, -96, -97, -98, -99, -100 -], -"ant-design:components/transfer/list.tsx": [ -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -57, -58, -59, -60, -61, -62, -63, -67, -68, -69, -70, -71, -72, -73 -], -"ant-design:components/transfer/operation.tsx": [ -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18 +29 ], "ant-design:components/transfer/search.tsx": [ -7, -8, -9, -10, -11, -12 -], -"ant-design:components/tree-select/index.tsx": [ -49, -50, -51, -52, -53, -54, -55, -56 -], -"ant-design:components/tree/DirectoryTree.tsx": [ -20 -], -"ant-design:components/tree/Tree.tsx": [ -109, -110, -112, -114, -116, -118, -120, -122, -124, -126, -128, -130, -132, -134, -136, -137, -139, -140, -142, -143, -144, -145, -149, -150, -151, -152 -], -"ant-design:components/typography/Base/Ellipsis.tsx": [ -6, -7, -8, -9, -10, -11 -], -"ant-design:components/typography/Base/EllipsisTooltip.tsx": [ -5, -6, -7, -8 -], -"ant-design:components/typography/Base/index.tsx": [ -62, -63, -64, -65, -66, -67, -69, -70, -71, -72, -73, -74, -75, -113 -], -"ant-design:components/typography/Editable.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23 -], -"ant-design:components/typography/Link.tsx": [ -9 -], -"ant-design:components/typography/Paragraph.tsx": [ -6 -], -"ant-design:components/typography/Text.tsx": [ -8, -9 -], -"ant-design:components/typography/Typography.tsx": [ -8, -9, -10, -11, -12, -13, -17, -19 -], -"ant-design:components/upload/Dragger.tsx": [ -5 -], -"ant-design:components/upload/UploadList/ListItem.tsx": [ -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -41, -42, -43, -44, -45 -], -"ant-design:site/theme/template/Color/ColorPicker.tsx": [ -7, -8, -9, -10, -11, -12 +15 ], "ant-design:site/theme/template/Components/Helmet.tsx": [ -6 -], -"ant-design:site/theme/template/Content/Article.tsx": [ -14, -15, -18, -31, -32 -], -"ant-design:site/theme/template/Content/EditButton.tsx": [ -8, 9 ], -"ant-design:site/theme/template/Home/Banner/index.tsx": [ -11 -], -"ant-design:site/theme/template/Home/DesignPage/InteractiveIcon.tsx": [ -9, -10, -11 -], -"ant-design:site/theme/template/Home/DesignPage/index.tsx": [ -17, -18, -19, -20, -21, -72, -72, -100 -], -"ant-design:site/theme/template/Home/MorePage.tsx": [ -12, -13, -14, -15, -16, -17, -18, -19 -], -"ant-design:site/theme/template/Home/RecommendPage.tsx": [ -11, -12, -13, -14, -15, -16, -20 -], -"ant-design:site/theme/template/Home/index.tsx": [ -30, -31, -32, -46 -], -"ant-design:site/theme/template/IconDisplay/Category.tsx": [ -9, -10, -11, -12, -13 -], -"ant-design:site/theme/template/IconDisplay/CopyableIcon.tsx": [ -13, -14, -15, -16, -17 -], -"ant-design:site/theme/template/IconDisplay/IconPicSearcher.tsx": [ -23 -], -"ant-design:site/theme/template/IconDisplay/index.tsx": [ -24 -], -"ant-design:site/theme/template/IconDisplay/themeIcons.tsx": [ -4, -4, -4, -5, -5, -5, -6, -6, -6, -7, -7, -7, -8, -8, -8, -9, -9, -9, -10, -10, -10, -11, -11, -11, -12, -12, +"ant-design:site/theme/template/Content/EditButton.tsx": [ 12 ], -"ant-design:site/theme/template/Layout/Header/Github.tsx": [ -7 -], -"ant-design:site/theme/template/Layout/Header/Logo.tsx": [ -8, -9 -], -"ant-design:site/theme/template/Layout/Header/Navigation.tsx": [ -15, -16, -17, -18, -19, -20, -21, -22, -23 -], -"ant-design:site/theme/template/Layout/Header/SearchBar.tsx": [ -21, -22, -23, -24 -], -"ant-design:site/theme/template/Layout/Header/index.tsx": [ -29, -32, -33, -34, -35 +"ant-design:site/theme/template/Home/DesignPage/InteractiveIcon.tsx": [ +14 ], "ant-design:site/theme/template/NotFound.tsx": [ -8, -18 -], -"ant-design:site/theme/template/Resources/Articles/index.tsx": [ -32, -33, -34 -], -"ant-design:site/theme/template/Resources/index.tsx": [ -33, -37, -38, -39 +29 ] } diff --git a/its/ruling/src/test/expected/ts/console/typescript-S6759.json b/its/ruling/src/test/expected/ts/console/typescript-S6759.json index 9c0daa2ce1e..1ff5fb8d1bd 100644 --- a/its/ruling/src/test/expected/ts/console/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/console/typescript-S6759.json @@ -1,1984 +1,51 @@ { -"console:src/components/ApiLayover/ApiLayover.tsx": [ -10, -11 -], -"console:src/components/Auth0LockWrapper/Auth0LockWrapper.tsx": [ -17, -18, -19, -20 -], "console:src/components/Checkbox.tsx": [ -6, -7, -8 -], -"console:src/components/Datepicker/Datepicker.tsx": [ -23, -24, -25, -26, -27, -28, -29, -30, -32, -33, -35 -], -"console:src/components/FloatingInput/FloatingInput.tsx": [ -7, -8 -], -"console:src/components/Form/Checkbox.tsx": [ -55, -56, -57, -58, -59 -], -"console:src/components/GeneratedMutations/GeneratedMutations.tsx": [ -12, -13, -14, -15, -16, -17, -18, -19 -], -"console:src/components/Header/Header.tsx": [ -7, -8, -9, -10, 11 ], -"console:src/components/Help/Alert.tsx": [ -10, -11, -12 -], -"console:src/components/Help/Help.tsx": [ -10, -11, -12 -], -"console:src/components/IconNotification/IconNotification.tsx": [ -6 -], -"console:src/components/InfiniteTable/InfiniteTable.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -23, -25, -26, -27, -28, -30, -31, -32, -34, -36, -37, -39, -41, -42, -44 -], -"console:src/components/Info.tsx": [ -5, -6, -7, -8, -9, -10, -11, -12, -13 -], "console:src/components/Links.tsx": [ -7, -7, -8, -8, -9, -9, -10, -10, -11, -11, -12, -12, -13, -13, -14, -14, -15, -15, -16, -16, -17, -17, -18, -18 -], -"console:src/components/Loading/Loading.tsx": [ -5, -6, -7, -8 -], -"console:src/components/Modal.tsx": [ -5, -6, -7, -8 -], -"console:src/components/ModalDocs/DocsResource.tsx": [ -7 -], -"console:src/components/ModalDocs/ModalDocs.tsx": [ -17, -19, -20, -21, -22 -], -"console:src/components/ModalDocs/VideoPopup.tsx": [ -6, -7 -], -"console:src/components/NewToggleButton/NewToggleButton.tsx": [ -7, -8, -9, -10 -], -"console:src/components/NodeSelector/NodeSelector.tsx": [ -12, -13, -14, -15, -16, -17, -18 -], -"console:src/components/Popup.tsx": [ -7, -8 -], -"console:src/components/PopupFooter.tsx": [ -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15 -], -"console:src/components/PopupHeader.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13, -14, -110, -111, -112, -113 -], -"console:src/components/PopupWrapper/PopupWrapper.tsx": [ -9, -10, -11 -], -"console:src/components/ProgressIndicator/ProgressIndicator.tsx": [ -5, -6, -7 -], -"console:src/components/ProjectSelection/ProjectSelection.tsx": [ -28, -29, -30, -31, -32, -33, -34, -35, -36, -37 -], -"console:src/components/QueryHistory/QueryHistory.tsx": [ -20, -21, -22 -], -"console:src/components/RedirectOnMount/RedirectOnMount.tsx": [ -6, -7 -], -"console:src/components/RelationExplanation/RelationExplanation.tsx": [ -8, -9, -10, -11, -12, -13, -14 -], -"console:src/components/ScrollBox/ScrollBox.tsx": [ -5, -6, -7, -8, -9 -], -"console:src/components/TemporaryNotification/TemporaryNotification.tsx": [ -8, -9, -10 -], -"console:src/components/Tether/Tether.tsx": [ -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -23 -], -"console:src/components/ToggleButton/ToggleButton.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19 -], -"console:src/components/onboarding/OnboardingPopup/OnboardingPopup.tsx": [ -9, -10, -11, -12, -13, -14, -15 -], -"console:src/views/ActionsView/ActionBoxes.tsx": [ -28, -29, -30, -31 -], -"console:src/views/ActionsView/ActionHandlerBox.tsx": [ -8, -9, -10, -11 -], -"console:src/views/ActionsView/ActionRow.tsx": [ -13, -14, -15 -], -"console:src/views/ActionsView/ActionTrigger.tsx": [ -10, -11, -12, -13 -], -"console:src/views/ActionsView/ActionTriggerBox.tsx": [ -13, -14, -15, -16, -17, -18, -19 -], -"console:src/views/ActionsView/ActionsView.tsx": [ -18, -19, -20, -21, -22 -], -"console:src/views/AfterSignUpView/AfterSignUpView.tsx": [ -65, -66 -], -"console:src/views/AuthView/AuthView.tsx": [ -6 -], -"console:src/views/CLIAuthView/CLIAuthView/CLIAuthView.tsx": [ -15 -], -"console:src/views/CLIAuthView/CLIAuthView/Left.tsx": [ -5 -], -"console:src/views/CLIAuthView/CLIAuthView/Right.tsx": [ -6, -7, -8, -9, -10 -], -"console:src/views/FunctionsView/FunctionLogs/FunctionLogs.tsx": [ -13, -14, -15 -], -"console:src/views/FunctionsView/FunctionLogs/Log.tsx": [ -12 -], -"console:src/views/FunctionsView/FunctionPopup/FunctionPopup.tsx": [ -43, -44, -45, -46, -47, -48, -49, -50, -51 +22, +215 ], "console:src/views/FunctionsView/FunctionPopup/JsEditor.tsx": [ -6, -7 +12 ], "console:src/views/FunctionsView/FunctionPopup/N.tsx": [ -5, -6, -7 +10 ], "console:src/views/FunctionsView/FunctionPopup/RequestPipeline.tsx": [ -8, -9, -10, -11, -12, -131, -132, -158, -159, -160, -161, -209 -], -"console:src/views/FunctionsView/FunctionPopup/RequestPipelineFunction.tsx": [ -10, -11, -12, -13, -14, 15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"console:src/views/FunctionsView/FunctionPopup/RequestPipelineFunctionInput.tsx": [ -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32 +135, +164, +212 ], "console:src/views/FunctionsView/FunctionPopup/Select.tsx": [ -5, -6, -7, -8 -], -"console:src/views/FunctionsView/FunctionPopup/Step0.tsx": [ -11, -12, -13, -14, -15 +11 ], "console:src/views/FunctionsView/FunctionPopup/StepMarker.tsx": [ -5, -6, -7 +10 ], "console:src/views/FunctionsView/FunctionPopup/TestLog.tsx": [ -9 -], -"console:src/views/FunctionsView/FunctionPopup/TestPopup.tsx": [ -16, -17, -18, -19, -20, -21, -22, -23 -], -"console:src/views/FunctionsView/FunctionPopup/Toggle.tsx": [ -5, -6, -7 -], -"console:src/views/FunctionsView/FunctionPopup/Trigger.tsx": [ -7, -8, -9, -10, -11, -12, -13, -14 -], -"console:src/views/FunctionsView/FunctionPopup/WebhookEditor.tsx": [ -6, -7, -8, -9 -], -"console:src/views/FunctionsView/FunctionRow.tsx": [ -22, -23, -24, -25 -], -"console:src/views/FunctionsView/FunctionsHeader.tsx": [ -7 -], -"console:src/views/FunctionsView/FunctionsList.tsx": [ -10, -11, 12 ], -"console:src/views/FunctionsView/FunctionsView.tsx": [ -9, -10, -11 -], -"console:src/views/FunctionsView/RequestGraph.tsx": [ -6 -], -"console:src/views/Integrations/Algolia/AlgoliaHeader.tsx": [ -6, -7, -8 -], -"console:src/views/Integrations/Algolia/AlgoliaIndexes.tsx": [ -7, -8, -9, +"console:src/views/FunctionsView/FunctionPopup/Toggle.tsx": [ 10 ], -"console:src/views/Integrations/Algolia/AlgoliaModal.tsx": [ -12, -13, -14, -15, -16, -17 -], -"console:src/views/Integrations/Algolia/AlgoliaQuery.tsx": [ -11, -12, -13, -14, -15 -], -"console:src/views/Integrations/Algolia/AlgoliaQueryEditor.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20, -21 -], -"console:src/views/Integrations/Algolia/AlgoliaView.tsx": [ -27, -28, -29, -30, -31, -32, -33, -34, -35 -], -"console:src/views/Integrations/Algolia/ConfirmOperationsPopup.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16 -], -"console:src/views/Integrations/Algolia/CreateAlgoliaIndex.tsx": [ -21, -22, -23, -24 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaIndexPopup/AlgoliaIndexPopup.tsx": [ -18, -19, -20, -21, -22 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaIndexPopup/AlgoliaIndexPopupHeader.tsx": [ -7, -8, -9, -10, -11, -12, -13 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaIndexPopup/AlgoliaIndexPopupModels.tsx": [ -11, -12, -13, -14 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaIndexPopup/AlgoliaIndexPopupQuery.tsx": [ -15, -16, -17, -18, -19 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopup.tsx": [ -22, -23, -24, -25, -26, -27, -28 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopupFooter.tsx": [ -19, -20, -21 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopupHeader.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopupIndex.tsx": [ -17, -18, -19 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopupIndexTop.tsx": [ -8 -], -"console:src/views/Integrations/AlgoliaPopup/AlgoliaPopupIndexes.tsx": [ -14, -15, -16, +"console:src/views/FunctionsView/FunctionPopup/Trigger.tsx": [ 17 ], -"console:src/views/Integrations/IntegrationsCard.tsx": [ -16 -], -"console:src/views/Integrations/IntegrationsCardGrid.tsx": [ -12, -13, -14 -], -"console:src/views/Integrations/IntegrationsView.tsx": [ -11, -12, -13 -], -"console:src/views/PermissionsView/PermissionPopup/AffectedFields.tsx": [ -14, -15, -16, -17, -18, -19, -20, -21, -22, -23 -], -"console:src/views/PermissionsView/PermissionPopup/OldPermissionPopupFooter.tsx": [ -19, -20, -21, -22, -23, -24 -], -"console:src/views/PermissionsView/PermissionPopup/OperationChooser.tsx": [ -10, -11, -12, -13 -], -"console:src/views/PermissionsView/PermissionPopup/PermissionConditions.tsx": [ -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60 -], -"console:src/views/PermissionsView/PermissionPopup/PermissionPopup.tsx": [ -33, -34, -35, -36, -37, -38, -39, -40, -41 -], -"console:src/views/PermissionsView/PermissionPopup/PermissionPopupFooter.tsx": [ -7, -8, -9, -10, -11, -12, -13, -14, -15 -], -"console:src/views/PermissionsView/PermissionPopup/PermissionPopupHeader.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -114, -115, -116, -117 -], -"console:src/views/PermissionsView/PermissionPopup/VariableTag.tsx": [ -7, -8, -9, +"console:src/views/FunctionsView/FunctionsHeader.tsx": [ 10 ], -"console:src/views/PermissionsView/PermissionsHeader/PermissionsHeader.tsx": [ -7, -8 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/ModelPermission.tsx": [ -16, -17, -18 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/ModelPermissionFields.tsx": [ -13, -14 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/ModelPermissionList.tsx": [ -9, -10, -11 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/ModelPermissions.tsx": [ -11, -12, -13 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/ModelPermissionsHeader.tsx": [ -12, -13, -14 -], -"console:src/views/PermissionsView/PermissionsList/ModelPermissions/PermissionField.tsx": [ -6, -7, -8, -9, -10, -11 -], -"console:src/views/PermissionsView/PermissionsList/PermissionsList.tsx": [ -12, -13 -], -"console:src/views/PermissionsView/PermissionsView.tsx": [ -15, -16, -17, -18 -], "console:src/views/PermissionsView/RelationPermissionPopup/RelationBaseSettings.tsx": [ -7, -8, -9, -10, -11 -], -"console:src/views/PermissionsView/RelationPermissionPopup/RelationPermissionPopup.tsx": [ -34, -35, -36, -37, -38, -39, -40, -41 -], -"console:src/views/PermissionsView/RelationPermissionPopup/RelationPermissionPopupHeader.tsx": [ -7, -8, -9, -10, -11, -12, -13, -14, -110, -111, -112, -113 -], -"console:src/views/PermissionsView/RelationPermissionsList/AllRelationPermissionsList.tsx": [ -10, -11 -], -"console:src/views/PermissionsView/RelationPermissionsList/RelationPermissions/RelationPermission.tsx": [ -15, -16, -17 -], -"console:src/views/PermissionsView/RelationPermissionsList/RelationPermissions/RelationPermissionHeader.tsx": [ -7, -8 -], -"console:src/views/PermissionsView/RelationPermissionsList/RelationPermissions/RelationPermissionLabel.tsx": [ -28, -29, -30, -31, -32 -], -"console:src/views/PermissionsView/RelationPermissionsList/RelationPermissions/RelationPermissionList.tsx": [ -9, -10, -11 -], -"console:src/views/PermissionsView/RelationPermissionsList/RelationPermissions/RelationPermissions.tsx": [ -11, -12, -13 -], -"console:src/views/ProjectRootView/AddModelPopup.tsx": [ -21, -22, -24, -25, -26, -27 -], -"console:src/views/ProjectRootView/AddProjectPopup.tsx": [ -22, -23, -24, -25, -26 -], -"console:src/views/ProjectRootView/CloneProjectPopup.tsx": [ -29, -30, -31, -32, -33 -], -"console:src/views/ProjectRootView/EditModelPopup.tsx": [ -14, -15, -16, -17, -18 -], -"console:src/views/ProjectRootView/EndpointPopup.tsx": [ -15, -16, -17, -18, -19 -], -"console:src/views/ProjectRootView/OnboardSideNav.tsx": [ -11, -12, -13, -14, -15, -16, -17 -], -"console:src/views/ProjectRootView/Onboarding/ExampleChooser.tsx": [ -14, -15, -16 -], -"console:src/views/ProjectRootView/Onboarding/FinalPopup.tsx": [ -11, -12, -13, 14 ], -"console:src/views/ProjectRootView/Onboarding/IntroPopup.tsx": [ -9, -10 +"console:src/views/ProjectRootView/Onboarding/ExampleChooser.tsx": [ +19 ], "console:src/views/ProjectRootView/Onboarding/OnboardingBar.tsx": [ -9, -92, -93, -94, -95 -], -"console:src/views/ProjectRootView/Onboarding/OnboardingFinale.tsx": [ -6 -], -"console:src/views/ProjectRootView/Onboarding/SelectExample.tsx": [ -11, -12, -13 -], -"console:src/views/ProjectRootView/ProjectRootView.tsx": [ -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59 -], -"console:src/views/ProjectRootView/RootRedirectView.tsx": [ -13, -14, -15 -], -"console:src/views/ProjectRootView/SideNav.tsx": [ -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48 -], -"console:src/views/ProjectRootView/SideNavElement.tsx": [ -7, -8, -9, -10, -11, -12, -13, -14, -15 -], -"console:src/views/ProjectRootView/TokenRedirectView.tsx": [ -7 -], -"console:src/views/ProjectSettingsView/AddPermanentAuthTokenRow.tsx": [ -14, -15 -], -"console:src/views/ProjectSettingsView/CreateRelationHeaderTab.tsx": [ -6, -7, -8 -], -"console:src/views/ProjectSettingsView/PermanentAuthTokenRow.tsx": [ -16, -17, -18 -], -"console:src/views/ProjectSettingsView/ProjectSettingsView.tsx": [ -22, -23, -24, -25 -], -"console:src/views/RelationsPopup/BreakingChangeIndicator.tsx": [ -8, -9, -10, -11, -12, -13, -14 -], -"console:src/views/RelationsPopup/CardinalitySelection.tsx": [ -6, -7 -], -"console:src/views/RelationsPopup/ConfirmPopup.tsx": [ -10, -11, -12, -13, -14, -15, -16, -17, -18 -], -"console:src/views/RelationsPopup/DefineRelation.tsx": [ -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32 -], -"console:src/views/RelationsPopup/FieldNameInput.tsx": [ -13, -14, -15, -16 -], -"console:src/views/RelationsPopup/HorizontalSelect.tsx": [ -5, -6, -7, -8, -9, -10 -], -"console:src/views/RelationsPopup/ModelSelection.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34 -], -"console:src/views/RelationsPopup/ModelSelectionBox.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24 -], -"console:src/views/RelationsPopup/MutationsInfoBox.tsx": [ -7, -8, -9, -10, -11, -12 -], -"console:src/views/RelationsPopup/RelationFooter.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23 -], -"console:src/views/RelationsPopup/RelationHeader.tsx": [ -8, -9, -10, -11, -12 -], -"console:src/views/RelationsPopup/RelationInfo.tsx": [ -7, -8, -9, -10, -11 -], -"console:src/views/RelationsPopup/RelationPopup.tsx": [ -58, -59, -60, -61, -62 -], -"console:src/views/RelationsPopup/SetMutation.tsx": [ -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"console:src/views/RootView/RootView.tsx": [ -12, -13, -14 -], -"console:src/views/SchemaView/EnumsOverview/AddEnum.tsx": [ -34, -35, -36, -37, -39, -40, -41, -42 -], -"console:src/views/SchemaView/EnumsOverview/ConfirmEnum.tsx": [ -10, -11, -12, -13, -14, -15, -16, -17 -], -"console:src/views/SchemaView/EnumsOverview/EnumBox.tsx": [ -20, -21, -22, -23, -24, -25, -26, -27, -28 -], -"console:src/views/SchemaView/EnumsOverview/EnumEditor.tsx": [ -6, -7, -8 -], -"console:src/views/SchemaView/EnumsOverview/EnumList.tsx": [ -10, -11, -12, -13, -14, -15, -16 -], -"console:src/views/SchemaView/EnumsOverview/EnumsOverview.tsx": [ -11, -12, -13, -14, -15, -16 -], -"console:src/views/SchemaView/EnumsOverview/EnumsOverviewHeader.tsx": [ -5, -6 +98 ], "console:src/views/SchemaView/MigrationMessages.tsx": [ -5, -6 -], -"console:src/views/SchemaView/SchemaEditor.tsx": [ -20, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"console:src/views/SchemaView/SchemaHeader.tsx": [ -9, -10, -11, -12 -], -"console:src/views/SchemaView/SchemaOverview/AddType.tsx": [ -35, -36, -37, -38, -40, -41, -42, -43 -], -"console:src/views/SchemaView/SchemaOverview/ConfirmModel.tsx": [ -10, -11, -12, -13, -14, -15, -16, -17 -], -"console:src/views/SchemaView/SchemaOverview/FieldItem.tsx": [ -11, -12, -13, -14, -15, -16 -], -"console:src/views/SchemaView/SchemaOverview/PermissionsTag.tsx": [ -8 -], -"console:src/views/SchemaView/SchemaOverview/SchemaOverview.tsx": [ -11, -12, -13, -14, -15 -], -"console:src/views/SchemaView/SchemaOverview/SchemaOverviewHeader.tsx": [ -6, -7, -8, -9 -], -"console:src/views/SchemaView/SchemaOverview/TypeBox.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -30 -], -"console:src/views/SchemaView/SchemaOverview/TypeBoxSettings.tsx": [ -6 -], -"console:src/views/SchemaView/SchemaOverview/TypeList.tsx": [ -10, -11, -12, -13, -14, -15, -16 -], -"console:src/views/SchemaView/SchemaOverview/TypeTag.tsx": [ -8, -9 -], -"console:src/views/SchemaView/SchemaView.tsx": [ -12, -13, -14, -15 -], -"console:src/views/SchemaView/SchemaViewer.tsx": [ -12, -13 -], -"console:src/views/Settings/Authentication/Authentication.tsx": [ -7 -], -"console:src/views/Settings/Authentication/TokenRow.tsx": [ -7, -8 -], -"console:src/views/Settings/Authentication/Tokens.tsx": [ -20, -21 -], -"console:src/views/Settings/Billing/Billing.tsx": [ -40, -41, -42, -43, -44, -46, -47, -49, -51 -], -"console:src/views/Settings/Billing/ChangePricingPlan.tsx": [ -9, -10, -11 -], -"console:src/views/Settings/Billing/ConfirmPricingPlan.tsx": [ -15, -16, -17, -18 -], -"console:src/views/Settings/Billing/CreditCardBack.tsx": [ -5, -6, -7, -8, -9, -10, -11 -], -"console:src/views/Settings/Billing/CreditCardFront.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19 -], -"console:src/views/Settings/Billing/CreditCardInformation.tsx": [ -8, -9, -10, -11, -12, -13, -14, -15, -17, -18, -20, -21, -22, -23, -24, -25, -27, -28, -30, -31, -33 -], -"console:src/views/Settings/Billing/CreditCardInputSection.tsx": [ -40, -41, -42, -43, -44, -45, -46, -47 -], -"console:src/views/Settings/Billing/CurrentPlan.tsx": [ -11, -12, -13, -14, -15 -], -"console:src/views/Settings/Billing/EditCreditCard.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20, -21, -23, -24, -25, -26, -27, -28, -30, -31, -33, -34 -], -"console:src/views/Settings/Billing/NodeUsageIndicator.tsx": [ -8, -9, -10 -], -"console:src/views/Settings/Billing/RequestUsageIndicator.tsx": [ -8, -9, -10 -], -"console:src/views/Settings/Billing/Seats.tsx": [ -4, -5, -6 -], -"console:src/views/Settings/Billing/Usage.tsx": [ -11, -13, -15, -17, -18, -20, -21 -], -"console:src/views/Settings/Export/Export.tsx": [ -18, -19 -], -"console:src/views/Settings/Export/FoldableCodeMirror.tsx": [ -9, -10, -11 -], -"console:src/views/Settings/General/DangerZone.tsx": [ -15, -16, -17, -18 -], -"console:src/views/Settings/General/General.tsx": [ -8 -], -"console:src/views/Settings/General/ProjectInfo.tsx": [ -21, -22, -23 -], -"console:src/views/Settings/PricingColumn.tsx": [ -8, -9, -10, -11, -12, -13 -], -"console:src/views/Settings/Settings.tsx": [ -7, -8 -], -"console:src/views/Settings/TabBar.tsx": [ -5 -], -"console:src/views/Settings/Team/EmptyRow.tsx": [ -19, -20, -21, -22 -], -"console:src/views/Settings/Team/MemberRow.tsx": [ -10, -11 -], -"console:src/views/Settings/Team/Team.tsx": [ -14, -15, -16 -], -"console:src/views/Tooltip/Tooltip.tsx": [ -34, -35, -36 -], -"console:src/views/account/AccountView/AccountView.tsx": [ -8, -9, -10 -], -"console:src/views/account/AccountView/SettingsTab.tsx": [ -14, -15, -16 -], -"console:src/views/models/AuthProviderPopup/AuthProviderPopup.tsx": [ -15, -16, -17, -18, -19, -20 -], -"console:src/views/models/AuthProviderPopup/AuthProviderSidePanel.tsx": [ -22, -23, -24, -25, -26 -], -"console:src/views/models/DatabrowserView/AddFieldCell.tsx": [ -8 -], -"console:src/views/models/DatabrowserView/Cell.tsx": [ -30, -31, -32, -33, -34, -35, -36, -37, -39, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -56, -57, -58, -59, -61, -62, -64, -65 -], -"console:src/views/models/DatabrowserView/Cell/NullableCell.tsx": [ -7, -8 -], -"console:src/views/models/DatabrowserView/Cell/SelectNodesCell/SearchBox.tsx": [ -7, -8, -9, -10 -], -"console:src/views/models/DatabrowserView/Cell/SelectNodesCell/SelectNodesCell.tsx": [ -32, -33, -34, -35, -36, -37, -38, -39, -40 -], -"console:src/views/models/DatabrowserView/Cell/SelectNodesCell/SelectNodesCellFooter.tsx": [ -5, -6, -7, -8, -9, -10 -], -"console:src/views/models/DatabrowserView/Cell/SelectNodesCell/Table/Table.tsx": [ -11, -12, -13, -14, -15, -16, -17, -18 -], -"console:src/views/models/DatabrowserView/Cell/SelectNodesCell/Tabs.tsx": [ -5, -6, -7 -], -"console:src/views/models/DatabrowserView/CheckboxCell.tsx": [ -6, -7, -8, 9 -], -"console:src/views/models/DatabrowserView/DataActionRow.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20 -], -"console:src/views/models/DatabrowserView/DataActionRow/DeleteNodeRow.tsx": [ -9, -10, -11, -12, -13 -], -"console:src/views/models/DatabrowserView/DataActionRow/NewNodeRow.tsx": [ -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24 -], -"console:src/views/models/DatabrowserView/DatabrowserView.tsx": [ -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -84, -85, -86, -87, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -108, -116, -121, -127 -], -"console:src/views/models/DatabrowserView/HeaderCell.tsx": [ -17, -18, -19, -20, -21 -], -"console:src/views/models/DatabrowserView/LightCell.tsx": [ -11, -12, -13, -14, -15, -16 -], -"console:src/views/models/DatabrowserView/LoadingCell.tsx": [ -5, -6, -7 -], -"console:src/views/models/DatabrowserView/NewRow.tsx": [ -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37 -], -"console:src/views/models/DatabrowserView/NewRowInactive.tsx": [ -14, -15, -16, -17, -18 -], -"console:src/views/models/DatabrowserView/RelationsPopup.tsx": [ -19, -20, -21, -22, -23, -27 -], -"console:src/views/models/FieldPopup/AdvancedSettings.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25 -], -"console:src/views/models/FieldPopup/BaseSettings.tsx": [ -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36 -], -"console:src/views/models/FieldPopup/ConfirmFieldPopup.tsx": [ -12, -13, -14, -15, -16, -17, -18, -19, -20 -], -"console:src/views/models/FieldPopup/Constraints.tsx": [ -7, -8, -9, -10, -11, -12, -13 -], -"console:src/views/models/FieldPopup/EditValueInput.tsx": [ -15, -16, -17, -18, -19 -], -"console:src/views/models/FieldPopup/FieldHorizontalSelect.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17 -], -"console:src/views/models/FieldPopup/FieldLabel.tsx": [ -14, -15, -16, -17, -18, -19 -], -"console:src/views/models/FieldPopup/FieldPopup.tsx": [ -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61 -], -"console:src/views/models/FieldPopup/FieldPopupFooter.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26 -], -"console:src/views/models/FieldPopup/FieldPopupHeader.tsx": [ -7, -8, -9, -10, -11, -12, -13, -81, -82, -83, -84, -85 -], -"console:src/views/models/FieldPopup/HorizontalSelect.tsx": [ -5, -6, -7, -8, -9, -10 -], -"console:src/views/models/FieldPopup/OptionInput.tsx": [ -5, -6, -7, -8 -], -"console:src/views/models/ModelDescription.tsx": [ -16, -17 -], -"console:src/views/models/ModelHeader.tsx": [ -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44 -], -"console:src/views/models/ModelModal.tsx": [ -9, -10, -11, -12, -13 -], -"console:src/views/models/ModelRedirectView.tsx": [ -9, -10, -11 -], -"console:src/views/playground/PlaygroundView/CodeGenerationPopup/CodeGenerationPopup.tsx": [ -17, -18, -19, -20, -21, -22 -], -"console:src/views/playground/PlaygroundView/CodeGenerationPopup/CodeGenerationPopupCode.tsx": [ -13, -14, -15, -16 -], -"console:src/views/playground/PlaygroundView/PlaygroundView.tsx": [ -66, -67, -68, -69, -70, -71 ] } diff --git a/its/ruling/src/test/expected/ts/courselit/typescript-S6759.json b/its/ruling/src/test/expected/ts/courselit/typescript-S6759.json index 03a2feccb20..f272852542e 100644 --- a/its/ruling/src/test/expected/ts/courselit/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/courselit/typescript-S6759.json @@ -1,389 +1,20 @@ { -"courselit:apps/web/components/admin/base-layout.tsx": [ -97, -98, -99, -100, -101, -102 -], -"courselit:apps/web/components/admin/courses/course-editor/course-structure-editor.tsx": [ -45, -46, -47, -48, -49 -], -"courselit:apps/web/components/admin/courses/course-editor/group.tsx": [ -61, -62, -63, -64, -65, -66, -67, -71 -], -"courselit:apps/web/components/admin/courses/course-editor/index.tsx": [ -74, -75, -76, -77, -78, -79 -], -"courselit:apps/web/components/admin/courses/index.tsx": [ -62, -63, -64, -65 -], -"courselit:apps/web/components/admin/courses/lesson-editor.tsx": [ -101, -102, -103, -104, -105 -], -"courselit:apps/web/components/admin/design/index.tsx": [ -18 -], -"courselit:apps/web/components/admin/design/layout-manager/add-component-dialog.tsx": [ -20, -21, -22, -23 -], -"courselit:apps/web/components/admin/design/layout-manager/added-component.tsx": [ -18, -19, -20, -21 -], -"courselit:apps/web/components/admin/design/layout-manager/edit-widget-dialog.tsx": [ -22, -23, -24, -25 -], -"courselit:apps/web/components/admin/design/layout-manager/index.tsx": [ -108, -109, -110, -111, -112 -], -"courselit:apps/web/components/admin/design/menus/links/index.tsx": [ -13, -14, -15, -16 -], -"courselit:apps/web/components/admin/design/menus/links/navigation-link-item.tsx": [ -50, -51, -52, -53 -], -"courselit:apps/web/components/admin/design/themes-manager/index.tsx": [ -50, -51 -], -"courselit:apps/web/components/admin/design/themes-manager/theme-item.tsx": [ -32, -33, -34, -35 -], "courselit:apps/web/components/admin/media/editor.tsx": [ -29, -30, -31, -32, -33, -34 -], -"courselit:apps/web/components/admin/media/index.tsx": [ -44, -45, -46, -47, -48, -49, -50, -51 -], -"courselit:apps/web/components/admin/media/media-preview.tsx": [ -54, -55, -56 -], -"courselit:apps/web/components/admin/media/media-selector/index.tsx": [ -26, -27, -28, -29, -30 -], -"courselit:apps/web/components/admin/media/media-selector/media-manager-dialog.tsx": [ -16, -17, -18, -19, -20, -21 -], -"courselit:apps/web/components/admin/media/upload.tsx": [ -34, -35, -36, 37 ], -"courselit:apps/web/components/admin/settings.tsx": [ -93, -94, -95, -96, -97 -], -"courselit:apps/web/components/admin/users/details.tsx": [ -29, -30, -31, -32 -], -"courselit:apps/web/components/admin/users/index.tsx": [ -55, -56, -57, -58 +"courselit:apps/web/components/admin/media/upload.tsx": [ +40 ], "courselit:apps/web/components/admin/users/permissions-editor.tsx": [ -29, -30, -31, -32, -33 -], -"courselit:apps/web/components/app-error.tsx": [ -21 -], -"courselit:apps/web/components/app-toast.tsx": [ -22, -23 -], -"courselit:apps/web/components/course-introduction.tsx": [ -8 -], -"courselit:apps/web/components/img.tsx": [ -6, -7, -8, -9, -10 -], -"courselit:apps/web/components/public/app-dialog.tsx": [ -10, -11, -12, -13, -14 -], -"courselit:apps/web/components/public/article.tsx": [ -66, -67, -68, -69 -], -"courselit:apps/web/components/public/base-layout/branding.tsx": [ -51 -], -"courselit:apps/web/components/public/base-layout/component-scaffold.tsx": [ -142, -143, -144 -], -"courselit:apps/web/components/public/base-layout/drawer-list-item-icon.tsx": [ -18, -19 -], -"courselit:apps/web/components/public/base-layout/index.tsx": [ -9, -10, -11 -], -"courselit:apps/web/components/public/base-layout/scaffold/drawer-content.tsx": [ -35, -36, -37, -38, -39 -], -"courselit:apps/web/components/public/base-layout/scaffold/index.tsx": [ -101, -102, -103, -104, -105 -], -"courselit:apps/web/components/public/base-layout/scaffold/menu-item.tsx": [ -23, -24 -], -"courselit:apps/web/components/public/base-layout/template/index.tsx": [ -40, -41 -], -"courselit:apps/web/components/public/base-layout/template/section.tsx": [ -10, -11 -], -"courselit:apps/web/components/public/base-layout/template/widget-by-name.tsx": [ -10, -11, -12, -13, -14, -15 -], -"courselit:apps/web/components/public/checkout/free.tsx": [ -15, -16, -17, -18 -], -"courselit:apps/web/components/public/checkout/index.tsx": [ -16, -17 -], -"courselit:apps/web/components/public/checkout/stripe.tsx": [ -21, -22, -23, -24 -], -"courselit:apps/web/components/public/code-injector.tsx": [ -6 -], -"courselit:apps/web/components/public/items.tsx": [ -18, -19, -20, -21, -22, -23, -24 -], -"courselit:apps/web/components/public/lesson-viewer.tsx": [ -71, -72, -73, -74, -75 -], -"courselit:apps/web/components/public/purchase-status.tsx": [ -33, -34, -35 +36 ], "courselit:apps/web/components/public/session-button.tsx": [ -13, -14 -], -"courselit:apps/web/pages/_app.tsx": [ -26 -], -"courselit:apps/web/pages/course/[id]/[slug].tsx": [ -25, -26, -27, -28, -29 -], -"courselit:apps/web/pages/courses.tsx": [ -31 -], -"courselit:apps/web/pages/index.tsx": [ -34, -35 -], -"courselit:apps/web/pages/login.tsx": [ -21, -22, -23, -24 -], -"courselit:apps/web/pages/logout.tsx": [ -10, -11 -], -"courselit:apps/web/pages/post/[id]/[slug].tsx": [ -14, -15, -16 +17 ], "courselit:apps/web/pages/posts.tsx": [ -30 +33 ], "courselit:apps/web/pages/tag/[tag].tsx": [ -38 -], -"courselit:packages/common-widgets/src/about/admin-widget.tsx": [ -8, -9 -], -"courselit:packages/common-widgets/src/branding/widget.tsx": [ -6 -], -"courselit:packages/common-widgets/src/footer-menu/widget.tsx": [ -8 -], -"courselit:packages/common-widgets/src/tagged-content/admin-widget.tsx": [ -7, -8 -], -"courselit:packages/components-library/src/course-item.tsx": [ -32, -33, -34, -35 -], -"courselit:packages/components-library/src/image.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13 -], -"courselit:packages/components-library/src/overview-and-detail/index.tsx": [ -32, -33, -34 -], -"courselit:packages/components-library/src/overview-and-detail/overview-list.tsx": [ -7, -8, -9 -], -"courselit:packages/components-library/src/pricetag.tsx": [ -5, -6, -7 -], -"courselit:packages/components-library/src/rich-text.tsx": [ -6, -6, -6, -6, -34, -35, -36, -37 -], -"courselit:packages/components-library/src/section.tsx": [ -7 +41 ] } diff --git a/its/ruling/src/test/expected/ts/desktop/typescript-S6759.json b/its/ruling/src/test/expected/ts/desktop/typescript-S6759.json deleted file mode 100644 index 4d1bb145ab7..00000000000 --- a/its/ruling/src/test/expected/ts/desktop/typescript-S6759.json +++ /dev/null @@ -1,10 +0,0 @@ -{ -"desktop:app/src/ui/suggested-actions/suggested-action-group.tsx": [ -10, -17, -26 -], -"desktop:app/src/ui/tutorial/tutorial-panel.tsx": [ -315 -] -} diff --git a/its/ruling/src/test/expected/ts/eigen/typescript-S6759.json b/its/ruling/src/test/expected/ts/eigen/typescript-S6759.json index 2a135d82143..39c6e466710 100644 --- a/its/ruling/src/test/expected/ts/eigen/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/eigen/typescript-S6759.json @@ -1,3346 +1,30 @@ { "eigen:src/app/AppProviders.tsx": [ -44, -48, -53, 63 ], -"eigen:src/app/AppRegistry.tsx": [ -141, -142, -148, -149, -150, -179, -179, -180, -180, -181, -181, -182, -182, -183, -183, -184, -184 -], -"eigen:src/app/Components/AboveTheFoldFlatList.tsx": [ -5 -], -"eigen:src/app/Components/AnimatableHeader/AnimatableHeader.tsx": [ -23, -24, -25, -26, -27 -], -"eigen:src/app/Components/AnimatedBottomButton.tsx": [ -17, -18, -19 -], -"eigen:src/app/Components/ArticleCard.tsx": [ -20, -21 -], -"eigen:src/app/Components/Artist/Articles/Articles.tsx": [ -11 -], -"eigen:src/app/Components/Artist/ArtistAbout/ArtistAbout.tsx": [ -18 -], -"eigen:src/app/Components/Artist/ArtistAbout/ArtistAboutShows.tsx": [ -12 -], -"eigen:src/app/Components/Artist/ArtistArtworks/ArtistArtworks.tsx": [ -32, -32, -33, -33, -34, -34, -100 -], -"eigen:src/app/Components/Artist/ArtistArtworks/ArtistCollectionsRail.tsx": [ -12, -13 -], -"eigen:src/app/Components/Artist/ArtistArtworks/ArtistNotableWorksRail.tsx": [ -14 -], -"eigen:src/app/Components/Artist/ArtistArtworks/CreateSavedSearchModal.tsx": [ -18, -19, -20, -21, -22, -23 -], -"eigen:src/app/Components/Artist/ArtistArtworks/SavedSearchButtonV2.tsx": [ -7, -8, -9 -], -"eigen:src/app/Components/Artist/ArtistConsignButton.tsx": [ -14 -], -"eigen:src/app/Components/Artist/ArtistHeaderButton.tsx": [ -7, -8, -9 -], -"eigen:src/app/Components/Artist/ArtistHeaderFloatingButtons.tsx": [ -28 -], -"eigen:src/app/Components/Artist/ArtistInsights/ArtistInsights.tsx": [ -24, -25, -26 -], -"eigen:src/app/Components/Artist/ArtistInsights/ArtistInsightsAuctionResults.tests.tsx": [ -44 -], -"eigen:src/app/Components/Artist/ArtistInsights/ArtistInsightsAuctionResults.tsx": [ -31, -32, -33 -], -"eigen:src/app/Components/Artist/ArtistInsights/MarketStats.tsx": [ -20, -184, -185 -], -"eigen:src/app/Components/Artist/ArtistShows/ArtistShow.tsx": [ -14, -15 -], -"eigen:src/app/Components/Artist/ArtistShows/Metadata.tsx": [ -11 -], -"eigen:src/app/Components/Artist/ArtistShows/SmallList.tsx": [ -10 -], -"eigen:src/app/Components/Artist/ArtistShows/VariableSizeShowsList.tsx": [ -13, -14 -], -"eigen:src/app/Components/Artist/Biography.tsx": [ -13 -], -"eigen:src/app/Components/ArtistAutosuggest/ArtistAutosuggestResults.tsx": [ -26, -27, -28, -29 -], -"eigen:src/app/Components/ArtistAutosuggest/ArtistAutosuggestRow.tsx": [ -10, -11, -12 -], -"eigen:src/app/Components/ArtistListItem.tests.tsx": [ -15 -], -"eigen:src/app/Components/ArtistListItem.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20 -], -"eigen:src/app/Components/ArtsyWebView.tsx": [ -27, -33, -37, -41, -45, -52, -53, -54, -55, -156, -157, -158, -159, -270 -], -"eigen:src/app/Components/ArtworkFilter/ArtworkFilterNavigator.tsx": [ -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59 -], -"eigen:src/app/Components/ArtworkFilter/ArtworkFilterOptionsScreen.tsx": [ -283, -284, -285 -], -"eigen:src/app/Components/ArtworkFilter/FilterModal.tests.tsx": [ -160, -161, -509 -], -"eigen:src/app/Components/ArtworkFilter/FilterTestHelper.tsx": [ -36 -], -"eigen:src/app/Components/ArtworkFilter/Filters/AdditionalGeneIDsOptions.tests.tsx": [ -47 -], -"eigen:src/app/Components/ArtworkFilter/Filters/AggregationOptionCommonValidation.tsx": [ -58 -], -"eigen:src/app/Components/ArtworkFilter/Filters/ArtistIDsArtworksOptions.tests.tsx": [ -56 -], -"eigen:src/app/Components/ArtworkFilter/Filters/AttributionClassOptions.tests.tsx": [ -17 -], -"eigen:src/app/Components/ArtworkFilter/Filters/AuctionHouseOptions.tests.tsx": [ -15 -], -"eigen:src/app/Components/ArtworkFilter/Filters/CategoriesOptions.tests.tsx": [ -15 -], -"eigen:src/app/Components/ArtworkFilter/Filters/ColorsOptions.tests.tsx": [ -79 -], -"eigen:src/app/Components/ArtworkFilter/Filters/ColorsSwatch.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Components/ArtworkFilter/Filters/CustomSizeInputs.tsx": [ -8, -9, -10, -11, -12 -], -"eigen:src/app/Components/ArtworkFilter/Filters/FilterToggleButton.tsx": [ -6, -7, -8 -], -"eigen:src/app/Components/ArtworkFilter/Filters/GalleriesAndInstitutionsOptions.tests.tsx": [ -49 -], -"eigen:src/app/Components/ArtworkFilter/Filters/KeywordFilter.tsx": [ -18, -19, -20, -21, -22 -], -"eigen:src/app/Components/ArtworkFilter/Filters/LocationCitiesOptions.tests.tsx": [ -49 -], -"eigen:src/app/Components/ArtworkFilter/Filters/MaterialsTermsOptions.tests.tsx": [ -49 -], -"eigen:src/app/Components/ArtworkFilter/Filters/MultiSelectCheckOption.tsx": [ -11, -12, -13, -14, -15, -16, -17, -86, -87, -88, -89 -], -"eigen:src/app/Components/ArtworkFilter/Filters/MultiSelectOption.tsx": [ -17, -18, -19, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"eigen:src/app/Components/ArtworkFilter/Filters/SingleSelectOption.tsx": [ -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -100, -101, -102, -103 -], -"eigen:src/app/Components/ArtworkFilter/Filters/SizesOptionsScreen.tests.tsx": [ -70 -], -"eigen:src/app/Components/ArtworkFilter/Filters/SizesOptionsScreen.tsx": [ -21, -22, -23, -24, -25 -], -"eigen:src/app/Components/ArtworkFilter/Filters/SortOptions.tests.tsx": [ -31 -], -"eigen:src/app/Components/ArtworkFilter/Filters/TimePeriodOptions.tests.tsx": [ -51 -], -"eigen:src/app/Components/ArtworkFilter/Filters/WaysToBuyOptions.tests.tsx": [ -31 -], -"eigen:src/app/Components/ArtworkFilter/Filters/YearOptions.tests.tsx": [ -65 -], -"eigen:src/app/Components/ArtworkFilter/Filters/YearOptions.tsx": [ -157, -158, -159 -], -"eigen:src/app/Components/ArtworkFilter/Filters/useMultiSelect.tests.tsx": [ -67 -], -"eigen:src/app/Components/ArtworkFilter/components/ArtworkFilterBackHeader.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Components/ArtworkFilter/components/ArtworkFilterOptionCheckboxItem.tests.tsx": [ -36, -37 -], -"eigen:src/app/Components/ArtworkFilter/components/ArtworkFilterOptionItem.tsx": [ -7, -8, -9, -10 -], -"eigen:src/app/Components/ArtworkGrids/ArtworkGridItem.tsx": [ -35, -37, -38, -39, -41, -42, -44, -45, -46, -47, -48, -50, -52, -54, -55, -56, -58, -60, -61, -62, -63, -64, -65, -67, -410 -], -"eigen:src/app/Components/ArtworkGrids/ArtworksFilterHeader.tsx": [ -5, -6, -7, -8, -9, -10 -], -"eigen:src/app/Components/ArtworkGrids/FilteredArtworkGridZeroState.tsx": [ -8, -9, -10, -11 -], -"eigen:src/app/Components/ArtworkGrids/GenericGrid.tsx": [ -226 -], -"eigen:src/app/Components/ArtworkGrids/InfiniteScrollArtworksGrid.tsx": [ -133, -134 -], -"eigen:src/app/Components/ArtworkGrids/SaleArtworkGridItem.tsx": [ -20, -23, -24, -25, -27, -28, -30, -31, -32, -138 -], -"eigen:src/app/Components/ArtworkRail/ArtworkRail.tsx": [ -12, -13, -14, -15, -19, -20, -21, -22, -23 -], -"eigen:src/app/Components/ArtworkRail/ArtworkRailCard.tsx": [ -24, -25, -26, -27, -28, -29, -30, -93, -94, -95 -], -"eigen:src/app/Components/ArtworkRail/LargeArtworkRail.tsx": [ -17 -], -"eigen:src/app/Components/ArtworkRail/SmallArtworkRail.tsx": [ -20 -], -"eigen:src/app/Components/AuctionResult/AuctionResultMidEstimate.tsx": [ -5, -6, -7 -], -"eigen:src/app/Components/AuctionResultsList.tsx": [ -17, -20, -21, -22, -23, -24, -25, -26, -109, -109 -], -"eigen:src/app/Components/Bidding/Components/ArtworkAuctionProgressBar.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Components/Bidding/Components/BackButton.tsx": [ -8 -], -"eigen:src/app/Components/Bidding/Components/BidInfoRow.tsx": [ -9, -10, -11 -], -"eigen:src/app/Components/Bidding/Components/PaymentInfo.tsx": [ -16, -17, -18, -19, -20, -21 -], -"eigen:src/app/Components/Bidding/Components/PhoneInfo.tsx": [ -12, -13, -14 -], -"eigen:src/app/Components/Bidding/Components/Timer.tsx": [ -28, -29, -30, -31, -32, -33, -144, -145, -146, -147, -148, -149, -150, -200 -], -"eigen:src/app/Components/Bidding/Screens/BidResult.tsx": [ -25, -26, -27, -28, -29, -30 -], -"eigen:src/app/Components/Bidding/Screens/BillingAddress.tsx": [ -16, -17, -18 -], -"eigen:src/app/Components/Bidding/Screens/ConfirmBid/PriceSummary.tsx": [ -13, -14, -70 -], -"eigen:src/app/Components/Bidding/Screens/ConfirmBid/index.tsx": [ -39, -40, -41, -42, -43, -44, -45 -], -"eigen:src/app/Components/Bidding/Screens/CreditCardForm.tsx": [ -16, -17, -18 -], -"eigen:src/app/Components/Bidding/Screens/PhoneNumberForm.tsx": [ -10, -11, -12 -], -"eigen:src/app/Components/Bidding/Screens/Registration.tsx": [ -38, -39, -40, -41, -508, -508 -], -"eigen:src/app/Components/Bidding/Screens/RegistrationResult.tsx": [ -18, -19 -], -"eigen:src/app/Components/Bidding/Screens/SelectMaxBid.tsx": [ -24, -25, -26, -27 -], -"eigen:src/app/Components/Buttons/BottomAlignedButtonWrapper.tsx": [ -6, -7 -], -"eigen:src/app/Components/Buttons/CaretButton.tsx": [ -7, -8, -9, -10 -], -"eigen:src/app/Components/Buttons/DarkNavigationButton.tsx": [ -7, -8, -9 -], -"eigen:src/app/Components/Buttons/InfoButton.tsx": [ -9, -10, -11, -12, -13, -14, -15, -16 -], -"eigen:src/app/Components/Countdown/CountdownTimer.tsx": [ -6, -7, -8, -9 -], -"eigen:src/app/Components/Countdown/DurationProvider.tsx": [ -7, -8, -9, -10 -], -"eigen:src/app/Components/Countdown/StateManager.tsx": [ -16, -17, -18, -19 -], -"eigen:src/app/Components/Countdown/Ticker.tsx": [ -9, -10, -11, -46, -47, -48, -74, -75, -92, -93, -94 -], -"eigen:src/app/Components/CreditCardDetails.tsx": [ -10 -], -"eigen:src/app/Components/CustomShareSheet.tsx": [ -8, -9, -34, -35, -36 -], -"eigen:src/app/Components/DetailedLocationAutocomplete.tsx": [ -15, -16, -17 -], -"eigen:src/app/Components/Disappearable.tsx": [ -11 -], -"eigen:src/app/Components/DottedLine.tsx": [ -7 -], -"eigen:src/app/Components/EntityList/Components/EntityItem.tsx": [ -13, -14, -15, -16 -], -"eigen:src/app/Components/EntityList/index.tsx": [ -7, -8, -9, -10, -11, -12 -], -"eigen:src/app/Components/ErrorView/ErrorView.tsx": [ -5 -], -"eigen:src/app/Components/EventTiming.tsx": [ -6, -7, -8 -], -"eigen:src/app/Components/FPSCounter.tsx": [ -5 -], -"eigen:src/app/Components/FadeIn.tsx": [ -4, -4, -4 -], -"eigen:src/app/Components/FancyModal/FancyModal.tsx": [ -14, -15, -16, -17, -18 -], -"eigen:src/app/Components/FancyModal/FancyModalCard.tsx": [ -38, -39, -40, -41, -42 -], -"eigen:src/app/Components/FancyModal/FancyModalHeader.tsx": [ -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27 -], -"eigen:src/app/Components/Gene/About.tsx": [ -12 -], -"eigen:src/app/Components/Gene/Biography.tsx": [ -12 -], -"eigen:src/app/Components/Gene/GeneArtworks.tsx": [ -17, -17, -18, -18, -22 -], -"eigen:src/app/Components/Gene/Header.tsx": [ -9, -10, -11 -], -"eigen:src/app/Components/GenericArtistSeriesRail.tsx": [ -23, -26, -27, -28 -], -"eigen:src/app/Components/HeaderArtworksFilter/HeaderArtworksFilter.tsx": [ -8, -9, -10, -14, -15, -16 -], -"eigen:src/app/Components/HeaderArtworksFilter/HeaderArtworksFilterWithTotalArtworks.tests.tsx": [ -31 -], -"eigen:src/app/Components/HeaderArtworksFilter/HeaderArtworksFilterWithTotalArtworks.tsx": [ -7, -8 -], -"eigen:src/app/Components/Home/ArtistRails/ArtistCard.tsx": [ -22, -23, -24, -25 -], -"eigen:src/app/Components/Home/ArtistRails/ArtistRail.tsx": [ -40, -41, -42, -43, -44 -], -"eigen:src/app/Components/Home/ArtistRails/RecommendedArtistsRail.tsx": [ -28, -29, -30, -31, -32 -], -"eigen:src/app/Components/Home/HeroUnit.tsx": [ -16, -17, -18 -], -"eigen:src/app/Components/Lists/AuctionResultListItem.tsx": [ -13, -14, -15, -16, -17 -], -"eigen:src/app/Components/Lists/SavedItemRow.tsx": [ -8, -9, -10, -13, -14 -], -"eigen:src/app/Components/Lists/ShowItemRow.tsx": [ -18, -19, -20, -21, -22, -23 -], -"eigen:src/app/Components/LoadFailureView.tsx": [ -10, -11, -12 -], -"eigen:src/app/Components/LocationAutocomplete/LocationAutocomplete.tsx": [ -9, -10, -90, -91, -92, -93, -94 -], -"eigen:src/app/Components/LocationMap/LocationMap.tsx": [ -23, -24 -], -"eigen:src/app/Components/LotsByArtistsYouFollowRail/LotsByFollowedArtistsRail.tsx": [ -16, -17, -18, -19 -], -"eigen:src/app/Components/MenuItem.tsx": [ -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16 -], -"eigen:src/app/Components/Modal.tsx": [ -9, -10, -11, -12, -13 -], -"eigen:src/app/Components/Modals/LoadingModal.tsx": [ -6 -], -"eigen:src/app/Components/NotFoundFailureView.tsx": [ -8, -9, -10, -11 -], -"eigen:src/app/Components/OpaqueImageView/OpaqueImageView.tsx": [ -19, -25, -32, -35, -37, -38, -39, -49, -52, -57, -62, -67 -], -"eigen:src/app/Components/PageWithSimpleHeader.tsx": [ -6, -7, -8, -9 -], -"eigen:src/app/Components/PartnerBanner.tsx": [ -6, -7 -], -"eigen:src/app/Components/PartnerEntityHeader.tsx": [ -12 -], -"eigen:src/app/Components/PopoverMessage/PopoverMessage.stories.tsx": [ -11 -], -"eigen:src/app/Components/PopoverMessage/PopoverMessage.tests.tsx": [ -10 -], -"eigen:src/app/Components/PopoverMessage/PopoverMessage.tsx": [ -20, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"eigen:src/app/Components/Portal.tsx": [ -6, -49 -], -"eigen:src/app/Components/PrefetchFlatList.tsx": [ -6, -7, -8 -], -"eigen:src/app/Components/ReadMore.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -30 -], -"eigen:src/app/Components/RelatedArtists/RelatedArtist.tsx": [ -10, -11 -], -"eigen:src/app/Components/RelatedArtists/RelatedArtists.tsx": [ -14 -], -"eigen:src/app/Components/RetryErrorBoundary.tests.tsx": [ -104, -104 -], -"eigen:src/app/Components/RetryErrorBoundary.tsx": [ -14, -50, -51, -52, -53, -54, -55 -], -"eigen:src/app/Components/SaleArtworkTileRailCard/SaleArtworkTileRailCard.tests.tsx": [ -14, -15 -], -"eigen:src/app/Components/SaleArtworkTileRailCard/SaleArtworkTileRailCard.tsx": [ -26, -27, -28, -29, -30 -], -"eigen:src/app/Components/ScrollableTabBar.tsx": [ -13, -14, -15, -16, -17, -46 -], -"eigen:src/app/Components/SearchImageHeaderButton/SearchImageHeaderButton.tsx": [ -12 -], -"eigen:src/app/Components/SearchInput.tsx": [ -21, -22, -23 -], -"eigen:src/app/Components/SectionTitle.tsx": [ -19, -20, -21, -22, -23, -24 -], -"eigen:src/app/Components/ShareSheet/ShareSheet.tsx": [ -26, -27, -28, -29, -30, -31, -32, -33 -], -"eigen:src/app/Components/Show/ShowArtistsPreview.tsx": [ -13, -14, -15 -], -"eigen:src/app/Components/Show/ShowArtworksPreview.tsx": [ -10, -11, -12, -13 -], -"eigen:src/app/Components/ShowCard.tsx": [ -13 -], -"eigen:src/app/Components/Spinner.tsx": [ -6, -7 -], -"eigen:src/app/Components/Stack.tsx": [ -5, -5 -], -"eigen:src/app/Components/States/ZeroState.tsx": [ -5, -6, -7, -8 -], -"eigen:src/app/Components/StickyHeaderPage.tsx": [ -15, -16, -17 -], -"eigen:src/app/Components/StickyTabPage/SnappyHorizontalRail.tsx": [ -11, -11, -11 -], -"eigen:src/app/Components/StickyTabPage/StickyTabPage.tsx": [ -31, -32, -33, -34, -37 -], -"eigen:src/app/Components/StickyTabPage/StickyTabPageFlatList.tsx": [ -27, -28, -29 -], -"eigen:src/app/Components/StickyTabPage/StickyTabPageTabBar.tsx": [ -66, -67, -68 -], -"eigen:src/app/Components/StyledWebView.tsx": [ -6 -], -"eigen:src/app/Components/SwitchMenu.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Components/TabBar.tsx": [ -14, -16, -18, -20, -22, -24, -56 -], -"eigen:src/app/Components/TabEmptyState.tsx": [ -5 -], -"eigen:src/app/Components/Tag/About.tsx": [ -11 -], -"eigen:src/app/Components/Tag/TagArtworks.tsx": [ -18, -18, -19, -19, -23 -], -"eigen:src/app/Components/Toast/Toast.tests.tsx": [ -10 -], -"eigen:src/app/Components/WorksForYou/Notification.tsx": [ -21, -22 -], -"eigen:src/app/Containers/Inbox.tsx": [ -21, -69, -70, -71, -178 -], -"eigen:src/app/Containers/Inquiry.tsx": [ -88, -89, -90, -91, -92, -124, -278 -], -"eigen:src/app/Containers/RegistrationFlow.tsx": [ -9 -], -"eigen:src/app/Containers/WorksForYou.tsx": [ -20, -21 -], -"eigen:src/app/Icons/ChevronIcon.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Icons/CircleWhiteCheckIcon.tsx": [ -5, -6 -], -"eigen:src/app/Icons/Crosshair.tsx": [ -5 -], -"eigen:src/app/Icons/GridViewIcon.tsx": [ -6 -], -"eigen:src/app/Icons/ListViewIcon.tsx": [ -6 -], -"eigen:src/app/Icons/Pin.tsx": [ -7, -9, -10, -11 -], -"eigen:src/app/Icons/PinSavedOn.tsx": [ -6, -7 -], -"eigen:src/app/Icons/PinSavedSelected.tsx": [ -5, -6 -], -"eigen:src/app/Scenes/Articles/ArticlesList.tsx": [ -18, -19, -20, -21, -22, -23, -24, -89 -], -"eigen:src/app/Scenes/Artist/Artist.tsx": [ -30, -31, -32, -33, -34, -122, -123, -124, -125, -126 -], -"eigen:src/app/Scenes/Artist/SearchCriteria.tsx": [ -11, -12, -13 -], -"eigen:src/app/Scenes/ArtistArticles/ArtistArticles.tsx": [ -16, -17, -98, -99 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeries.tsx": [ -27, -177 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesArtworks.tsx": [ -15, -16 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesFullArtistSeriesList.tsx": [ -15, -77 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesHeader.tsx": [ -8 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesListItem.tsx": [ -16, -17, -18, -19, -20, -21, -22 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesMeta.tsx": [ -20, -21 -], -"eigen:src/app/Scenes/ArtistSeries/ArtistSeriesMoreSeries.tsx": [ -16, -17, -18, -19, -20, -21, -22 -], -"eigen:src/app/Scenes/ArtistShows/ArtistShows2.tsx": [ -17, -18, -149 -], -"eigen:src/app/Scenes/Artwork/Components/AboutArtist.tsx": [ -11 -], -"eigen:src/app/Scenes/Artwork/Components/AboutWork.tsx": [ -10 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkActions.tsx": [ -30, -31, -32 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkDetails.tsx": [ -13 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkDetailsRow.tsx": [ -13, -14, -15, -16 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkExtraLinks/AuctionFaqSection.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkExtraLinks/FaqAndSpecialistSection.tsx": [ -12 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkExtraLinks/index.tsx": [ -15, -16, -39 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkHeader.tsx": [ -33 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkHistory.tsx": [ -10 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworkTombstone.tsx": [ -16 -], -"eigen:src/app/Scenes/Artwork/Components/ArtworksInSeriesRail.tsx": [ -16 -], -"eigen:src/app/Scenes/Artwork/Components/AuctionPrice.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Artwork/Components/CascadingEndTimesBanner.tsx": [ -6, -7 -], -"eigen:src/app/Scenes/Artwork/Components/CertificateAuthenticityModal.tsx": [ -9, -10 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/BidButton.tsx": [ -17, -18, -19, -20 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/BuyNowButton.tsx": [ -12, -13, -14, -16 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/CollapsibleArtworkDetails.tsx": [ -12, -13 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/CommercialButtons.tsx": [ -13, -14, -16, -17 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/InquiryButtons.tsx": [ -16, -16 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/InquiryModal.tests.tsx": [ -90 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/InquiryModal.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -40, -41, -42 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/InquirySuccessNotification.tsx": [ -10, -11 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/LocationAutocomplete.tsx": [ -9, -10, -79, -80, -81, -82 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/MakeOfferButton.tsx": [ -13, -14, -16, -17, -18 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialButtons/ShippingModal.tsx": [ -11, -12, -13, -14 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialEditionSetInformation.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialInformation.tsx": [ -31, -31, -31, -32, -32, -32, -33, -33, -33, -34, -34, -34, -35, -35, -35, -36, -36, -36, -37, -37, -37, -38, -38, -38, -148, -148 -], -"eigen:src/app/Scenes/Artwork/Components/CommercialPartnerInformation.tsx": [ -9 -], -"eigen:src/app/Scenes/Artwork/Components/ContextCard.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Artwork/Components/CreateArtworkAlertButtonsSection.tests.tsx": [ -23 -], -"eigen:src/app/Scenes/Artwork/Components/CreateArtworkAlertButtonsSection.tsx": [ -25, -28 -], -"eigen:src/app/Scenes/Artwork/Components/CreateArtworkAlertSection.tsx": [ -23 -], -"eigen:src/app/Scenes/Artwork/Components/FollowArtistLink.tsx": [ -9, -10, -11 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/FullScreen/DeepZoom/DeepZoomLevel.tsx": [ -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/FullScreen/DeepZoom/DeepZoomOverlay.tsx": [ -16, -17, -18, -21, -22, -23, -24 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/FullScreen/DeepZoom/DeepZoomTile.tsx": [ -40, -41, -42, -43, -44, -45, -46 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/FullScreen/ImageZoomView.tsx": [ -44, -45, -46 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageCarousel.tsx": [ -31, -32, -33, -34, -35 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageCarouselEmbedded.tests.tsx": [ -34 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageCarouselEmbedded.tsx": [ -12, -13, -14 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageCarouselPaginationIndicator.tsx": [ -10, -33, -33 -], -"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageWithLoadingState.tsx": [ -6, -7, -8, -9, -10, -11, -12 -], -"eigen:src/app/Scenes/Artwork/Components/InstagramStoryViewShot.tsx": [ -22, -23, -24, -25 -], -"eigen:src/app/Scenes/Artwork/Components/OtherWorks/ContextGridCTA.tsx": [ -8, -9, -10 -], -"eigen:src/app/Scenes/Artwork/Components/OtherWorks/Header.tsx": [ -5 -], -"eigen:src/app/Scenes/Artwork/Components/PartnerCard.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/Artwork/Components/Questions.tsx": [ -8 -], -"eigen:src/app/Scenes/Artwork/Components/RequestConditionReport.tsx": [ -21, -22, -23 -], -"eigen:src/app/Scenes/ArtworkAttributionClassFAQ/ArtworkAttributionClassFAQ.tsx": [ -13 -], -"eigen:src/app/Scenes/ArtworkMedium/ArtworkMedium.tsx": [ -13, -69 -], -"eigen:src/app/Scenes/AuctionBuyersPremium/AuctionBuyersPremium.tsx": [ -15, -19 -], -"eigen:src/app/Scenes/AuctionResult/AuctionResult.tsx": [ -30, -31, -310, -311 -], -"eigen:src/app/Scenes/AuctionResult/ComparableWorks.tsx": [ -17 -], -"eigen:src/app/Scenes/AuctionResultsForArtistsYouFollow/AuctionResultsForArtistsYouFollow.tsx": [ -18, -19 -], -"eigen:src/app/Scenes/BottomTabs/BottomTabsButton.tsx": [ -17, -18, -19, -131 -], -"eigen:src/app/Scenes/BottomTabs/BottomTabsIcon.tsx": [ -12, -12 -], -"eigen:src/app/Scenes/BottomTabs/BottomTabsNavigator.tsx": [ -13 -], -"eigen:src/app/Scenes/City/City.tsx": [ -21, -22, -23, -24, -25, -256 -], -"eigen:src/app/Scenes/City/CityBMWList.tsx": [ -14, -15, -153 -], -"eigen:src/app/Scenes/City/CityBMWSponsorship.tsx": [ -10, -11, -12 -], -"eigen:src/app/Scenes/City/CityFairList.tsx": [ -16, -17, -168 -], -"eigen:src/app/Scenes/City/CityPicker.tsx": [ -15, -16 -], -"eigen:src/app/Scenes/City/CitySavedList.tsx": [ -15, -16, -17, -18, -158 -], -"eigen:src/app/Scenes/City/CitySectionList.tsx": [ -20, -21, -22, -23, -215, -216 -], -"eigen:src/app/Scenes/City/Components/AllEvents.tsx": [ -14, -15, -16, -17, -25 -], -"eigen:src/app/Scenes/City/Components/BMWEventSection/index.tsx": [ -11, -12, -13, -14 -], -"eigen:src/app/Scenes/City/Components/Event/index.tsx": [ -18, -19, -20 -], -"eigen:src/app/Scenes/City/Components/EventList.tsx": [ -26, -27, -28, -29, -30, -31, -32, -33, -34 -], -"eigen:src/app/Scenes/City/Components/EventSection/index.tsx": [ -9, -10, -11, -12, -13 -], -"eigen:src/app/Scenes/City/Components/FairEventSection/Components/FairEventSectionCard.tsx": [ -11 -], -"eigen:src/app/Scenes/City/Components/FairEventSection/index.tsx": [ -17, -19 -], -"eigen:src/app/Scenes/City/Components/TabFairItemRow/index.tsx": [ -10 -], -"eigen:src/app/Scenes/Collection/Collection.tsx": [ -18, -124 -], -"eigen:src/app/Scenes/Collection/Components/CollectionArtworksFilter.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Collection/Components/CollectionHubsRails/ArtistSeries/CollectionArtistSeriesRail.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/Collection/Components/CollectionHubsRails/FeaturedCollections/FeaturedCollectionsRail.tsx": [ -17, -18 -], -"eigen:src/app/Scenes/Collection/Components/CollectionHubsRails/OtherCollections/OtherCollectionsRail.tsx": [ -10 -], -"eigen:src/app/Scenes/Collection/Components/CollectionHubsRails/index.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Collection/Components/FeaturedArtists.tsx": [ -14, -15 -], -"eigen:src/app/Scenes/Collection/Components/FullFeaturedArtistList.tsx": [ -13, -81 -], -"eigen:src/app/Scenes/Collection/Screens/CollectionArtworks.tsx": [ -16, -17, -18 -], -"eigen:src/app/Scenes/Collection/Screens/CollectionHeader.tsx": [ -11 -], -"eigen:src/app/Scenes/Fair/Components/FairArtworks.tsx": [ -21, -22, -23, -24, -25 -], -"eigen:src/app/Scenes/Fair/Components/FairCollections.tsx": [ -15 -], -"eigen:src/app/Scenes/Fair/Components/FairEditorial.tsx": [ -11 -], -"eigen:src/app/Scenes/Fair/Components/FairEditorialShare.tsx": [ -6, -7 -], -"eigen:src/app/Scenes/Fair/Components/FairEmptyState.tsx": [ -7 -], -"eigen:src/app/Scenes/Fair/Components/FairExhibitorRail.tsx": [ -13 -], -"eigen:src/app/Scenes/Fair/Components/FairExhibitors.tsx": [ -12, -13 -], -"eigen:src/app/Scenes/Fair/Components/FairFollowedArtistsRail.tsx": [ -13 -], -"eigen:src/app/Scenes/Fair/Components/FairHeader.tsx": [ -15 -], -"eigen:src/app/Scenes/Fair/Components/FairTiming.tsx": [ -9 -], -"eigen:src/app/Scenes/Fair/Components/SimpleTabs.tsx": [ -10, -11, -36, -37, -38 -], -"eigen:src/app/Scenes/Fair/Fair.tsx": [ -30, -34 -], -"eigen:src/app/Scenes/Fair/FairAllFollowedArtists.tsx": [ -25, -26, -128 -], -"eigen:src/app/Scenes/Fair/FairArticles.tsx": [ -18, -22, -23 -], -"eigen:src/app/Scenes/Fair/FairBMWArtActivation.tsx": [ -16, -127 -], -"eigen:src/app/Scenes/Fair/FairMoreInfo.tsx": [ -17, -21 -], -"eigen:src/app/Scenes/Favorites/FavoriteArtists.tsx": [ -21, -22 -], -"eigen:src/app/Scenes/Favorites/FavoriteArtworks.tsx": [ -20, -21, -22 -], -"eigen:src/app/Scenes/Favorites/FavoriteCategories.tsx": [ -21, -22 -], -"eigen:src/app/Scenes/Favorites/FavoriteShows.tsx": [ -19, -20, -21 -], -"eigen:src/app/Scenes/Favorites/Favorites.tsx": [ -26 -], -"eigen:src/app/Scenes/Feature/Feature.tsx": [ -51, -225 -], -"eigen:src/app/Scenes/Feature/components/FeatureFeaturedLink.tsx": [ -12, -13 -], -"eigen:src/app/Scenes/Feature/components/FeatureHeader.tsx": [ -13 -], -"eigen:src/app/Scenes/ForceUpdate/ForceUpdate.tsx": [ -6 -], -"eigen:src/app/Scenes/Gene/Gene.tsx": [ -24, -25, -29, -30, -31 -], -"eigen:src/app/Scenes/Home/Components/ArticlesRail.tsx": [ -14, -15, -16 -], -"eigen:src/app/Scenes/Home/Components/ArtworkModuleRail.tsx": [ -35, -36, -37 -], -"eigen:src/app/Scenes/Home/Components/ArtworkRecommendationsRail.tsx": [ -16, -17, -18 -], -"eigen:src/app/Scenes/Home/Components/AuctionResultsRail.tsx": [ -17, -18, -21 -], -"eigen:src/app/Scenes/Home/Components/CollectionsRail.tsx": [ -25, -26, -27, -28 -], -"eigen:src/app/Scenes/Home/Components/EmailConfirmationBanner.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Home/Components/FairsRail.tsx": [ -25, -26, -27, -28 -], -"eigen:src/app/Scenes/Home/Components/HomeHero.tsx": [ -9 -], -"eigen:src/app/Scenes/Home/Components/NewWorksForYouRail.tsx": [ -16, -17, -18 -], -"eigen:src/app/Scenes/Home/Components/SalesRail.tsx": [ -26, -27, -28, -29 -], -"eigen:src/app/Scenes/Home/Components/ShowsRail.tsx": [ -13, -14, -15 -], -"eigen:src/app/Scenes/Home/Components/Trove.tsx": [ -9, -10 -], -"eigen:src/app/Scenes/Home/Home.tsx": [ -63, -64, -65, -66, -67, -68, -69, -70, -71, -340 -], -"eigen:src/app/Scenes/Inbox/Components/ActiveBids/ActiveBid.tsx": [ -65 -], -"eigen:src/app/Scenes/Inbox/Components/ActiveBids/index.tsx": [ -20, -21 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Avatar.tsx": [ -25, -26 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/CTAPopUp.tsx": [ -4, -4 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Composer.tsx": [ -27, -28, -29, -30 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ConversationCTA.tests.tsx": [ -23 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ConversationCTA.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ConversationSnippet.tsx": [ -41, -42 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Conversations.tsx": [ -18, -19, -20, -21, -22 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/EditionSelectBox.tsx": [ -20, -21, -22 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/InquiryMakeOfferButton.tsx": [ -10, -11, -13, -14, -15 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/InquiryPurchaseButton.tsx": [ -11, -12, -13, -14, -15, -16 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ItemArtwork.tsx": [ -9 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ItemInfo.tsx": [ -8 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ItemShow.tsx": [ -9 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/MakeOfferModal.tests.tsx": [ -41 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/MakeOfferModal.tsx": [ -19, -20, -104, -105 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Message.tsx": [ -24, -25, -26 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/MessageGroup.tsx": [ -26, -27, -28, -29, -43, -44, -45, -46, -47, -66, -67 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/OpenInquiryModalButton.tsx": [ -14, -15 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/OrderInformation.tsx": [ -9, -10 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/OrderUpdate.tsx": [ -19, -20 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/PaymentMethod.tsx": [ -8 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/ArtworkPreview.tsx": [ -42, -43 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/Attachment/AttachmentList.tsx": [ -9 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/Attachment/AttachmentPreview.tsx": [ -18, -22 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/Attachment/FileDownload.tsx": [ -18, -19, -20 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/Attachment/ImagePreview.tsx": [ -16 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/Attachment/PDFPreview.tsx": [ -30 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Preview/ShowPreview.tsx": [ -37, -38 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/PurchaseModal.tsx": [ -19, -20, -103, -104 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/ReviewOfferButton.tsx": [ -19, -20, -21 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/SellerReplyEstimate.tsx": [ -8 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/Shipping.tsx": [ -8 -], -"eigen:src/app/Scenes/Inbox/Components/Conversations/TimeSince.tsx": [ -35, -36, -37, -38 -], -"eigen:src/app/Scenes/Inbox/Components/Typography/index.tsx": [ -17, -80 -], -"eigen:src/app/Scenes/Inbox/ConversationNavigator.tsx": [ -5 -], -"eigen:src/app/Scenes/Inbox/Screens/Conversation.tsx": [ -45, -46, -47, -48, -274, -275 -], -"eigen:src/app/Scenes/Inbox/Screens/ConversationDetails.tsx": [ -21, -22, -90 -], -"eigen:src/app/Scenes/LotsByArtistsYouFollow/LotsByArtistsYouFollow.tsx": [ -14, -15 -], -"eigen:src/app/Scenes/Map/Components/CitySwitcherButton.tsx": [ -25, -26, -27, -28 -], -"eigen:src/app/Scenes/Map/Components/PinsShapeLayer.tsx": [ -13, -14, -15, -16 -], -"eigen:src/app/Scenes/Map/Components/ShowCard.tsx": [ -33, -34, -35, -36 -], -"eigen:src/app/Scenes/Map/Components/UserPositionButton.tsx": [ -29, -30 -], -"eigen:src/app/Scenes/Map/GlobalMap.tsx": [ -69, -71, -73, -75, -77, -79, -81, -83, -85, -87 -], -"eigen:src/app/Scenes/Map/MapContainer.tsx": [ -6, -7, -8, -9, -10 -], -"eigen:src/app/Scenes/MyAccount/Components/MyAccountFieldEditScreen.tsx": [ -31, -32, -33, -34, -136 -], -"eigen:src/app/Scenes/MyAccount/MyAccount.tsx": [ -20, -20 -], -"eigen:src/app/Scenes/MyAccount/MyAccountDeleteAccount.tsx": [ -20 -], -"eigen:src/app/Scenes/MyAccount/MyAccountEditEmail.tsx": [ -17, -17 -], -"eigen:src/app/Scenes/MyAccount/MyAccountEditName.tsx": [ -15, -15 -], -"eigen:src/app/Scenes/MyAccount/MyAccountEditPhone.tsx": [ -15 -], -"eigen:src/app/Scenes/MyBids/Components/ActiveLotStanding.tsx": [ -17 -], -"eigen:src/app/Scenes/MyBids/Components/ClosedLotStanding.tsx": [ -37, -38, -39, -40 -], -"eigen:src/app/Scenes/MyBids/Components/CompleteRegistrationCTAWrapper.tsx": [ -9, -10 -], -"eigen:src/app/Scenes/MyBids/Components/Lot.tsx": [ -8, -10, -12, -13 -], -"eigen:src/app/Scenes/MyBids/Components/LotStatusListItem.tsx": [ -10, -11 -], -"eigen:src/app/Scenes/MyBids/Components/NoBids.tsx": [ -7 -], -"eigen:src/app/Scenes/MyBids/Components/SaleCard.tsx": [ -16, -38, -39, -40, -41 -], -"eigen:src/app/Scenes/MyBids/Components/SaleInfo.tsx": [ -12 -], -"eigen:src/app/Scenes/MyBids/Components/WatchedLot.tsx": [ -14 -], -"eigen:src/app/Scenes/MyBids/MyBids.tsx": [ -20, -21, -22, -172 -], -"eigen:src/app/Scenes/MyCollection/Components/MyCollectionArtworkList.tsx": [ -12, -13, -14, -15, -16, -17, -18 -], -"eigen:src/app/Scenes/MyCollection/Components/MyCollectionArtworkListItem.tsx": [ -16 -], -"eigen:src/app/Scenes/MyCollection/Components/MyCollectionImageView.tsx": [ -10, -11, -12, -13, -14 -], -"eigen:src/app/Scenes/MyCollection/Components/MyCollectionSearchBar.tsx": [ -23, -24, -25, -26, -27 -], -"eigen:src/app/Scenes/MyCollection/Components/ScreenMargin.tsx": [ -7 -], -"eigen:src/app/Scenes/MyCollection/MyCollection.tsx": [ -60, -61 -], -"eigen:src/app/Scenes/MyCollection/MyCollectionArtworks.tsx": [ -29, -30, -31, -32, -33 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkAbout/MyCollectionArtworkAboutWork.tsx": [ -22, -23 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkAbout/MyCollectionArtworkArticles.tsx": [ -17, -18, -19, -20 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkAbout/MyCollectionArtworkPurchaseDetails.tsx": [ -9 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/MyCollectionArtworkArtistArticles.tsx": [ -14 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/MyCollectionArtworkArtistAuctionResults.tsx": [ -18 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/MyCollectionArtworkArtistMarket.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/MyCollectionArtworkComparableWorks.tsx": [ -18 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/MyCollectionArtworkDemandIndex.tsx": [ -14, -15, -55, -94 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/RequestForPriceEstimate/RequestForPriceEstimateBanner.tsx": [ -13, -14, -15 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/ArtworkInsights/RequestForPriceEstimate/RequestForPriceEstimateScreen.tsx": [ -17, -18, -19, -20, -21, -22 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/Field.tsx": [ -4, -4 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/MyCollectionArtworkHeader.tsx": [ -20 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/MyCollectionArtworkSubmissionStatus.tsx": [ -14 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/MyCollectionWhySell.tests.tsx": [ -23 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/Components/MyCollectionWhySell.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/MyCollectionArtwork.tsx": [ -158, -158, -159, -159, -160, -160 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/MyCollectionArtworkAbout.tsx": [ -15, -16, -17 -], -"eigen:src/app/Scenes/MyCollection/Screens/Artwork/MyCollectionArtworkInsights.tsx": [ -18, -19, -20 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/ArtistAutosuggest.tsx": [ -10, -11 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/ArtistSearchResult.tsx": [ +"eigen:src/app/Components/FPSCounter.tsx": [ 5 ], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/ArtworkAutosuggest.tsx": [ -8, -9 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/ArtworkAutosuggestResults.tsx": [ -15, -16, -17, -18, -19, -20, -124, -125, -126, -127, -128 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/Rarity.tsx": [ -71, -72 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Components/SavingArtworkModal.tsx": [ -6, -7 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tsx": [ -67 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkUploadMessages.tsx": [ -12, -13 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormAddPhotos.tsx": [ -61, -89 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormMain.tsx": [ -262, -262 -], -"eigen:src/app/Scenes/MyCollection/Screens/ArtworkList/MyCollectionArtworkGridItem.tsx": [ -19 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/ArtistItem.tsx": [ -9, -10, -11 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/AuctionResultsForArtistsYouCollectRail.tsx": [ -19 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/AverageAuctionPriceListItem.tsx": [ -11, -12 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/AverageAuctionPriceRail.tsx": [ -15 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/AverageSalePriceAtAuction.tsx": [ -10, -11 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/AverageSalePriceSelectArtistModal.tsx": [ -23, -23, -24, -24, -25, -25 -], -"eigen:src/app/Scenes/MyCollection/Screens/Insights/MyCollectionInsightsOverview.tsx": [ -8 -], -"eigen:src/app/Scenes/MyProfile/LoggedInUserInfo.tsx": [ -10 -], -"eigen:src/app/Scenes/MyProfile/MyProfileEditForm.tsx": [ -432, -433, -434, -435, -436, -520 -], -"eigen:src/app/Scenes/MyProfile/MyProfileHeader.tsx": [ -29 -], -"eigen:src/app/Scenes/MyProfile/MyProfileHeaderMyCollectionAndSavedWorks.tsx": [ -27 -], -"eigen:src/app/Scenes/MyProfile/MyProfilePayment.tsx": [ -40, -40 -], -"eigen:src/app/Scenes/MyProfile/MyProfilePushNotifications.tsx": [ -99, -100, -101, -112, -113, -114 -], -"eigen:src/app/Scenes/MyProfile/MyProfileSettings.tsx": [ -105 +"eigen:src/app/Scenes/Artwork/Components/ImageCarousel/ImageCarouselEmbedded.tests.tsx": [ +34 ], -"eigen:src/app/Scenes/NewWorksForYou/NewWorksForYou.tsx": [ -19, +"eigen:src/app/Scenes/MyCollection/Screens/Artwork/MyCollectionArtworkAbout.tsx": [ 20 ], -"eigen:src/app/Scenes/Onboarding/ForgotPassword.tsx": [ -23, -24 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/EmailSubscriptionCheckbox.tsx": [ -6, -7, -8 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/OnboardingCreateAccount.tsx": [ -209, -210, -211, -250 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/OnboardingCreateAccountEmail.tests.tsx": [ -14 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/OnboardingCreateAccountName.tests.tsx": [ -20, -21, -22 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/OnboardingCreateAccountPassword.tests.tsx": [ -18 -], -"eigen:src/app/Scenes/Onboarding/OnboardingCreateAccount/TermsOfServiceCheckbox.tsx": [ -8, -9, -10, -11 -], -"eigen:src/app/Scenes/Onboarding/OnboardingLoginWithOTP.tsx": [ -15, -16, -17, -22 -], -"eigen:src/app/Scenes/Onboarding/OnboardingPersonalization/OnboardingPersonalization.tsx": [ -61, -67, -207 -], -"eigen:src/app/Scenes/Onboarding/OnboardingPersonalization/OnboardingPersonalizationArtistListItem.tsx": [ -15, -24, -25, -26, -27, -28, -29, -30, -31 -], -"eigen:src/app/Scenes/Onboarding/OnboardingPersonalization/OnboardingPersonalizationModal.tsx": [ -27, -28 -], "eigen:src/app/Scenes/Onboarding/OnboardingSocialLink.tsx": [ -273, -274, -275, -304 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/ArtworkInfoSection.tsx": [ -10 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/OrderDetailsHeader.tsx": [ -10 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/OrderDetailsPayment.tsx": [ -7 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/ShipsToSection.tsx": [ -8 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/SoldBySection.tsx": [ -9 -], -"eigen:src/app/Scenes/OrderHistory/OrderDetails/Components/SummarySection.tsx": [ -8 -], -"eigen:src/app/Scenes/OrderHistory/OrderHistory.tsx": [ -17, -17 -], -"eigen:src/app/Scenes/OrderHistory/OrderHistoryRow.tsx": [ -13 -], -"eigen:src/app/Scenes/Partner/Components/PartnerArtwork.tsx": [ -17, -18 -], -"eigen:src/app/Scenes/Partner/Components/PartnerFollowButton.tsx": [ -9, -10, -11 -], -"eigen:src/app/Scenes/Partner/Components/PartnerHeader.tsx": [ -11 -], -"eigen:src/app/Scenes/Partner/Components/PartnerLocationSection.tsx": [ -9 -], -"eigen:src/app/Scenes/Partner/Components/PartnerMap.tsx": [ -18 -], -"eigen:src/app/Scenes/Partner/Components/PartnerOverview.tsx": [ -17, -18 -], -"eigen:src/app/Scenes/Partner/Components/PartnerShowRailItem.tsx": [ -20 -], -"eigen:src/app/Scenes/Partner/Components/PartnerShows.tsx": [ -22, -27, -75, -76 -], -"eigen:src/app/Scenes/Partner/Components/PartnerShowsRail.tsx": [ -13, -14 -], -"eigen:src/app/Scenes/Partner/Components/PartnerSubscriberBanner.tsx": [ -8 -], -"eigen:src/app/Scenes/Partner/Partner.tsx": [ -20, -21, -106, -107 -], -"eigen:src/app/Scenes/Partner/Screens/PartnerLocations.tsx": [ -16, -17, -100 -], -"eigen:src/app/Scenes/Sale/Components/BuyNowArtworksRail.tsx": [ -13 -], -"eigen:src/app/Scenes/Sale/Components/RegisterToBidButton.tsx": [ -16, -17, -18, -19 -], -"eigen:src/app/Scenes/Sale/Components/SaleActiveBidItem.tsx": [ -12 -], -"eigen:src/app/Scenes/Sale/Components/SaleActiveBids.tsx": [ -11, -12, -13 -], -"eigen:src/app/Scenes/Sale/Components/SaleArtworkList.tsx": [ -14, -15, -16, -17, -18, -19, -20 -], -"eigen:src/app/Scenes/Sale/Components/SaleArtworkListItem.tsx": [ -19, -20, -21, -22 -], -"eigen:src/app/Scenes/Sale/Components/SaleArtworksRail.tsx": [ -13 -], -"eigen:src/app/Scenes/Sale/Components/SaleHeader.tsx": [ -23, -24 -], -"eigen:src/app/Scenes/Sale/Components/SaleLotsList.tsx": [ -25, -26, -27, -28, -29, -30, -31, -39, -40, -41 -], -"eigen:src/app/Scenes/Sale/Sale.tsx": [ -43, -44, -45, -46, -398, -399 -], -"eigen:src/app/Scenes/Sale/SaleLotsList.tests.tsx": [ -42 -], -"eigen:src/app/Scenes/SaleInfo/SaleInfo.tsx": [ -26, -27, -144, -145, -149, -176, -254 -], -"eigen:src/app/Scenes/Sales/Components/SaleList.tsx": [ -12, -13 -], -"eigen:src/app/Scenes/Sales/Components/SaleListItem.tsx": [ -14, -15, -16, -17 -], -"eigen:src/app/Scenes/Sales/Components/SectionHeader.tsx": [ -20 -], -"eigen:src/app/Scenes/Sales/CurrentlyRunningAuctions.tsx": [ -18, -19, -20 -], -"eigen:src/app/Scenes/Sales/Sales.tsx": [ -33 -], -"eigen:src/app/Scenes/Sales/UpcomingAuctions.tsx": [ -17, -18, -19 -], -"eigen:src/app/Scenes/SavedAddresses/Components/AddAddressButton.tsx": [ -5, -6, -7, -8, -9 -], -"eigen:src/app/Scenes/SavedAddresses/SavedAddresses.tsx": [ -39, -39 -], -"eigen:src/app/Scenes/SavedAddresses/SavedAddressesForm.tests.tsx": [ -16 -], -"eigen:src/app/Scenes/SavedAddresses/SavedAddressesForm.tsx": [ -88, -89, -307 -], -"eigen:src/app/Scenes/SavedSearchAlert/Components/Form.tsx": [ -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32 -], -"eigen:src/app/Scenes/SavedSearchAlert/Components/SavedSearchAlertSwitch.tsx": [ -6, -7, -8, -9 -], -"eigen:src/app/Scenes/SavedSearchAlert/EditSavedSearchAlert.tsx": [ -26, -30, -31, -32, -33, -34, -35 -], -"eigen:src/app/Scenes/SavedSearchAlert/SavedSearchAlert.tsx": [ -7, -8 -], -"eigen:src/app/Scenes/SavedSearchAlert/SavedSearchAlertForm.tsx": [ -30, -31, -32, -33, -34, -35, -36, -37 -], -"eigen:src/app/Scenes/SavedSearchAlert/containers/CreateSavedSearchContentContainer.tsx": [ -23, -23, -24, -24, -25, -25, -30, -31, -32 -], -"eigen:src/app/Scenes/SavedSearchAlertsList/Components/SavedSearchListItem.tsx": [ -5, -6 -], -"eigen:src/app/Scenes/SavedSearchAlertsList/Components/SavedSearchesList.tsx": [ -24, -24, -25, -25, -29, -30, -31, -32 -], -"eigen:src/app/Scenes/SavedSearchAlertsList/Components/SortByModal.tsx": [ -13, -14, -15, -16, -17, -18 -], -"eigen:src/app/Scenes/Search/AutosuggestResults.tsx": [ -32, -34, -35, -36, -37, -38, -39, -40, -171 -], -"eigen:src/app/Scenes/Search/SearchArtworksContainer.tsx": [ -11 -], -"eigen:src/app/Scenes/Search/SearchArtworksGrid.tsx": [ -21, -22, -23 -], -"eigen:src/app/Scenes/Search/SearchModel.tests.tsx": [ -100 -], -"eigen:src/app/Scenes/Search/SearchResults.tsx": [ -14, -15, -16 -], -"eigen:src/app/Scenes/Search/components/AlgoliaSearchResults.tsx": [ -18, -19, -20 -], -"eigen:src/app/Scenes/Search/components/AutosuggestSearchResult.tsx": [ -36, -37, -38, -39, -40, -41, -42, -43, -44 -], -"eigen:src/app/Scenes/Search/components/ResultWithHighlight.tsx": [ -10, -11 -], -"eigen:src/app/Scenes/Search/components/SearchInput.tsx": [ -11, -12, -13, -14 -], -"eigen:src/app/Scenes/Search/components/SearchPills.tsx": [ -7, -8, -9, -10 -], -"eigen:src/app/Scenes/Search/components/SearchResult.tsx": [ -11, -12, -13 -], -"eigen:src/app/Scenes/Search/components/SearchResultImage.tsx": [ -6, -6 -], -"eigen:src/app/Scenes/Search/components/SearchResultList.tsx": [ -6 -], -"eigen:src/app/Scenes/Search/components/placeholders/AlgoliaSearchPlaceholder.tsx": [ -8 -], -"eigen:src/app/Scenes/Search/components/placeholders/AutosuggestResultsPlaceholder.tsx": [ -10 -], -"eigen:src/app/Scenes/SellWithArtsy/Components/ArtistList.tsx": [ -14, -15, -93 -], -"eigen:src/app/Scenes/SellWithArtsy/Components/Footer.tsx": [ -14 -], -"eigen:src/app/Scenes/SellWithArtsy/Components/Header.tsx": [ -12 -], -"eigen:src/app/Scenes/SellWithArtsy/Components/RecentlySold.tsx": [ -17, -18 -], -"eigen:src/app/Scenes/SellWithArtsy/SellWithArtsyHome.tsx": [ -21, -22, -68 -], -"eigen:src/app/Scenes/SellWithArtsy/SubmitArtwork/ArtworkDetails/ArtworkDetails.tsx": [ -14 -], -"eigen:src/app/Scenes/SellWithArtsy/SubmitArtwork/ArtworkDetails/InfoModal/InfoModal.tsx": [ -7, -8, -9 -], -"eigen:src/app/Scenes/SellWithArtsy/SubmitArtwork/ContactInformation/ContactInformation.tsx": [ -18, -19, -140 -], -"eigen:src/app/Scenes/SellWithArtsy/SubmitArtwork/UploadPhotos/UploadPhotos.tsx": [ -15 -], -"eigen:src/app/Scenes/SellWithArtsy/SubmitArtwork/UploadPhotos/UploadPhotosForm.tsx": [ -18 -], -"eigen:src/app/Scenes/Show/Components/ShowArtworks.tsx": [ -16, -17, -18, -22, -23, -24 -], -"eigen:src/app/Scenes/Show/Components/ShowArtworksEmptyState.tsx": [ -7 -], -"eigen:src/app/Scenes/Show/Components/ShowContextCard.tsx": [ -13, -69, -72, -75, -78, -81, -84 -], -"eigen:src/app/Scenes/Show/Components/ShowHeader.tsx": [ -9 -], -"eigen:src/app/Scenes/Show/Components/ShowHours.tsx": [ -8 -], -"eigen:src/app/Scenes/Show/Components/ShowInfo.tsx": [ -9 -], -"eigen:src/app/Scenes/Show/Components/ShowInstallShots.tsx": [ -10 -], -"eigen:src/app/Scenes/Show/Components/ShowLocation.tsx": [ -8 -], -"eigen:src/app/Scenes/Show/Components/ShowLocationHours.tsx": [ -11 -], -"eigen:src/app/Scenes/Show/Components/ShowViewingRoom.tsx": [ -12 -], -"eigen:src/app/Scenes/Show/Screens/ShowMoreInfo.tsx": [ -27, -217 -], -"eigen:src/app/Scenes/Show/Show.tsx": [ -30, -34 -], -"eigen:src/app/Scenes/Tag/Tag.tsx": [ -25, -26, -30 -], -"eigen:src/app/Scenes/Tag/TagHeader.tsx": [ -7, -8 -], -"eigen:src/app/Scenes/VanityURL/VanityURLEntity.tests.tsx": [ -21, -22, -23 -], -"eigen:src/app/Scenes/VanityURL/VanityURLEntity.tsx": [ -16, -17, -57, -58, -59 -], -"eigen:src/app/Scenes/VanityURL/VanityURLPossibleRedirect.tsx": [ -71 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomArtworkRail.tsx": [ -13 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomHeader.tsx": [ -15, -59, -59, -59 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomSubsections.tsx": [ -9 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomViewWorksButton.tsx": [ -14, -15 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomsHomeRail.tsx": [ -22, -23, -24, -78 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomsListFeatured.tsx": [ -40, -41 -], -"eigen:src/app/Scenes/ViewingRoom/Components/ViewingRoomsListItem.tsx": [ -68 -], -"eigen:src/app/Scenes/ViewingRoom/ViewingRoom.tsx": [ -24, -40, -40, -256 -], -"eigen:src/app/Scenes/ViewingRoom/ViewingRoomArtwork.tsx": [ -38, -39, -43, -196, -197 -], -"eigen:src/app/Scenes/ViewingRoom/ViewingRoomArtworks.tsx": [ -20, -21, -215 -], -"eigen:src/app/Websockets/auctions/AuctionSocketContext.tsx": [ -21, -22, -26 -], -"eigen:src/app/navigation/ModalStack.tsx": [ -33 -], -"eigen:src/app/navigation/NavStack.tsx": [ -23, -58, -59, -60, -75, -76, -77 -], -"eigen:src/app/tests/MockRelayRenderer.tsx": [ -19, -20, -21, -25, -30, -41, -42, -43 -], -"eigen:src/app/tests/MockRelayRendererFixtures.tsx": [ -62 -], -"eigen:src/app/tests/renderWithWrappers.tsx": [ -72 +277 ], "eigen:src/app/utils/AboveTheFoldQueryRenderer.tsx": [ -11, -12, -16, -20, -32, -33, -36 -], -"eigen:src/app/utils/AdminMenu.tsx": [ -255, -312, -394, -480, -481, -482, -483 -], -"eigen:src/app/utils/Context.tsx": [ -6 -], -"eigen:src/app/utils/QAInfo.tsx": [ -8, -26, -26 -], -"eigen:src/app/utils/__legacy_do_not_use__navigator-ios-shim.tsx": [ -13 -], -"eigen:src/app/utils/combineProviders.tests.tsx": [ -8 +54 ], "eigen:src/app/utils/experiments/UnleashProvider.tsx": [ 13 ], -"eigen:src/app/utils/placeholders.tsx": [ -108, -108, -138, -139, -140, -165 -], -"eigen:src/app/utils/track/index.tsx": [ -97, -111 -], "eigen:src/app/utils/useGlobalState.tests.tsx": [ 16 ], -"eigen:src/palette/ClassTheme.tsx": [ -8, -9 -], -"eigen:src/palette/Theme.tsx": [ -261 -], -"eigen:src/palette/animation/CssTransition.tsx": [ -5, -6 -], "eigen:src/palette/atoms/Spacer/Spacer.stories.tsx": [ 9, 29 -], -"eigen:src/palette/atoms/colors.stories.tsx": [ -8, -8 -], -"eigen:src/palette/atoms/space.stories.tsx": [ -7 -], -"eigen:src/palette/elements/Avatar/Avatar.tsx": [ -32, -34, -36 -], -"eigen:src/palette/elements/Banner/Banner.tsx": [ -6, -7, -8, -9, -10, -11, -12 -], -"eigen:src/palette/elements/Button/FollowButton.tsx": [ -9 -], -"eigen:src/palette/elements/Cards/CardTag.tsx": [ -10, -11, -12, -13, -14 -], -"eigen:src/palette/elements/Cards/LargeCard.tsx": [ -13, -14, -15, -16 -], -"eigen:src/palette/elements/Cards/MediumCard.tsx": [ -14, -15, -16, -17 -], -"eigen:src/palette/elements/Cards/SmallCard.tsx": [ -10, -11, -12, -13 -], -"eigen:src/palette/elements/Checkbox/Check.tsx": [ -43, -44, -45, -46 -], -"eigen:src/palette/elements/Checkbox/Checkbox.tsx": [ -16, -17, -18, -19, -20, -21 -], -"eigen:src/palette/elements/Collapse/Collapse.tsx": [ -4 -], -"eigen:src/palette/elements/CollapsibleMenuItem/CollapsibleMenuItem.stories.tsx": [ -7, -17, -27, -36, -36 -], -"eigen:src/palette/elements/CollapsibleMenuItem/CollapsibleMenuItem.tsx": [ -6, -7, -8, -9, -10, -11 -], -"eigen:src/palette/elements/Dialog/Dialog.tsx": [ -16, -17, -18, -19, -20, -21 -], -"eigen:src/palette/elements/EntityHeader/EntityHeader.tsx": [ -9, -10, -11, -12, -13, -14, -15 -], -"eigen:src/palette/elements/Header/ArtsyLogoHeader.tsx": [ -6 -], -"eigen:src/palette/elements/Histogram/Histogram.tsx": [ -15, -16 -], -"eigen:src/palette/elements/Input/Input.tsx": [ -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -47, -68, -69, -70, -71, -72 -], -"eigen:src/palette/elements/Input/InputTitle.tsx": [ -4, -4 -], -"eigen:src/palette/elements/Input/PhoneInput/PhoneInput.tsx": [ -18, -19, -20, -21 -], -"eigen:src/palette/elements/List/BulletedItem.tsx": [ -6, -7 -], -"eigen:src/palette/elements/Message/Message.tsx": [ -10, -11, -12, -13, -14, -15, -16, -17, -18 -], -"eigen:src/palette/elements/OpaqueImageView/OpaqueImageView2.tsx": [ -12, -18, -25, -28, -30, -31, -41, -44, -49, -55, -61, -63 -], -"eigen:src/palette/elements/PhotoRow/PhotoRow.tsx": [ -8, -9, -37, -58, -59, -60 -], -"eigen:src/palette/elements/PopIn/PopIn.tsx": [ -4, -4 -], -"eigen:src/palette/elements/ProgressBar/ProgressBar.tsx": [ -9, -10, -11, -12, -13 -], -"eigen:src/palette/elements/Radio/RadioButton.tsx": [ -17, -18, -19, -20, -21, -22, -23 -], -"eigen:src/palette/elements/Radio/RadioDot.tsx": [ -64, -65, -66, -67 -], -"eigen:src/palette/elements/Select/Select.tsx": [ -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -125, -126, -127, -128, -129, -130, -131, -132, -133, -134, -199, -200, -201, -202, -203, -204 -], -"eigen:src/palette/elements/Select/SelectV2.tsx": [ -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -120, -121, -122, -123, -124, -125, -126, -168, -169, -170, -171, -172, -173 -], -"eigen:src/palette/elements/Select/index.tsx": [ -12 -], -"eigen:src/palette/elements/SimpleMessage/SimpleMessage.tsx": [ -9, -13 -], -"eigen:src/palette/elements/Spinner/Spinner.tsx": [ -9, -11, -13, -15, -17 -], -"eigen:src/palette/elements/Tabs/Tab.tsx": [ -8, -9, -10, -11, -12, -13, -14 -], -"eigen:src/palette/elements/Tabs/TabBarContainer.tsx": [ -9, -10, -11, -91, -92 -], -"eigen:src/palette/elements/Tabs/Tabs.stories.tsx": [ -10, -11 -], -"eigen:src/palette/elements/Text/Text.tsx": [ -20, -21, -22, -23, -24, -25, -26 -], -"eigen:src/palette/elements/Touchable/Touchable.tsx": [ -14, -15, -16 -], -"eigen:src/palette/elements/Touchable/TouchableHighlightColor.tsx": [ -11, -12, -13 -], -"eigen:src/palette/elements/Touchable/TouchableWithScale.tsx": [ -19, -20 -], -"eigen:src/palette/elements/VisualClue/VisualClueDot.tsx": [ -7 -], -"eigen:src/palette/elements/VisualClue/VisualClueText.tsx": [ -8 -], -"eigen:src/palette/helpers/color.tests.tsx": [ -7 -], -"eigen:src/palette/helpers/space.tests.tsx": [ -8 -], -"eigen:src/palette/organisms/screenStructure/Screen.tsx": [ -35, -52, -131, -132, -133, -134 -], -"eigen:src/palette/svgs/ArrowCircleFillIcons.tsx": [ -5 -], -"eigen:src/palette/svgs/ArtsyLogoBlackIcon.tsx": [ -6 -], -"eigen:src/palette/svgs/ChevronIcon.tsx": [ -19 -], -"eigen:src/palette/svgs/CreditCardIcon.tsx": [ -8 -], -"eigen:src/palette/svgs/ShieldIcon.tsx": [ -7, -8 -], -"eigen:src/shared/utils/Wrap.tests.tsx": [ -7 -], -"eigen:src/shared/utils/Wrap.tsx": [ -4, -5, -25 -], -"eigen:src/storybook/helpers.tsx": [ -11, -12, -13, -14, -39, -40, -41, -42, -63 ] } diff --git a/its/ruling/src/test/expected/ts/moose/typescript-S6759.json b/its/ruling/src/test/expected/ts/moose/typescript-S6759.json deleted file mode 100644 index 3a7c2c5c9c2..00000000000 --- a/its/ruling/src/test/expected/ts/moose/typescript-S6759.json +++ /dev/null @@ -1,13 +0,0 @@ -{ -"moose:renderer/components/FilesList/FilesList.tsx": [ -208 -], -"moose:renderer/components/Message/Message.tsx": [ -7, -8 -], -"moose:renderer/components/TorrentDetails/TorrentDetails.tsx": [ -20, -21 -] -} diff --git a/its/ruling/src/test/expected/ts/searchkit/typescript-S6759.json b/its/ruling/src/test/expected/ts/searchkit/typescript-S6759.json index 03a3ddc26e1..edafdde4b02 100644 --- a/its/ruling/src/test/expected/ts/searchkit/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/searchkit/typescript-S6759.json @@ -1,13 +1,8 @@ { "searchkit:packages/searchkit-client/src/components.tsx": [ -10, -11, -12, -16, -17 +95 ], "searchkit:packages/searchkit-client/src/searchkit.tsx": [ -239, -240 +235 ] } diff --git a/its/ruling/src/test/expected/ts/vuetify/typescript-S6759.json b/its/ruling/src/test/expected/ts/vuetify/typescript-S6759.json index de000b586fb..44e7bfc5ac7 100644 --- a/its/ruling/src/test/expected/ts/vuetify/typescript-S6759.json +++ b/its/ruling/src/test/expected/ts/vuetify/typescript-S6759.json @@ -3,22 +3,9 @@ 21 ], "vuetify:packages/vuetify/src/components/VOverlay/VOverlay.tsx": [ -55, -56 +58 ], "vuetify:packages/vuetify/src/components/VRating/VRating.tsx": [ -165, -165, 165 -], -"vuetify:packages/vuetify/src/composables/loader.tsx": [ -39, -40, -41 -], -"vuetify:packages/vuetify/src/labs/VDataTable/VDataTableHeaders.tsx": [ -73, -73, -73 ] } diff --git a/packages/jsts/src/linter/quickfixes/messages.ts b/packages/jsts/src/linter/quickfixes/messages.ts index cc550484bec..3c760302ff8 100644 --- a/packages/jsts/src/linter/quickfixes/messages.ts +++ b/packages/jsts/src/linter/quickfixes/messages.ts @@ -50,7 +50,6 @@ const quickFixMessages = new Map([ ['prefer-namespace-keyword', "Replace with 'namespace' keyword"], ['prefer-object-has-own', 'Replace with Object.hasOwn()'], ['prefer-object-spread', 'Replace with object spread syntax'], - ['prefer-read-only-props', 'Mark the prop as read-only'], ['prefer-readonly', "Add 'readonly'"], ['prefer-return-this-type', "Replace return type with 'this'"], ['prefer-template', 'Replace with template string literal'], diff --git a/packages/jsts/src/linter/quickfixes/rules.ts b/packages/jsts/src/linter/quickfixes/rules.ts index 545eb000b48..6ebb8883086 100644 --- a/packages/jsts/src/linter/quickfixes/rules.ts +++ b/packages/jsts/src/linter/quickfixes/rules.ts @@ -80,7 +80,6 @@ export const quickFixRules = new Set([ 'hook-use-state', 'jsx-no-useless-fragment', 'no-unknown-property', - 'prefer-read-only-props', // @typescript-eslint plugin 'no-confusing-non-null-assertion', @@ -124,6 +123,7 @@ export const quickFixRules = new Set([ 'prefer-type-guard', 'sonar-no-dupe-keys', 'sonar-no-misleading-character-class', + 'sonar-prefer-read-only-props', 'sonar-prefer-regexp-exec', 'switch-without-default', 'unnecessary-character-escapes', diff --git a/packages/jsts/src/rules/S6759/cb.fixture.tsx b/packages/jsts/src/rules/S6759/cb.fixture.tsx new file mode 100644 index 00000000000..a966593cd0b --- /dev/null +++ b/packages/jsts/src/rules/S6759/cb.fixture.tsx @@ -0,0 +1,112 @@ +interface FooProps { + x: number; + y: string; +} + +function Foo(props: FooProps) { // Noncompliant [[qf1]] {{Mark the props of the component as read-only.}} +// ^^^^^^^^^^^^^^^ +// fix@qf1 {{Mark the props as read-only}} +// edit@qf1 [[sc=20;ec=28]] {{Readonly}} + return ( +
{props.x}
+ ); +} + +type BarProps = { + x: number; + y: string; +} + +function Bar(props: BarProps) { // Noncompliant + return ( +
{props.x}
+ ); +} + +interface BazProps { + x: number; + y: string; +} + +function Baz(props: Readonly) { // Compliant + return ( +
{props.x}
+ ); +} + +type QuxProps = { + readonly x: number; + readonly y: string; +} + +function Qux(props: QuxProps) { // Compliant + return ( +
{props.x}
+ ); +} + +interface QuuxProps { + readonly x: number; + readonly y: string; +} + +function Quux(props: QuuxProps) { // Compliant + return ( +
{props.x}
+ ); +} + +function Corge(props: { readonly x: number, readonly y: string }) { // Compliant + return ( +
{props.x}
+ ); +} + +function Grault(props: Readonly<{ x: number, y: string }>) { // Compliant + return ( +
{props.x}
+ ); +} + +function coverage() { + + (function () { + + }); + + function a() { + + } + + function B() { + + } + + function C() { + return; + } + + function D() { + return 42; + } + + function E() { + return
; + } + + function F(props) { + return
; + } + + function G(props: number) { + return
; + } + + function I(props: number, extra: string) { + return
; + } + + function J(props: UnknownProps) { + return
; + } +} diff --git a/packages/jsts/src/rules/S6759/cb.test.ts b/packages/jsts/src/rules/S6759/cb.test.ts new file mode 100644 index 00000000000..1977be1753a --- /dev/null +++ b/packages/jsts/src/rules/S6759/cb.test.ts @@ -0,0 +1,28 @@ +/* + * SonarQube JavaScript Plugin + * Copyright (C) 2011-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +import { check } from '../tools'; +import { rule } from './'; +import path from 'path'; + +const sonarId = path.basename(__dirname); + +describe(`Rule`, () => { + check(sonarId, rule, __dirname); +}); diff --git a/packages/jsts/src/rules/S6759/index.ts b/packages/jsts/src/rules/S6759/index.ts new file mode 100644 index 00000000000..13438fe7e69 --- /dev/null +++ b/packages/jsts/src/rules/S6759/index.ts @@ -0,0 +1,20 @@ +/* + * SonarQube JavaScript Plugin + * Copyright (C) 2011-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +export { rule } from './rule'; diff --git a/packages/jsts/src/rules/S6759/rule.ts b/packages/jsts/src/rules/S6759/rule.ts new file mode 100644 index 00000000000..615bbe51583 --- /dev/null +++ b/packages/jsts/src/rules/S6759/rule.ts @@ -0,0 +1,193 @@ +/* + * SonarQube JavaScript Plugin + * Copyright (C) 2011-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +// https://sonarsource.github.io/rspec/#/rspec/S6759/javascript + +import { Rule } from 'eslint'; +import { Function, Node, ReturnStatement } from 'estree'; +import { TSESTree } from '@typescript-eslint/experimental-utils'; +import { + RequiredParserServices, + getTypeFromTreeNode, + getUniqueWriteUsageOrNode, + isRequiredParserServices, + last, +} from '../helpers'; +import * as ts from 'typescript'; + +/** + * Stacks return statements per function. + */ +interface FunctionInfo { + returns: ReturnStatement[]; +} + +export const rule: Rule.RuleModule = { + meta: { + hasSuggestions: true, + messages: { + readOnlyProps: 'Mark the props of the component as read-only.', + readOnlyPropsFix: 'Mark the props as read-only', + }, + }, + create(context: Rule.RuleContext) { + const services = context.parserServices; + if (!isRequiredParserServices(services)) { + return {}; + } + const functionInfo: FunctionInfo[] = []; + return { + ':function'() { + functionInfo.push({ returns: [] }); + }, + ':function:exit'(node: Function) { + /* Functional component */ + const info = functionInfo.pop(); + if (!info || !isFunctionalComponent(node, info)) { + return; + } + + /* Provides props */ + const [props] = node.params; + if (!props) { + return; + } + + /* Includes type annotation */ + const { typeAnnotation } = props as TSESTree.Parameter & { + typeAnnotation?: TSESTree.TSTypeAnnotation; + }; + if (!typeAnnotation) { + return; + } + + /* Read-only props */ + if (!isReadOnly(props, services)) { + context.report({ + node: props, + messageId: 'readOnlyProps', + suggest: [ + { + messageId: 'readOnlyPropsFix', + fix(fixer) { + const tpe = typeAnnotation.typeAnnotation as unknown as Node; + const oldText = context.sourceCode.getText(tpe); + const newText = `Readonly<${oldText}>`; + return fixer.replaceText(tpe, newText); + }, + }, + ], + }); + } + }, + ReturnStatement(node: ReturnStatement) { + last(functionInfo).returns.push(node); + }, + }; + + /** + * A function is considered to be a React functional component if it is + * is a named function declaration with a starting uppercase letter, it + * takes at most one parameter, and it returns some JSX value. + */ + function isFunctionalComponent(node: Function, info: FunctionInfo) { + /* Named function declaration */ + if (node.type !== 'FunctionDeclaration' || node.id === null) { + return false; + } + + /* Starts with uppercase */ + const name = node.id.name; + if (!(name && /^[A-Z]/.test(name))) { + return false; + } + + /* At most one parameter (for props) */ + const paramCount = node.params.length; + if (paramCount > 1) { + return false; + } + + /* Returns JSX value */ + const { returns } = info; + for (const ret of returns) { + if (!ret.argument) { + continue; + } + + const value = getUniqueWriteUsageOrNode(context, ret.argument); + if (value.type.startsWith('JSX')) { + return true; + } + } + + return false; + } + + /** + * A props type is considered to be read-only if the type annotation + * is decorated with TypeScript utility type `Readonly` or if it refers + * to a pure type declaration, i.e. where all its members are read-only. + */ + function isReadOnly(props: Node, services: RequiredParserServices) { + const tpe = getTypeFromTreeNode(props, services); + + /* Readonly utility type */ + const { aliasSymbol } = tpe; + if (aliasSymbol?.escapedName === 'Readonly') { + return true; + } + + /* Resolve symbol definition */ + const symbol = tpe.getSymbol(); + if (!symbol?.declarations) { + /* Kill the noise */ + return true; + } + + /* Pure type declaration */ + const declarations = symbol.declarations; + for (const decl of declarations) { + if (ts.isInterfaceDeclaration(decl)) { + const node = services.tsNodeToESTreeNodeMap.get(decl); + if (node?.type === 'TSInterfaceDeclaration') { + const { + body: { body: members }, + } = node; + if (members.every(m => m.type === 'TSPropertySignature' && m.readonly)) { + return true; + } + } + } + + if (ts.isTypeLiteralNode(decl)) { + const node = services.tsNodeToESTreeNodeMap.get(decl); + if (node?.type === 'TSTypeLiteral') { + const { members } = node; + if (members.every(m => m.type === 'TSPropertySignature' && m.readonly)) { + return true; + } + } + } + } + + return false; + } + }, +}; diff --git a/packages/jsts/src/rules/index.ts b/packages/jsts/src/rules/index.ts index a58084f5b8b..f8ffcfd55b0 100644 --- a/packages/jsts/src/rules/index.ts +++ b/packages/jsts/src/rules/index.ts @@ -255,6 +255,7 @@ import { rule as S6326 } from './S6326'; // sonar-no-regex-spaces import { rule as S6441 } from './S6441'; // sonar-no-unused-class-component-methods import { rule as S1481 } from './S1481'; // sonar-no-unused-vars import { rule as S6582 } from './S6582'; // sonar-prefer-optional-chain +import { rule as S6759 } from './S6759'; // sonar-prefer-read-only-props import { rule as S6594 } from './S6594'; // sonar-prefer-regexp-exec import { rule as S2077 } from './S2077'; // sql-queries import { rule as S4829 } from './S4829'; // standard-input @@ -527,6 +528,7 @@ rules['sonar-no-regex-spaces'] = S6326; rules['sonar-no-unused-class-component-methods'] = S6441; rules['sonar-no-unused-vars'] = S1481; rules['sonar-prefer-optional-chain'] = S6582; +rules['sonar-prefer-read-only-props'] = S6759; rules['sonar-prefer-regexp-exec'] = S6594; rules['sql-queries'] = S2077; rules['standard-input'] = S4829; diff --git a/packages/jsts/tests/linter/fixtures/wrapper/quickfixes/sonar-prefer-read-only-props.tsx b/packages/jsts/tests/linter/fixtures/wrapper/quickfixes/sonar-prefer-read-only-props.tsx new file mode 100644 index 00000000000..ef88feadae6 --- /dev/null +++ b/packages/jsts/tests/linter/fixtures/wrapper/quickfixes/sonar-prefer-read-only-props.tsx @@ -0,0 +1,9 @@ +interface Props { + x: number; +} + +function Component(props: Props) { + return ( +
{props.x}
+ ); +} diff --git a/sonar-plugin/javascript-checks/src/main/java/org/sonar/javascript/checks/PreferReadOnlyPropsCheck.java b/sonar-plugin/javascript-checks/src/main/java/org/sonar/javascript/checks/PreferReadOnlyPropsCheck.java index 50e0a833c61..876b2e3aeb4 100644 --- a/sonar-plugin/javascript-checks/src/main/java/org/sonar/javascript/checks/PreferReadOnlyPropsCheck.java +++ b/sonar-plugin/javascript-checks/src/main/java/org/sonar/javascript/checks/PreferReadOnlyPropsCheck.java @@ -31,6 +31,6 @@ public class PreferReadOnlyPropsCheck implements EslintBasedCheck { @Override public String eslintKey() { - return "prefer-read-only-props"; + return "sonar-prefer-read-only-props"; } } diff --git a/sonar-plugin/javascript-checks/src/main/resources/org/sonar/l10n/javascript/rules/javascript/S6759.html b/sonar-plugin/javascript-checks/src/main/resources/org/sonar/l10n/javascript/rules/javascript/S6759.html index 93dae53f239..4c51ed20786 100644 --- a/sonar-plugin/javascript-checks/src/main/resources/org/sonar/l10n/javascript/rules/javascript/S6759.html +++ b/sonar-plugin/javascript-checks/src/main/resources/org/sonar/l10n/javascript/rules/javascript/S6759.html @@ -1,64 +1,46 @@

Why is this an issue?

-

React props should read-only because it helps enforce the principle of immutability in React components. By making props read-only, you ensure that -the data passed from a parent component to a child component cannot be modified directly by the child component. This helps maintain a clear data flow -and prevents unexpected side effects.

+

React props should be read-only because it helps to enforce the principle of immutability in React functional components. By making props +read-only, you ensure that the data passed from a parent component to a child component cannot be modified directly by the child component. This helps +maintain a clear data flow and prevents unexpected side effects.

If props were mutable, child components could modify the props directly, leading to unpredictable behavior and making it harder to track down bugs. By enforcing read-only props, React promotes a more predictable and maintainable codebase. Additionally, read-only props enable performance optimizations in React’s rendering process by avoiding unnecessary re-renders of components.

Overall, enforcing read-only props in React helps improve code reliability, maintainability, and performance.

-

How to fix it in Flow.js

-

You should use Flow.js’s modifier + to mark your component props as read-only.

-

Noncompliant code example

-type Props = {
-  name: string, // Noncompliant: 'name' is mutable
+interface Props {
+  name: string;
 }
-class Welcome extends React.Component<Props> {
-  render () {
-    return <div>Hello {this.props.name}</div>;
-  }
-}
-
-

Compliant solution

-
-type Props = {
-  +name: string,
-}
-class Welcome extends React.Component<Props> {
-  render () {
-    return <div>Hello {this.props.name}</div>;
-  }
+
+function Welcome(props: Props) {
+  return <div>Hello {this.props.name}</div>;
 }
 
-

How to fix it in TypeScript

-

You should use TypeScript’s modifier readonly to mark your component props as read-only.

-

Noncompliant code example

-
-type Props = {
-  name: string; // Noncompliant: 'name' is mutable
+

You should use TypeScript’s utility type Readonly to make your functional component props read-only.

+
+interface Props {
+  name: string;
 }
-class Welcome extends React.Component<Props> {
-  render () {
-    return <div>Hello {this.props.name}</div>;
-  }
+
+function Welcome(props: Readonly<Props>) {
+  return <div>Hello {this.props.name}</div>;
 }
 
-

Compliant solution

-
-type Props = {
+

Alternatively, you can use TypeScript’s modifier readonly to mark all the props of your functional component individually as +read-only.

+
+interface Props {
   readonly name: string;
 }
-class Welcome extends React.Component<Props> {
-  render () {
-    return <div>Hello {this.props.name}</div>;
-  }
+
+function Welcome(props: Props) {
+  return <div>Hello {this.props.name}</div>;
 }
 

Resources

Documentation