Skip to content

Releases: nchevsky/bitumen

v2.3.0: Improve `utils/clone()`; add lint rules; relax TS peer dependency

14 Mar 22:52
Compare
Choose a tag to compare

⚠️ 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

26 Jan 02:35
Compare
Choose a tag to compare

⚠️ POTENTIALLY DISRUPTIVE CHANGES

  • Upgrade @typescript-eslint/eslint-plugin from v6.18.0 to v6.19.1, which enables new lint rules in configuration strict-type-checked:
    • @typescript-eslint/no-array-delete
    • @typescript-eslint/prefer-promise-reject-errors

🌎 External changes

  • Enhance SortedSet to natively support number and string elements without having to wrap them in Comparable objects.

🏠 Internal changes

  • Improve unit tests for utils/ExternallyControlledPromise.

🧹 Chores

  • Upgrade dependencies.

v2.1.0: Adjust lint rules, Babel configuration; upgrade dependencies

08 Jan 18:03
Compare
Choose a tag to compare

⚠️ 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's rewriteImportExtensions option handles .tsx extensions.

🧹 Chores

  • Upgrade dependencies.

v2.0.0: Upgrade to TypeScript 5.2, `typescript-eslint` v6; improve types

03 Oct 17:12
Compare
Choose a tag to compare

⚠️ BREAKING CHANGES

  • Upgrade to TypeScript 5.2, make it an optional peer dependency, and adjust configuration:
    • allowJs: off → on
    • checkJs: off → on
    • emitDeclarationOnly: off → on
    • module: "ESNext" → "NodeNext"
    • moduleResolution: "NodeNext" → 🗑️
    • strictNullChecks: off → on
  • Upgrade peer dependency typescript-eslint to v6 and base the rule set on new presets strict-type-checked and stylistic-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).
  • Rename type Constructor to AbstractConstructor and reintroduce Constructor as non-abstract.

🌎 External changes

  • Turn on TypeScript option allowImportingTsExtensions along with @babel/preset-typescript option rewriteImportExtensions, enabling the use of TypeScript file extensions in imports and exports.
  • Change typescript-eslint option parserOptions.project to true (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

09 Aug 21:44
Compare
Choose a tag to compare

🌎 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.

🧹 Chores

  • Upgrade dependencies.

v1.1.0: Adjust lint rules; upgrade to TypeScript 5.1

12 Jul 23:36
Compare
Choose a tag to compare

🌎 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 exception allowAsProps.
  • 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

12 Jun 16:12
Compare
Choose a tag to compare

⚠️ BREAKING CHANGES (if using lint rules)

  • Transition from deprecated @babel/plugin-syntax-import-assertions to the new @babel/plugin-syntax-import-attributes and enable option deprecatedAssertSyntax 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 remove engines field.

🧹 Chores

  • Upgrade dependencies.

v0.11.0: Add types `ExcludeFromReturnType`, `ReplaceReturnType`; adjust lint rules

05 Jun 14:31
Compare
Choose a tag to compare

🌎 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

28 May 20:51
Compare
Choose a tag to compare

🌎 External changes

  • Add utils/ExternallyControlledPromise, a Promise 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

09 May 22:47
Compare
Choose a tag to compare

🌎 External changes

  • Publish new export utils and utility function ifEmpty().
  • 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 with react/jsx-indent, which in turn clashes with indent.
    • Turn off rule react/jsx-props-no-spreading for TypeScript files, where prop spreading is safe.
  • 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.