Releases: nchevsky/bitumen
Releases · nchevsky/bitumen
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.
v0.10.0: Add `utils/ExternallyControlledPromise`; upgrade dependencies
🌎 External changes
- Add
utils/ExternallyControlledPromise
, aPromise
implementation that can be externally resolved or rejected on demand.
🏠 Internal changes
- Exempt Jest tests, mocks from lint rule
react/prop-types
. - Relax lint rule 'import/no-deprecated' to warn rather than error.
- Add unit tests for
utils/ifEmpty()
.
🧹 Chores
- Upgrade dependencies.
v0.9.0: Add `utils` export; adjust lint rules; upgrade dependencies
🌎 External changes
- Publish new export
utils
and utility functionifEmpty()
. - Adjust lint rules:
- Turn off rule
import/no-cycle
due to cost and false positives. - Adjust rule
import/no-unused-modules
for Jest mocks to (a) no longer report unreferenced exports and (b) report missing exports. - Relax rule
max-statements-per-line
with an increased maximum of two across the board. Previously, the maximum was two for Jest mocks and tests, and one for everything else. - Exempt JSX files from rule
multiline-ternary
as it clashes withreact/jsx-indent
, which in turn clashes withindent
. - Turn off rule
react/jsx-props-no-spreading
for TypeScript files, where prop spreading is safe.
- Turn off rule
- Implement new lint rules:
@typescript-eslint/consistent-type-exports
@typescript-eslint/consistent-type-imports
@typescript-eslint/no-duplicate-type-constituents
@typescript-eslint/no-import-type-side-effects
@typescript-eslint/promise-function-async
🧹 Chores
- Enable strict null checks for JavaScript.
- Upgrade dependencies.