Skip to content

Releases: locknessland/lockness-monorepo

Release list

v0.2.0

Choose a tag to compare

@kevinkod kevinkod released this 31 Aug 15:08

First release cut from locknessland/lockness-monorepo.

Version numbering continues from 0.1.30, which was published under the
previous repository. Releases and tags were not migrated, so this is the first
tag this repository has ever carried — the gap in the JSR version history is the
migration, not a withdrawn release.

⚠️ Breaking — contract interfaces renamed

Four interfaces lost their I prefix and took a Contract suffix. There are
no deprecated aliases
; the old names are gone.

Before After
ICache CacheContract
ICommand CommandContract
IContainer ContainerContract
IMiddleware MiddlewareContract

If you implement any of these, rename at the point of use. Nothing else in the
signature changed.

New — @lockness/scheduler

Declarative cron scheduling: a @Schedule decorator records intent, a
Scheduler service arms one timer per task. Times are UTC only and state is
in-process only — two replicas each fire every task.

This package has never been published before; 0.2.0 is its first version on
JSR.

Publishing correctness

Several packages would previously have shipped manifests a consumer could not
resolve. Inside the monorepo a bare @lockness/x specifier resolves by
workspace member name, so an import that no manifest declared still worked
locally and failed on install:

TS2307: Import "@lockness/cli" not a dependency and not in import map

Ten such imports are now declared, across eight packages. Two checks keep them
declared — deno task deps:analyze for @lockness/* edges, and
deno task publish:check, which copies each package out of the workspace and
type-checks it alone. deno publish --dry-run does not catch this class of
defect, because it runs inside the workspace.

Dependency integrity

The dependency graph is now built from deno info — the module graph Deno
actually resolves — rather than from declared manifests, and is checked for
cycles, declaration drift and tier policy on every pull request.

Also in this release

  • @lockness/container raises CircularDependencyError naming the construction
    chain, instead of exhausting the stack. Lazy @Inject still tolerates
    services that hold each other; only a constructor cycle is an error.
  • Every package carries an agent brief with a generated dependency contract,
    public surface and test inventory, verified in CI.

Full changelog: https://github.com/locknessland/lockness-monorepo/commits/v0.2.0