Skip to content

Latest commit

 

History

History
315 lines (190 loc) · 16.1 KB

CHANGELOG.md

File metadata and controls

315 lines (190 loc) · 16.1 KB

types-react-codemod

3.3.0

Minor Changes

  • Add react-element-default-any-props codemod (#371 4191845 by @eps1lon)

    Opt-in codemod in preset-19.

     // implies `React.ReactElement<unknown>` in React 19 as opposed to `React.ReactElement<any>` in prior versions.
    -declare const element: React.ReactElement
    +declare const element: React.ReactElement<any>

    Only meant to migrate old code not a recommendation for how to type React elements.

3.2.0

Minor Changes

  • Add no-implicit-ref-callback-return transform (#369 7535bfc by @eps1lon)

    Ensures you don't accidentally return anything from ref callbacks since the return value was always ignored. With ref cleanups, this is no longer the case and flagged in types to avoid mistakes.

    -<div ref={current => (instance = current)} />
    +<div ref={current => {instance = current}} />

    The transform is opt-in in the preset-19 in case you already used ref cleanups in Canary releases.

3.1.1

Patch Changes

3.1.0

Minor Changes

  • Add codemod to replace deprecated ReactFragment by inlining its actual type (#326 ed97a70 by @eps1lon)

    import * as React from 'react';
    
    -const node: React.ReactFragment
    +const node: Iterable<React.ReactNode>
  • Add codemod to replace deprecated React types related to propTypes with their counterpart from the prop-types package (#357 1751318 by @eps1lon)

    +import * as PropTypes from "prop-types";
     import * as React from "react";
    -declare const requireable: React.Requireable<React.ReactNode>;
    +declare const requireable: PropTypes.Requireable<React.ReactNode>;
    -declare const validator: React.Validator<React.ReactNode>;
    +declare const requireable: PropTypes.Validator<React.ReactNode>;
    -declare const validationMap: React.ValidationMap<{}>;
    +declare const requireable: PropTypes.ValidationMap<React.ReactNode>;
    -declare const weakValidationMap: React.WeakValidationMap<{}>;
    +declare const requireable: PropTypes.WeakValidationMap<React.ReactNode>;
  • Add codemod for required initial value in useRef (#217 0047404 by @eps1lon)

    Added as useRef-required-initial. Can be used on 18.x types but only intended for once DefinitelyTyped/DefinitelyTyped#64920 lands.

  • Unflag codemods for new refs (#319 80fe29c by @eps1lon)

    Just removing their experimental prefix since we have increased confidence in these changes after seeing their impact internally.

    -experimental-refobject-defaults
    +refobject-defaults
  • Add codemod to replace LegacyRef with Ref (#347 e928761 by @eps1lon)

  • Add codemod to replace deprecated ReactNodeArray by inlining its actual type. (#325 b7f757c by @eps1lon)

    import * as React from 'react';
    
    -const node: React.ReactNodeArray
    +const node: ReadonlyArray<React.ReactNode>

Patch Changes

  • Added missing transforms as choices to preset-19 (#341 dc10a3d by @eps1lon)

  • Ensure added imports of types use the type modifier (#343 f05624f by @eps1lon)

    If we'd previously add an import to JSX (e.g. in scoped-jsx), the codemod would import it as a value. This breaks TypeScript projects using verbatimModuleSyntax as well as projects enforcing type imports for types.

    Now we ensure new imports of types use the type modifier:

    -import { JSX } from 'react'
    +import { type JSX } from 'react'

    This also changes how we transform the deprecated global JSX namespace. Instead of rewriting each usage, we opt for adding another import. The guiding principle being that we keep the changes minimal in a codemod.

    Before:

    import * as React from 'react'
    
    -const element: JSX.Element
    +const element: React.JSX.Element

    After:

    import * as React from 'react'
    +import { type JSX } from 'react'
    
    const element: JSX.Element

    Note that rewriting of imports does not change the modifier. For example, the deprecated-vfc-codemod rewrites VFC identifiers to FC. If the import of VFC had no type modifier, the codemod will not add one.

    type modifiers for import specifiers require [TypeScript 4.5 which has reached EOL](https://github.com/DefinitelyTyped/DefinitelyTyped#support-window in DefinitelyTyped) which is a strong signal that you should upgrade to at least TypeScript 4.6 by now.

  • Ensure replace and rename codemods have consistent behavior (#348 a62832e by @eps1lon)

    Fixes multiple incorrect transform patterns that were supported by some transforms but not others. We no longer switch to type imports if the original type wasn't imported with that modifier. Type parameters are now consistently preserved. We don't add a reference to the React namespace anymore if we can just add a type import.

    This affects the following codemods:

    • deprecated-legacy-ref
    • deprecated-react-child
    • deprecated-react-text
    • deprecated-react-type
    • deprecated-sfc-element
    • deprecated-sfc
    • deprecated-stateless-component
    • deprecated-void-function-component
  • Find and replace type usage in type parameters of call expressions (#344 8c27551 by @eps1lon)

    Now we properly detect that e.g. JSX is used in someFunctionWithTypeParameters<JSX>().

    Affected codemods:

    • deprecated-react-child
    • deprecated-react-text
    • scoped-jsx

3.0.0

Major Changes

Minor Changes

2.1.0

Minor Changes

Patch Changes

2.0.1

Patch Changes

  • #210 a47bd09 Thanks @eps1lon! - Ensure jscodeshift can be executed

    Fixes /usr/bin/env: ‘node\r’: No such file or directory

2.0.0

Major Changes

  • #143 b3351d2 Thanks @eps1lon! - Fail install if used version of Node.js is not officially supported

    Add a list of supported versions of Node.js to engines in package.json. If the current version does not match, installation will fail (by default in Yarn and in NPM only if the engine-strict config is enabled).

    This warning can be ignored either by setting engine-strict to false in NPM (default) or add --ignore-engines to yarn (e.g. yarn --ignore-engines).

1.3.0

Minor Changes

1.2.1

Patch Changes

  • #69 52da899 Thanks @eps1lon! - Don't use import statement.

    Fixes errors like "SyntaxError: Cannot use import statement outside a module".

1.2.0

Minor Changes

  • #63 15ec796 Thanks @eps1lon! - Avoid transpiling transforms

    Previously jscodeshift would transpile the transforms before using them. This was largely unnecessary and resulted in bugs to to usage of undeclared Babel dependencies.

1.1.0

Minor Changes

  • #52 d3660ef Thanks @eps1lon! - Add deprecated-void-function-component transform.

    Part of preset-19.

Patch Changes

  • #51 d5aa8f3 Thanks @eps1lon! - Display version from package.json instead of hardcoded one.

1.0.2

Patch Changes

1.0.1

Patch Changes

  • #33 59e5624 Thanks @eps1lon! - Remove repository config files from release.

    These files are only relevant for development.

  • #40 e425cc9 Thanks @eps1lon! - Remove test files from release.

    There's a charm to having these in the release but nobody reads them anyway. And for testing you need the dev setup which is probably not available if inside node_modules.

1.0.0

Major Changes

  • #22 18339c2 Thanks @eps1lon! - Release 1.0.0

    Includes no breaking changes. Just marking this release as mature by not using the 0.x range.

0.1.0

Minor Changes

Patch Changes