Skip to content

Package metadata & dependency updates; Utilities refactor and CI/publish simplification

Choose a tag to compare

released this 13 Oct 01:58
· 43 commits to working since this release

This release focuses on cleaning up package metadata and lockfile consistency, bumping several Fjell runtime and tooling packages, simplifying path-building logic and higher-level API code, and streamlining the CI/publish workflow. The changes include a mix of dependency bumps and lockfile normalization, targeted refactors to reduce duplicated logic and Express-specific workarounds, linting and test adjustments, and workflow edits that decouple publishing from a dedicated build job.

Summary

  • Package metadata: duplicate/conflicting version fields were removed from package.json and version bumps across multiple commits were normalized to keep release/development cycles consistent.
  • Dependency and lockfile normalization: multiple @fjell/* runtime packages and some dev/tooling entries were bumped; package-lock.json entries were updated to reflect exact resolved tarballs and integrity checksums and duplicated/ inconsistent lines were removed.
  • Code simplification and refactor: path-building logic in src/Utilities.ts was consolidated to remove duplicated branches, variable shadowing, and unnecessary logging; src/ops/allAction.ts was simplified to stop special-casing Express empty-object responses and to reduce outer-factory complexity.
  • CI/workflow: the dedicated build job was removed from the npm-publish workflow and the publish-npm job was simplified so it no longer depends on the removed build job.
  • Linting/test adjustments: test-level no-undefined ESLint exception removed (tests updated accordingly), precommit script removed from package.json, and tests adjusted to match new behavior.
  • Tooling fix: esbuild version conflicts addressed by pinning and npm overrides and switching CI to npm ci where relevant.

New Features

  • None in the sense of new public APIs. This release is focused on stability, consistency, and simplification rather than adding new runtime features.

Improvements

  • package.json / package metadata

    • Removed duplicate/conflicting version fields from package.json (deleted both development and release version lines in one commit) to avoid merge/format conflicts and to let the release process manage versioning.
    • Multiple commits normalized package.json EOF (trailing newline) and whitespace around version/dependencies entries for consistent formatting.
    • Impact: reduces merge conflicts and avoids ambiguous version state in the file; versioning is intended to be driven by the release process rather than ad-hoc edits in development branches.
  • Dependency bumps and lockfile normalization

    • Runtime dependency updates (package.json and package-lock.json): repeated, incremental patch bumps to @fjell packages across this release series, for example:
      • @fjell/core: bumped through 4.4.39 -> 4.4.44 (finalized at ^4.4.44 in package.json)
      • @fjell/registry: bumped through 4.4.34 -> 4.4.44 (finalized at ^4.4.44)
      • @fjell/http-api and @fjell/logging were bumped across several patch releases (reflected in lockfile entries)
    • package-lock.json changes include updated resolved tarball URLs and integrity checksums, and removal of duplicated or inconsistent dependency lines so node_modules blocks reflect deterministic install information.
    • Impact: reproducible installs and consistency between package.json and package-lock.json; ensures CI and local installs use the intended patch releases.
  • Utilities and path-building

    • src/Utilities.ts was refactored to simplify and consolidate path-building logic used by addPath/getPath flows:
      • Removed duplicated branches and variable shadowing between PriKey/LocKey code paths
      • Collapsed matching/fallback logic into a single consistent selection flow for pathName and nextBase
      • Preserved original external behavior intent (e.g., when only one localPathName remains it is appended later), but implemented with a single predictable algorithm and fewer debug/log branches
    • Impact: easier to read/maintain path construction code and reduced risk of subtle bugs caused by duplicated/contradictory branches; internal logging now targets the chosen pathName/nextBase only.
  • allAction / getAllActionOperation simplification

    • src/ops/allAction.ts was simplified by removing an Express-specific workaround that converted empty-object responses ({}) into [[], []] plus warnings and by streamlining the factory signature.
    • Tests were updated (tests/ops/allAction.test.ts) to assert the new expectations: direct tuple/array responses or explicit edge-case behavior without implicit {} conversions.
    • Impact: code now assumes upstream/server responses are normalized; fewer special-case branches and clearer handling of HTTP responses returned by the server.
  • Linting/tooling

    • Test-level ESLint no-undefined override removed from eslint.config.mjs and file-level disable comments removed from some test files. Tests were updated accordingly to comply with stricter lint rules.
    • The precommit script was removed from package.json so the repository no longer runs the clean/lint/build/test chain automatically on precommit.
    • Impact: stricter linting for tests aligns tests with normal code rules; removal of precommit hook reduces local precommit gating (intent appears to simplify developer workflow and avoid expensive local checks).
  • CI/workflow and publish changes

    • .github/workflows/npm-publish.yml: the entire build job was removed (steps that ran checkout, setup-node, npm ci, lint, build, test, codecov upload were deleted).
    • The publish-npm job no longer depends on the removed build job (needs: build removed) and remains as a single job that runs on ubuntu-latest and starts with actions/checkout@v4.
    • Impact: publish workflow is decoupled from a dedicated build/test job. Consumers of the CI should be aware that publishing no longer waits for a separate build job in this workflow; CI design/requirements may need review if publishing should be gated by tests/builds elsewhere.
  • esbuild and CI reproducibility

    • esbuild version conflicts were addressed by pinning esbuild to exact version 0.25.9 and adding npm overrides to force consistent esbuild usage across packages.
    • GitHub Actions updated to use npm ci for reproducible builds in relevant places.
    • Impact: resolves CI/CD esbuild mismatch errors and ensures consistent binary/tooling behavior in docs/build steps.

Bug Fixes

  • Fixed esbuild version mismatch in client-api docs/build by pinning esbuild (0.25.9) and adding npm overrides to avoid conflicting versions in different packages.
  • Corrected duplicate/inconsistent dependency lines in package-lock.json so the lockfile reflects actual resolved tarballs and integrity checksums; this removes sources of nondeterministic installs.

Refactoring

  • src/Utilities.ts

    • Major internal cleanup: eliminated duplicated/contradictory flow branches, fixed variable shadowing, and unified matching/fallback strategy. Changes are confined to Utilities path-building logic but intended to produce the same external behavior with fewer code paths.
  • src/ops/allAction.ts

    • Simplified factory signature and removed special-case handling for empty-object responses. Response destructuring now relies on server-normalized shapes.
  • Misc formatting/fixes

    • Numerous commits normalized EOFs and whitespace in package.json and other files for consistent formatting.

Developer Experience

  • Tests and linting

    • Removed test-level no-undefined exceptions; tests adjusted to comply with stricter lint rules.
    • Removed file-level /* eslint-disable no-undefined */ comments in specific test files.
    • Added or adjusted unit tests for allAction to reflect the new response expectations.
  • Precommit script removal

    • precommit script deleted from package.json: local precommit chain (clean/lint/build/test) will no longer run automatically. Developers should run these checks manually or via CI as needed.

