Skip to content

Release 4.4.39 — dependency bumps, linting config changes, and CI/workflow adjustments

Choose a tag to compare

released this 02 Oct 17:23
· 42 commits to working since this release

This release finalizes the 4.4.39 cycle and collects several dependency updates, testing/tooling configuration changes, and CI/publishing workflow simplifications. The most user-visible effects are updated runtime/dev dependencies, removal of a previously-applied test-scoped ESLint override (and matching inline disables in tests), and removal of the local precommit lifecycle script and a separate CI build job. These changes affect linting and local pre-publish checks; they may require follow-up when running local lint/test workflows or CI.

Summary of intent and impact

  • Version bump to mark 4.4.39 as a release: package.json version set from 4.4.39-dev.0 → 4.4.39. This is a release metadata change only; no source behavior changes are included in the version bump commit itself.
  • Dependency updates: runtime and dev dependencies for @fjell/logging and @fjell/eslint-config were advanced and lockfile entries updated to match. These are dependency upgrades — expect bugfixes or minor behavioral changes from those packages but no direct source code changes in this package beyond package.json and lockfile edits.
  • Lint and test configuration changes that may affect local development and CI: the project removed a test-scoped ESLint override and stripped inline file-level ESLint disables from many test files, and the precommit lifecycle script was deleted. CI workflow changes removed a separate build job and consolidated publishing steps. Because of these changes, lint or test failures previously suppressed may now surface.

Affected files (high level)

  • package.json — version bump, dependency version ranges updated, removal of precommit script, small formatting/EOF tidy
  • package-lock.json — updated lockfile entries for @fjell/logging and @fjell/eslint-config
  • eslint.config.mjs — replaced the previous library configuration and test override with an empty export
  • tests/api/*.test.ts — inline /* eslint-disable no-undefined */ comments removed across multiple test files
  • .github/workflows/npm-publish.yml — build job removed and the publish job simplified
  • vitest / test setup and config (earlier commits referenced) — test setup moved to tests/setup.ts and simpler vitest configuration

New Features

(No new runtime features were added in this release. The changes are focused on dependencies, lint/test configuration, and CI/publishing workflows.)

Improvements

  • Dependency bumps

    • Updated runtime dependency @fjell/logging from earlier ranges to ^4.4.47 in this release series; package-lock entries were updated to match resolved versions. These updates capture fixes/compatibility improvements in logging used by the project.
    • Updated devDependency @fjell/eslint-config from previous ranges to ^1.1.25 and updated lockfile resolved entries accordingly.
    • Why it matters: keeps the project aligned with upstream bugfixes and lint rule updates.
  • Test configuration simplification (prior commits that are part of this release)

    • Moved Vitest setup into tests/setup.ts (fetch mock setup consolidated into a single setup file).
    • Simplified vitest.config.ts by enabling globals and removing custom alias/dirname handling, per-metric coverage thresholds, and some timeout/coverage complexity.
    • Why it matters: test configuration is simpler and easier to maintain; fewer bespoke config paths and thresholds to reason about.
  • Packaging / metadata tidies

    • Ensured consistent EOF newlines and adjusted type and package exports in earlier related commits.
    • Why it matters: avoids minor tooling warnings and aligns package metadata with module expectations.

Bug fixes

  • No source-code bugfixes were introduced in this release. The changes are configuration, dependency, and workflow related.

