From 7dad1b13e4d64e09ced1f41b543e8b292490ce12 Mon Sep 17 00:00:00 2001 From: Alexandre Philibeaux Date: Fri, 1 Apr 2022 12:37:55 +0000 Subject: [PATCH 1/4] feat(react): new automatic runtime --- .eslintrc | 4 +++- babel.config.json | 7 ++++++- packages/jest-helpers/.eslintrc.cjs | 12 ++++++++++++ packages/jest-helpers/src/__tests__/index.test.tsx | 1 - .../jest-helpers/src/helpers/renderWithTheme.tsx | 2 +- packages/use-dataloader/.eslintrc.cjs | 4 +++- packages/use-dataloader/src/DataLoaderProvider.tsx | 2 +- .../src/__tests__/DataLoaderProvider.test.tsx | 2 +- .../src/__tests__/useDataLoader.test.tsx | 1 - .../src/__tests__/usePaginatedDataLoader.test.tsx | 1 - packages/use-i18n/.eslintrc.cjs | 4 +++- packages/use-i18n/src/__tests__/usei18n.tsx | 1 - packages/use-i18n/src/usei18n.tsx | 2 +- packages/use-query-params/.eslintrc.cjs | 4 +++- packages/use-query-params/src/__tests__/index.tsx | 2 +- packages/use-segment/.eslintrc.cjs | 2 ++ packages/use-segment/src/__tests__/index.tsx | 2 +- packages/use-segment/src/useSegment.tsx | 2 +- rollup.config.mjs | 6 ++++++ 19 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 packages/jest-helpers/.eslintrc.cjs diff --git a/.eslintrc b/.eslintrc index f8cbfaffb..4579b5397 100644 --- a/.eslintrc +++ b/.eslintrc @@ -12,7 +12,9 @@ { "devDependencies": ["**/__tests__/*", "rollup.config.mjs"] } - ] + ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" }, "overrides": [ { diff --git a/babel.config.json b/babel.config.json index 35c8aec47..cfe4d11af 100644 --- a/babel.config.json +++ b/babel.config.json @@ -1,7 +1,12 @@ { "presets": [ "@babel/preset-env", - "@babel/preset-react", + [ + "@babel/preset-react", + { + "runtime": "automatic" + } + ], ["@babel/preset-typescript", { "allowDeclareFields": true }] ], "plugins": ["@babel/plugin-transform-runtime"] diff --git a/packages/jest-helpers/.eslintrc.cjs b/packages/jest-helpers/.eslintrc.cjs new file mode 100644 index 000000000..c27f600c0 --- /dev/null +++ b/packages/jest-helpers/.eslintrc.cjs @@ -0,0 +1,12 @@ +const { join } = require('path') + +module.exports = { + rules: { + 'import/no-extraneous-dependencies': [ + 'error', + { packageDir: [__dirname, join(__dirname, '../../')] }, + ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" + }, +} diff --git a/packages/jest-helpers/src/__tests__/index.test.tsx b/packages/jest-helpers/src/__tests__/index.test.tsx index 208b5a6e8..a474aad7c 100644 --- a/packages/jest-helpers/src/__tests__/index.test.tsx +++ b/packages/jest-helpers/src/__tests__/index.test.tsx @@ -1,4 +1,3 @@ -import React from 'react' import makeHelpers from '..' import { RenderWithThemeFn } from '../helpers/renderWithTheme' import { ShouldMatchEmotionSnapshotFn } from '../helpers/shouldMatchEmotionSnapshot' diff --git a/packages/jest-helpers/src/helpers/renderWithTheme.tsx b/packages/jest-helpers/src/helpers/renderWithTheme.tsx index 62d8b8a36..59ccdf785 100644 --- a/packages/jest-helpers/src/helpers/renderWithTheme.tsx +++ b/packages/jest-helpers/src/helpers/renderWithTheme.tsx @@ -1,7 +1,7 @@ import createCache from '@emotion/cache' import { CacheProvider } from '@emotion/react' import { RenderOptions, render } from '@testing-library/react' -import React, { FC, ReactNode } from 'react' +import { FC, ReactNode } from 'react' const emotionCache = createCache({ key: 'cache', diff --git a/packages/use-dataloader/.eslintrc.cjs b/packages/use-dataloader/.eslintrc.cjs index f4bd0a419..365c5d90d 100644 --- a/packages/use-dataloader/.eslintrc.cjs +++ b/packages/use-dataloader/.eslintrc.cjs @@ -5,6 +5,8 @@ module.exports = { 'import/no-extraneous-dependencies': [ 'error', { packageDir: [__dirname, join(__dirname, '../../')] } - ] + ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-dataloader/src/DataLoaderProvider.tsx b/packages/use-dataloader/src/DataLoaderProvider.tsx index 1d8c35b16..c63352b39 100644 --- a/packages/use-dataloader/src/DataLoaderProvider.tsx +++ b/packages/use-dataloader/src/DataLoaderProvider.tsx @@ -1,5 +1,5 @@ import PropTypes from 'prop-types' -import React, { +import { ReactElement, ReactNode, createContext, diff --git a/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx b/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx index 42b0b8c99..536a18e3d 100644 --- a/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx +++ b/packages/use-dataloader/src/__tests__/DataLoaderProvider.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react' import { act, renderHook } from '@testing-library/react-hooks' -import React, { ReactNode } from 'react' +import { ReactNode } from 'react' import DataLoaderProvider, { useDataLoaderContext } from '../DataLoaderProvider' import { KEY_IS_NOT_STRING_ERROR, StatusEnum } from '../constants' diff --git a/packages/use-dataloader/src/__tests__/useDataLoader.test.tsx b/packages/use-dataloader/src/__tests__/useDataLoader.test.tsx index abc9bdc6e..48c40c4f5 100644 --- a/packages/use-dataloader/src/__tests__/useDataLoader.test.tsx +++ b/packages/use-dataloader/src/__tests__/useDataLoader.test.tsx @@ -1,5 +1,4 @@ import { act, renderHook } from '@testing-library/react-hooks' -import React from 'react' import DataLoaderProvider, { useDataLoaderContext } from '../DataLoaderProvider' import { KEY_IS_NOT_STRING_ERROR } from '../constants' import { PromiseType, UseDataLoaderConfig, UseDataLoaderResult } from '../types' diff --git a/packages/use-dataloader/src/__tests__/usePaginatedDataLoader.test.tsx b/packages/use-dataloader/src/__tests__/usePaginatedDataLoader.test.tsx index 7d37f432b..f8a559dcb 100644 --- a/packages/use-dataloader/src/__tests__/usePaginatedDataLoader.test.tsx +++ b/packages/use-dataloader/src/__tests__/usePaginatedDataLoader.test.tsx @@ -1,6 +1,5 @@ import { act } from '@testing-library/react' import { renderHook } from '@testing-library/react-hooks' -import React from 'react' import DataLoaderProvider from '../DataLoaderProvider' import { KEY_IS_NOT_STRING_ERROR } from '../constants' import { diff --git a/packages/use-i18n/.eslintrc.cjs b/packages/use-i18n/.eslintrc.cjs index f4bd0a419..365c5d90d 100644 --- a/packages/use-i18n/.eslintrc.cjs +++ b/packages/use-i18n/.eslintrc.cjs @@ -5,6 +5,8 @@ module.exports = { 'import/no-extraneous-dependencies': [ 'error', { packageDir: [__dirname, join(__dirname, '../../')] } - ] + ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-i18n/src/__tests__/usei18n.tsx b/packages/use-i18n/src/__tests__/usei18n.tsx index 0f03b45b7..211b49774 100644 --- a/packages/use-i18n/src/__tests__/usei18n.tsx +++ b/packages/use-i18n/src/__tests__/usei18n.tsx @@ -1,6 +1,5 @@ import { act, renderHook } from '@testing-library/react-hooks' import mockdate from 'mockdate' -import React from 'react' import I18n, { useI18n, useTranslation } from '..' import en from './locales/en.json' import es from './locales/es.json' diff --git a/packages/use-i18n/src/usei18n.tsx b/packages/use-i18n/src/usei18n.tsx index 3b6a1f273..df98d0904 100644 --- a/packages/use-i18n/src/usei18n.tsx +++ b/packages/use-i18n/src/usei18n.tsx @@ -5,7 +5,7 @@ import { formatDistanceToNowStrict, } from 'date-fns' import PropTypes from 'prop-types' -import React, { +import { ReactElement, ReactNode, createContext, diff --git a/packages/use-query-params/.eslintrc.cjs b/packages/use-query-params/.eslintrc.cjs index f4bd0a419..365c5d90d 100644 --- a/packages/use-query-params/.eslintrc.cjs +++ b/packages/use-query-params/.eslintrc.cjs @@ -5,6 +5,8 @@ module.exports = { 'import/no-extraneous-dependencies': [ 'error', { packageDir: [__dirname, join(__dirname, '../../')] } - ] + ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-query-params/src/__tests__/index.tsx b/packages/use-query-params/src/__tests__/index.tsx index 12f5448d0..17a362555 100644 --- a/packages/use-query-params/src/__tests__/index.tsx +++ b/packages/use-query-params/src/__tests__/index.tsx @@ -1,6 +1,6 @@ import { act, renderHook } from '@testing-library/react-hooks' import { History, createMemoryHistory } from 'history' -import React, { ReactNode, useLayoutEffect, useState } from 'react' +import { ReactNode, useLayoutEffect, useState } from 'react' import { MemoryRouter, Router } from 'react-router-dom' import useQueryParams from '..' diff --git a/packages/use-segment/.eslintrc.cjs b/packages/use-segment/.eslintrc.cjs index a2dbbe3d7..c27f600c0 100644 --- a/packages/use-segment/.eslintrc.cjs +++ b/packages/use-segment/.eslintrc.cjs @@ -6,5 +6,7 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] }, ], + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" }, } diff --git a/packages/use-segment/src/__tests__/index.tsx b/packages/use-segment/src/__tests__/index.tsx index 537958ae1..e0df34f32 100644 --- a/packages/use-segment/src/__tests__/index.tsx +++ b/packages/use-segment/src/__tests__/index.tsx @@ -1,6 +1,6 @@ import { AnalyticsBrowser, Context } from '@segment/analytics-next' import { renderHook } from '@testing-library/react-hooks' -import React, { ReactNode } from 'react' +import { ReactNode } from 'react' import waitForExpect from 'wait-for-expect' import SegmentProvider, { useSegment } from '..' import type { Analytics, OnEventError, SegmentProviderProps } from '..' diff --git a/packages/use-segment/src/useSegment.tsx b/packages/use-segment/src/useSegment.tsx index c33362434..639117b26 100644 --- a/packages/use-segment/src/useSegment.tsx +++ b/packages/use-segment/src/useSegment.tsx @@ -4,7 +4,7 @@ import type { AnalyticsSettings, InitOptions, } from '@segment/analytics-next' -import React, { +import { ReactNode, createContext, useContext, diff --git a/rollup.config.mjs b/rollup.config.mjs index f2eab7cca..945bf054d 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -44,6 +44,12 @@ const getConfig = (pkg, isBrowser = false) => { presets: [ ['@babel/env', { modules: false, targets }], '@babel/preset-typescript', + [ + '@babel/preset-react', + { + runtime: 'automatic', + }, + ], ], }), nodeResolve({ From 981033a8d28fc4ca5770e3e8834b169735bde4ac Mon Sep 17 00:00:00 2001 From: Emmanuel Chambon Date: Tue, 5 Apr 2022 14:06:41 +0200 Subject: [PATCH 2/4] fix: remove useless plugin --- rollup.config.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index 945bf054d..bc7dba4ed 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -39,7 +39,6 @@ const getConfig = (pkg, isBrowser = false) => { extensions: ['.js', '.jsx', '.ts', '.tsx', '.es', '.mjs'], plugins: [ '@babel/plugin-transform-runtime', - '@babel/plugin-transform-react-jsx', ], presets: [ ['@babel/env', { modules: false, targets }], From c7700a9788ebb9de6fa74aef2f1138592d1551a1 Mon Sep 17 00:00:00 2001 From: Emmanuel Chambon Date: Tue, 5 Apr 2022 15:51:56 +0200 Subject: [PATCH 3/4] fix: remove eslint override --- .eslintrc | 6 +++++- packages/jest-helpers/.eslintrc.cjs | 2 -- packages/use-dataloader/.eslintrc.cjs | 2 -- packages/use-i18n/.eslintrc.cjs | 2 -- packages/use-query-params/.eslintrc.cjs | 2 -- packages/use-segment/.eslintrc.cjs | 2 -- 6 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.eslintrc b/.eslintrc index 4579b5397..b91cdefad 100644 --- a/.eslintrc +++ b/.eslintrc @@ -22,7 +22,11 @@ "parserOptions": { "project": ["tsconfig.json"] }, - "extends": ["./packages/eslint-config-react/typescript.js"] + "extends": ["./packages/eslint-config-react/typescript.js"], + "rules": { + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" + } } ] } diff --git a/packages/jest-helpers/.eslintrc.cjs b/packages/jest-helpers/.eslintrc.cjs index c27f600c0..a2dbbe3d7 100644 --- a/packages/jest-helpers/.eslintrc.cjs +++ b/packages/jest-helpers/.eslintrc.cjs @@ -6,7 +6,5 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] }, ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off" }, } diff --git a/packages/use-dataloader/.eslintrc.cjs b/packages/use-dataloader/.eslintrc.cjs index 365c5d90d..8e30513c1 100644 --- a/packages/use-dataloader/.eslintrc.cjs +++ b/packages/use-dataloader/.eslintrc.cjs @@ -6,7 +6,5 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] } ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-i18n/.eslintrc.cjs b/packages/use-i18n/.eslintrc.cjs index 365c5d90d..8e30513c1 100644 --- a/packages/use-i18n/.eslintrc.cjs +++ b/packages/use-i18n/.eslintrc.cjs @@ -6,7 +6,5 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] } ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-query-params/.eslintrc.cjs b/packages/use-query-params/.eslintrc.cjs index 365c5d90d..8e30513c1 100644 --- a/packages/use-query-params/.eslintrc.cjs +++ b/packages/use-query-params/.eslintrc.cjs @@ -6,7 +6,5 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] } ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", } }; diff --git a/packages/use-segment/.eslintrc.cjs b/packages/use-segment/.eslintrc.cjs index c27f600c0..a2dbbe3d7 100644 --- a/packages/use-segment/.eslintrc.cjs +++ b/packages/use-segment/.eslintrc.cjs @@ -6,7 +6,5 @@ module.exports = { 'error', { packageDir: [__dirname, join(__dirname, '../../')] }, ], - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off" }, } From 2375b05dd7ba0bebd26e4b009d7a3a2c7af4e9e9 Mon Sep 17 00:00:00 2001 From: Emmanuel Chambon Date: Tue, 5 Apr 2022 15:53:04 +0200 Subject: [PATCH 4/4] fix: remove file --- packages/jest-helpers/.eslintrc.cjs | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 packages/jest-helpers/.eslintrc.cjs diff --git a/packages/jest-helpers/.eslintrc.cjs b/packages/jest-helpers/.eslintrc.cjs deleted file mode 100644 index a2dbbe3d7..000000000 --- a/packages/jest-helpers/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -const { join } = require('path') - -module.exports = { - rules: { - 'import/no-extraneous-dependencies': [ - 'error', - { packageDir: [__dirname, join(__dirname, '../../')] }, - ], - }, -}