Breaking Changes and Compatibility Notes

  • Response shape expectations in allAction

    • allAction no longer attempts to convert an Express-style empty-object ({}) into [[], []]. If code or tests previously relied on that implicit conversion, they must be updated to send/expect normalized array/tuple shapes from the server.
    • This may affect integrations that relied on the old workaround. Verify server responses used by consumers of allAction return the expected tuple/array shapes.
  • CI/publish gating

    • The npm-publish workflow was simplified and no longer runs the previously present build job. Publishing via this workflow is no longer gated by those build/test steps in the same workflow file. If a strict gate is required, CI configuration should be updated to reintroduce test/build dependencies or to ensure that other workflows perform the necessary checks.
  • Linting changes

    • Tests are subject to stricter lint rules (no special no-undefined relaxation). Address any test code that relied on the relaxed rule.

Files / Components Affected (high-level)

  • package.json (metadata, dependencies, scripts) — version entries cleaned and some scripts removed (precommit)
  • package-lock.json — normalized node_modules blocks, resolved URLs, integrity checks
  • src/Utilities.ts — consolidated path-building logic
  • src/ops/allAction.ts — simplified API surface and response handling
  • tests/ops/allAction.test.ts and other test files — updated to match new behavior and stricter linting
  • eslint.config.mjs — removed test-level no-undefined override
  • .github/workflows/npm-publish.yml — removed build job and simplified publish job
  • esbuild pinning / npm overrides — to force consistent esbuild version across packages

Migration and Action Items

  • Review any code that relied on the old allAction {} -> [[], []] conversion and update server responses or client expectations to return normalized tuple/array shapes.
  • If publishing must be gated by build/test, update CI workflows to reintroduce gating (either by re-adding a build job or making publish depend on another workflow that runs tests/builds).
  • Run npm ci to obtain the normalized lockfile installs; verify package versions match expectations (noting the bumped @fjell/* patch versions).
  • If local development relied on the removed precommit script for automatic checks, ensure suitable local scripts or editor tooling are in place to run lint/tests before committing.

Notes

  • The refactors in Utilities and allAction were explicitly implemented to remove duplicated logic and unnecessary Express-specific workarounds; external APIs were preserved in intent, but response shapes and linting expectations tightened.
  • The dependency bumps and lockfile normalizations are intended to produce deterministic installs and reflect recent patch releases for runtime packages and dev tooling.

If any of these changes affect your integration or CI expectations, review the affected files listed above and run the repository's test suite locally (or in CI) to validate behavior before deploying.