Breaking changes / Behavior changes to watch for

  • ESLint configuration change (eslint.config.mjs)

    • The exported ESLint configuration was replaced with an empty array (export default []). This removes the prior use of ...libraryConfig and the test-scoped override that set "no-undefined": "off" for tests.
    • Files affected: eslint.config.mjs
    • Impact: the rule no-undefined will now apply to test files unless a configuration or inline disable is restored. Several test files had their inline file-level disable comments removed in this release (see below). As a result, running the linter or CI checks may now report new lint violations from tests that previously suppressed this rule.
    • Recommended action: restore a proper eslint configuration that includes the shared library config and an explicit test override if tests intentionally rely on allowing undefined values; or reintroduce appropriate file-level or block-level disables where specific tests rely on undefined.
  • Removal of inline ESLint disables in tests

    • Inline /* eslint-disable no-undefined */ comments were removed from the following test files under tests/api/:
      • connectMethod.test.ts
      • deleteMethod.test.ts
      • getMethod.test.ts
      • http.test.ts
      • httpFile.test.ts
      • optionsMethod.test.ts
      • patchMethod.test.ts
      • postFileMethod.test.ts
      • putMethod.test.ts
      • traceMethod.test.ts
      • util.test.ts
    • Impact: tests that previously used undefined values without lint errors may now trigger lint failures. If those usages are intentional, either adjust the tests to avoid undefined or reintroduce a targeted ESLint rule exemption.
  • Precommit script removed from package.json

    • The precommit lifecycle script (which ran clean, lint, build, and test) was removed.
    • Impact: local pre-publish validation that ran automatically on commits is no longer invoked via npm lifecycle. Developers who relied on that behavior should add equivalent pre-commit hooks (e.g., Husky) or run validation steps manually.
    • Recommended action: if automatic pre-commit checks are desired, add a replacement lightweight hook that runs at least linting (or the specific steps the team wants preserved).
  • CI workflow change: build job removed from npm-publish workflow

    • The repository removed the separate build job and the needs: build dependency in .github/workflows/npm-publish.yml. The publish-npm job now runs directly (still with a checkout step) on ubuntu-latest.
    • Impact: CI no longer runs the previously separated build/lint/test steps in that workflow before publishing. Ensure that the publishing pipeline still performs necessary verification steps elsewhere, or reintroduce required checks in the publish workflow or other CI jobs.

Developer experience / Testing notes

  • Expect to run lint locally to discover any surfaced issues in tests. The repository moved test setup into tests/setup.ts and simplified vitest config; run the test suite (npm run test) to exercise the new setup path.
  • If lint errors appear in tests due to the restored no-undefined rule, either:
    • Update tests to avoid relying on undefined; or
    • Reintroduce appropriate ESLint overrides (preferred as a scoped configuration change in eslint.config.mjs) or per-file disables if necessary.
  • With the precommit script removed, developers may want to add a local pre-commit hook or CI job to maintain the prior guardrails (lint/build/test) before code is published or merged.

Refactoring and cleanup

  • eslint.config.mjs: replaced previous config with empty export. This is a removal of the previous library inheritance and test override.
  • Test files: removed repeating inline ESLint disables, leaving blank lines where the comments were — this standardizes test file header comments and relies on central config for rule control.

Lockfile and packaging

  • package-lock.json entries were updated to reflect resolved versions for @fjell/logging (bumped to 4.4.47) and @fjell/eslint-config (bumped to 1.1.25). These lockfile updates are metadata-only and ensure reproducible installs that match package.json ranges.

Recommendations and follow-ups

  • Restore or explicitly define the ESLint baseline for tests if the previous behavior was intentional. Options:
    • Re-add ...libraryConfig to eslint.config.mjs and add a targeted override for tests that turns off "no-undefined"; or
    • Reintroduce per-test-file ESLint comments where undefined use is intentional, or refactor tests to avoid undefined usage.
  • Reintroduce a lightweight precommit hook if automatic local validation is desired (for example, an npm script or a Git hook that runs lint only). This prevents accidental commits that skip lint/build/test steps.
  • Review CI publishing workflow to confirm that required build/test/coverage checks are performed elsewhere before publish. If not, consider reintroducing the build job or folding essential checks into the publish job.
  • Run lint and tests locally and in CI to identify any new failures introduced by the stricter linting rules and the configuration changes.

Changelog (detailed commits included in this release)

  • Bump package version to 4.4.39 (release) — marks release build
  • Update lockfile to bump @fjell/logging and @fjell/eslint-config resolved versions (package-lock.json)
  • Bump dependencies in package.json: @fjell/logging → ^4.4.47, @fjell/eslint-config → ^1.1.25
  • Remove test-specific ESLint override in eslint.config.mjs (export default []), and strip inline /* eslint-disable no-undefined */ from multiple test files
  • Remove precommit lifecycle script from package.json
  • Remove CI build job from .github/workflows/npm-publish.yml and simplify publish job
  • Earlier related changes included simplifying Vitest setup (move to tests/setup.ts) and general vitest config simplification

Notes

This release is primarily operational: dependency updates, lint/test configuration changes, and CI/workflow simplifications. No direct runtime code changes were included in the release commit that bumps the version, but the configuration and dependency changes may change development and CI behavior. Review the lint and CI implications listed above and run the test/lint suite after pulling this release.

If any of the configuration removals were accidental, restoring the previous ESLint inheritance and the precommit lifecycle script (or replacing them with equivalent tooling) will be the fastest path to restore prior local and CI validation behavior.