Releases: nchevsky/bitumen
Releases · nchevsky/bitumen
v3.1.0: Adjust peer dependencies; convert Babel configuration to ESM
🌎 External changes
- Add optional peer dependencies
@vitest/coverage-istanbul
,core-js
, andvitest
. - Mark as optional formerly required peer dependencies
@babel/core
,@babel/plugin-syntax-import-attributes
,@babel/preset-env
, and@babel/preset-typescript
. - Drop orphaned peer dependency
@babel/eslint-parser
.
🏠 Internal changes
- Convert Babel configuration from CommonJS to ESM and delete the internal proxy file in favor of
babel.extends
inpackage.json
. - Upgrade dependencies.
v3.0.0: Add Vitest configuration; drop Jest; update lint rules, dependencies
⚠️ BREAKING CHANGES
- Bump minimum versions of peer dependencies:
@typescript-eslint/eslint-plugin
: 7.2 → 7.16eslint-import-resolver-typescript
: 3.6.1 → 3.6.2eslint-plugin-i
→eslint-plugin-import-x
: 2.29.1 → 4.2.1eslint-plugin-react
: None → 7.35 (optional)eslint-plugin-react-hooks
: None → any (optional)typescript
: 5.2 → 5.5
configuration
:babel
: Remove Jest hacks (stripping file extensions from imports and transpiling ESM → CommonJS).eslint
:- Drop resolver
eslint-import-resolver-babel-module
. - Migrate
import/*
rules toimport-x/*
.
- Drop resolver
javascript
: Remove in favor oftypescript
superset.
types
:- Remove support for
jest.MockedFunction
from utility typeReplaceReturnType
.
- Remove support for
🌎 External changes
collections
SortedSet
: Implement new ES6 methodsdifference()
,intersection()
,isDisjointFrom()
,isSubsetOf()
,isSupersetOf()
,symmetricDifference()
, andunion()
.
configuration
:- Add
vitest
export with Vitest configuration. eslint
:- Enable
@typescript-eslint
rules:…/no-empty-object-type
,…/no-unnecessary-parameter-property-assignment
,…/no-unnecessary-type-parameters
,…/no-unsafe-function-type
,…/no-wrapper-object-types
, and…/use-unknown-in-catch-callback-variable
.
- Remove
no-new
rule exemption for tests.
- Enable
eslint-react
:- Enable rules
react/jsx-closing-tag-location
(with optionline-aligned
) andreact/jsx-props-no-spread-multi
. - Remove
react/forbid-foreign-prop-types
rule exemption for mocks and tests.
- Enable rules
typescript
: Change optioninclude
to '${configDir}/src' (from '/src'), eliminating the need to locally override the path in every downstream project.
- Add
utils
:- Deprecate
ExternallyControlledPromise
in favor of ES2024's newPromise.withResolvers()
.
- Deprecate
🏠 Internal changes
- Abandon Jest in favor of Vitest.
- Add to
devDependencies
packages that were previously only declared aspeerDependencies
. - Upgrade dependencies.
v2.3.0: Improve `utils/clone()`; add lint rules; relax TS peer dependency
⚠️ POTENTIALLY DISRUPTIVE CHANGES
- Enable lint rules
@typescript-eslint/prefer-find
,@typescript-eslint/prefer-string-starts-ends-with
,react/checked-requires-onchange-or-readonly
.
🌎 External changes
- Improve
utils/clone()
by:- allowing property descriptors to change the types of existing properties, and
- enhancing the return type to include new properties and reflect changes to existing properties.
- Relax
typescript
peer dependency semver to >= 5.2.
🏠 Internal changes
- Upgrade dependencies.
v2.2.0: Enhance `SortedSet` with support for number and string elements
⚠️ POTENTIALLY DISRUPTIVE CHANGES
- Upgrade
@typescript-eslint/eslint-plugin
from v6.18.0 to v6.19.1, which enables new lint rules in configurationstrict-type-checked
:@typescript-eslint/no-array-delete
@typescript-eslint/prefer-promise-reject-errors
🌎 External changes
- Enhance
SortedSet
to natively supportnumber
andstring
elements without having to wrap them inComparable
objects.
🏠 Internal changes
- Improve unit tests for
utils/ExternallyControlledPromise
.
🧹 Chores
- Upgrade dependencies.
v2.1.0: Adjust lint rules, Babel configuration; upgrade dependencies
⚠️ POTENTIALLY DISRUPTIVE CHANGES
- Turn on lint rules
@typescript-eslint/no-unsafe-unary-minus
and@typescript-eslint/switch-exhaustiveness-check
. - Enable compiler option
noUncheckedIndexedAccess
in TypeScript and JavaScript configurations.
🌎 External changes
- Drop Babel plugin
replace-import-extension
in non-Jest environments now that@babel/preset-typescript
'srewriteImportExtensions
option handles.tsx
extensions.
🧹 Chores
- Upgrade dependencies.
v2.0.0: Upgrade to TypeScript 5.2, `typescript-eslint` v6; improve types
⚠️ BREAKING CHANGES
- Upgrade to TypeScript 5.2, make it an optional peer dependency, and adjust configuration:
allowJs
: off → oncheckJs
: off → onemitDeclarationOnly
: off → onmodule
: "ESNext" → "NodeNext"moduleResolution
: "NodeNext" → 🗑️strictNullChecks
: off → on
- Upgrade peer dependency
typescript-eslint
to v6 and base the rule set on new presetsstrict-type-checked
andstylistic-type-checked
, with the following net changes:- Added:
…/adjacent-overload-signatures
,…/await-thenable
,…/ban-ts-comment
,…/ban-types
,…/no-array-constructor
,…/no-confusing-void-expression
,…/no-extra-non-null-assertion
,…/no-floating-promises
,…/no-for-in-array
,…/no-implied-eval
,…/no-misused-new
,…/no-misused-promises
,…/no-namespace
,…/no-non-null-asserted-optional-chain
,…/no-object-constructor
,…/no-redundant-type-constituents
,…/no-this-alias
,…/no-unnecessary-type-assertion
,…/no-unnecessary-type-constraint
,…/no-unsafe-argument
,…/no-unsafe-assignment
,…/no-unsafe-call
,…/no-unsafe-member-access
,…/no-unsafe-return
,…/no-useless-empty-export
,…/no-var-requires
,…/parameter-properties
,…/prefer-as-const
,…/require-await
,…/restrict-plus-operands
,…/restrict-template-expressions
,…/triple-slash-reference
,…/unbound-method
. - Removed:
…/no-duplicate-imports
(deprecated),…/no-new-object
(deprecated).
- Added:
- Rename type
Constructor
toAbstractConstructor
and reintroduceConstructor
as non-abstract.
🌎 External changes
- Turn on TypeScript option
allowImportingTsExtensions
along with@babel/preset-typescript
optionrewriteImportExtensions
, enabling the use of TypeScript file extensions in imports and exports. - Change
typescript-eslint
optionparserOptions.project
totrue
(from "./tsconfig.json") for improved monorepo support. - Implement Rollup support for array exports in
package.json
. - Add real typings to Babel, ESLint, and Rollup configurations.
🏠 Internal changes
- Change all TypeScript exports and imports to
.ts
file extensions.
🧹 Chores
- Upgrade dependencies.
- Clean lint.
v1.2.0: Add `clone()`, `nestInto()`; adjust lint rules
🌎 External changes
- Introduce new utility functions:
clone()
: Duplicates a given object based on its prototype, optionally injecting new and/or modifying existing properties while preserving getters, setters, and other special members.nestInto()
: Nests a given series of keys into an object.
- Adjust lint rules:
- Drop exemption of Jest mocks from
import/export
. - Drop exemption of TypeScript from
react/jsx-props-no-spreading
. - Turn off
react/jsx-props-no-spreading
.
- Drop exemption of Jest mocks from
🧹 Chores
- Upgrade dependencies.
v1.1.0: Adjust lint rules; upgrade to TypeScript 5.1
🌎 External changes
- Exempt Jest mocks and tests from lint rules
react/forbid-foreign-prop-types
,react/jsx-props-no-spreading
. - Exempt Jest mocks from lint rules
import/export
,import/prefer-default-export
. - Exempt CommonJS Jest mocks from lint rule
import/no-unused-modules
, as it only supports ESM. - Relax lint rule
react/no-unstable-nested-components
by adding exceptionallowAsProps
. - Fix globs for Jest lint rules to include files in subdirectories of
__mocks__
and__tests__
. - Narrow the return type of guard
isObject()
to be non-nullable. - Upgrade to TypeScript 5.1.
🏠 Internal changes
- Implement minimum unit test coverage thresholds.
🧹 Chores
- Upgrade dependencies.
v1.0.0: Add JS/TS configuration exports; switch Babel plugins
⚠️ BREAKING CHANGES (if using lint rules)
- Transition from deprecated
@babel/plugin-syntax-import-assertions
to the new@babel/plugin-syntax-import-attributes
and enable optiondeprecatedAssertSyntax
for backward compatibility with import assertions. Since this is a peer dependency, consumers must switch plugins to match.
🌎 External changes
- Export JavaScript configuration as
configuration/javascript
. - Export TypeScript configuration as
configuration/typescript
now that microsoft/TypeScript#48665 has been fixed. - Update README with instructions on how to consume Babel, ESLint, JavaScript, rollup.js, and TypeScript configurations.
🏠 Internal changes
- Clean up
package.json
scripts and removeengines
field.
🧹 Chores
- Upgrade dependencies.
v0.11.0: Add types `ExcludeFromReturnType`, `ReplaceReturnType`; adjust lint rules
🌎 External changes
- Add utility types
ExcludeFromReturnType
,ReplaceReturnType
to facilitate the manipulation of functions' return types. - Relax lint rule
react/jsx-no-bind
to allow allow function declarations.