Repository navigation
Move type imports to @fjell/types, bump fjell deps, and publish 4.4.35
Overview
This release reorganizes how this package consumes type definitions vs runtime values, aligns exported types with the separated types package, updates dependent fjell package versions, removes an obsolete docs workflow, and transitions the package version from a prerelease identifier to a final release (4.4.35). The changes are focused on clarifying the boundary between compile-time types and runtime helpers and ensuring the package's public type surface references the dedicated @fjell/types package.
Breaking changes
- Replaced many imports of type definitions from @fjell/core with @fjell/types (commit a2db535). Files under src/ (Definition.ts, GCSLibrary.ts, GCSLibraryFactory.ts, Operations.ts, Options.ts, PathBuilder.ts, FileProcessor.ts, Validation and ops/*) and many tests now import Item, PriKey, ComKey, Coordinate, ItemTypeArray, AllOptions, etc. from "@fjell/types" instead of "@fjell/core". Why this matters: TypeScript type resolution for consumers who previously relied on this package to re-export types from @fjell/core may need to account for the new source package for those types.
- Commits: a2db535
- Impact: Projects that import types transitively from this package should verify their TS configuration and dependency graph to ensure @fjell/types is resolvable at build time. See "Type surface and dependency implications" below for guidance.
New features / API surface changes
- Re-export UpdateOptions from @fjell/types (commit e0cc682). The ops module now re-exports the UpdateOptions type from the dedicated types package rather than from @fjell/core. This is a type-level change with no runtime effect but it alters where consuming projects resolve the UpdateOptions type from.
- Commits: e0cc682
- Impact: Type import paths for consumers that accessed UpdateOptions via this package should remain the same at the import site, but the underlying resolution will point to the @fjell/types package. Ensure your package manager and TypeScript paths allow resolving @fjell/types consistently.
Improvements and rationale (pattern and connections)
- Clear separation of types vs runtime helpers (commit a2db535)
- What changed: Type-only objects (Item, PriKey, ComKey, Coordinate, ItemTypeArray, AllOptions, etc.) were moved to import from "@fjell/types", while runtime helpers that provide values or behavior (createCoordinate, isComKey, isPriKey, NotFoundError, ValidationError) remain imported from "@fjell/core" where the code needs actual runtime behavior.
- Why: The commit message explicitly frames this as an intentional split to "clarify the boundary between compile-time types and runtime values." Practically, this reduces runtime coupling on @fjell/core for places that only need types and centralizes type definitions in a dedicated package.
- How changes relate: The re-export of UpdateOptions from @fjell/types (e0cc682) follows the same design: the package's public type surface is being aligned to the types package rather than the runtime core package.
- Impact: Consumers and monorepo setups should treat @fjell/types as the canonical source for these types. Build tooling that previously assumed types were provided by @fjell/core may need adjustments.
Bug fixes / test updates
- Updated tests to match the types/runtime split (commit a2db535)
- What changed: Many test files under tests/… were updated to import Item and other type-only symbols from "@fjell/types" while keeping createCoordinate and other runtime helpers from "@fjell/core" (examples: tests/Definition.test.ts, tests/FileProcessor.test.ts, numerous tests under tests/operations and tests/integration). This shows the split is end-to-end: both src/ and tests were migrated.
- Why: The tests were updated to reflect the new import locations; this reduces false positives where type imports would otherwise cause import-time runtime errors or unnecessary dependency pulls.
- Impact: Test suites should continue to run, but CI and local developer toolchains must be able to resolve @fjell/types during type-checking.
Package and dependency changes
-
Bump fjell dependencies (commit e0cc682)
- What changed: package.json was updated to bump @fjell/core (4.4.73 → 4.4.74), @fjell/lib (4.4.83 → 4.4.84), @fjell/logging (4.4.65 → 4.4.66), and @fjell/registry (4.4.81 → 4.4.82). The commit message describes these as dependency version bumps with no behavioral code changes.
- Why: Keeping dependencies up to date ensures this package builds and type-checks against the matching fjell versions.
- Impact: Consumers should expect subtle type or compatibility differences only if they rely on transitive behavior from those packages; in practice these are version alignment changes.
-
package.json and @fjell/types (notes on potential packaging friction)
- What the commits say: The codebase was updated to import many types from "@fjell/types" (a2db535), while another commit (a2db535’s description) also notes removal of @fjell/types from package.json in an earlier diff narrative. Separately, the later commit e0cc682 explicitly lists @fjell/types in its dependency bump set in the diff, indicating package.json ended up with @fjell/types present. Because the commit messages both reference package.json changes, the net effect in this release is that package.json was updated as part of dependency alignment (see e0cc682) and the source files were updated to consume @fjell/types.
- Why this matters: The code now relies on @fjell/types for type-only imports. If package.json does not list @fjell/types (or if consumers rely on different resolution strategies), builds can fail at type-check time. Confirm that your dependency tree includes @fjell/types (the release includes dependency bumps that should make @fjell/types available for consumers).
- Action for maintainers/consumers: Ensure @fjell/types is available in your install environment (explicit dependency, workspace package, or peer provision) so TypeScript can resolve the new import locations.
Publishing and versioning
- Bump package version from prerelease to final (commit da37e9)
- What changed: package.json version replaced a prerelease string (e.g., "4.4.35-dev.0") with the stable semver "4.4.35" and the release is prepared for publish (commit da37e9a).
- Why: This transitions the package from prerelease to a stable release, changing how package registries and downstream consumers resolve it (stable releases are preferred by default over prereleases).
- Impact: CI/CD or publish pipelines that treat prereleases differently will now consider this a normal release. Consumers installing without prerelease tags will receive this version.
Other repository maintenance
- Remove undocumented docs workflow (deleted file .github/workflows/actions/build-docs/action.yml)
- What changed: A composite GitHub Action that built docs was deleted (diff shows the file deletion). The repository no longer contains that build-docs composite action.
- Why: The diff indicates removal; the commit history doesn't attach an explicit rationale, but removing the file prevents attempts to invoke a now-absent workflow. Users automating docs builds via that composite action should update to the repository's current CI patterns.
- Impact: If external workflows relied on that composite action path, they must be updated. Search for references to .github/workflows/actions/build-docs/action.yml in downstream automation.
Developer experience and migration guidance
-
TypeScript resolution: ensure @fjell/types is resolvable
- Why: The codebase now imports many type-only symbols from "@fjell/types" (commit a2db535). If your project previously relied on types being provided via @fjell/core transitive dependencies, you may now need to add @fjell/types explicitly (as a devDependency or dependency) or configure workspace resolution so TypeScript finds the package.
- How to check: Run a full type-check (tsc --noEmit) after upgrading to this release. If TypeScript errors mention cannot find module '@fjell/types', add @fjell/types to package.json or adjust your monorepo workspace setup.
-
Runtime vs type imports: confirm runtime helpers still come from @fjell/core
- Why: The commit keeps runtime helpers (createCoordinate, isComKey, isPriKey, NotFoundError, ValidationError) imported from @fjell/core where code needs actual functions or errors at runtime (commit a2db535). That means only type-level symbols moved; runtime behavior remains in @fjell/core.
- Impact: No runtime behavior should change, but if your build tool strips type-only imports differently (for example, with certain bundlers or ts-transpile setups), verify the bundle does not accidentally require @fjell/types at runtime. The change is meant to be type-only; bundlers that preserve import statements could force @fjell/types to be present at runtime unless imports are elided during compilation.
-
Public type surface change (UpdateOptions)
- Why: src/ops/index.ts now re-exports UpdateOptions from @fjell/types (commit e0cc682). Consumers importing UpdateOptions via this package will still use the same import path but the upstream declaration now points to a different source package.
- Action: If consumers depend on the exact type identity of UpdateOptions across multiple packages, ensure the versions of @fjell/types and other fjell packages are compatible to avoid subtle type mismatches.
Files and areas touched (for maintainers)
- Source files updated to import types from @fjell/types: src/Definition.ts, src/GCSLibrary.ts, src/GCSLibraryFactory.ts, src/Operations.ts, src/Options.ts, src/contained/GCSLibrary.ts, src/primary/GCSLibrary.ts, src/PathBuilder.ts, src/FileOperations.ts, src/FileProcessor.ts, src/validation/itemValidator.ts, src/index.ts, src/ops/* (create, get, one, update, upsert, remove, all, files/*) (commit a2db535).
- Tests and fixtures updated across tests/** to match the new imports (commit a2db535).
- package.json updated to bump fjell dependency versions and to prepare publish (commits e0cc682 and da37e9).
- Deleted .github/workflows/actions/build-docs/action.yml (file deletion visible in diff).
References
- Switch type imports and update tests: commit a2db535
- Bump fjell dependencies and change ops re-export of UpdateOptions: commit e0cc682
- Bump package from prerelease to final 4.4.35: commit da37e9a
Summary and recommended next steps
This release refactors how types are consumed (moving type-only imports to @fjell/types while keeping runtime helpers in @fjell/core), aligns the ops type re-export to the types package, updates dependency versions, removes an unused docs action, and publishes a stable release version 4.4.35. The primary user-visible effects are on TypeScript type resolution and package dependency requirements; runtime behavior should be unchanged.
If you maintain downstream projects that depend on this package:
- Run a full TypeScript build and test after upgrading to detect any missing @fjell/types resolution issues.
- If you encounter "cannot find module '@fjell/types'" errors, add @fjell/types to your project's dependencies or ensure workspace resolution provides it.
- Verify CI and any external GitHub Actions that referenced the deleted build-docs action are updated.
These steps will ensure a smooth transition to the new type surface and the stable 4.4.35 release.