Skip to content

v7.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 01:15
Immutable release. Only release title and notes can be modified.
69eb42f

@studnicky/batch

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/boundary-kit

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/retry@7.0.0
    • @studnicky/resilience@7.0.0
    • @studnicky/throttle@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/bounded-dispatcher

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/concurrency@7.0.0
    • @studnicky/event-bus@7.0.0
    • @studnicky/scheduler@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/cache

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/circular-buffer

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/clock

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/concurrency

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/circular-buffer@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/config

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/context

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/entity-store

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/errors

Minor Changes

  • d2b44b7: @studnicky/types exports PickDefined.from(record), which strips undefined-valued keys from a record while narrowing each remaining value's type away from undefined — built for builders assembling an options object from a mix of required and optional fields.

    @studnicky/errors exports DomainErrorArgs.build(fields, options), which computes code/message/retryable/cause/correlationId/metadata for a super() call so leaf error classes can skip the manual field-assignment ceremony while keeping their extends chain and instanceof checks intact.

    @studnicky/logger exports ResolveMinLevel.from(options), the level-validation-and-resolution logic ConsoleTransport/MemoryTransport already use internally, now reusable by third-party TransportInterface implementations.

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/eslint-config

Minor Changes

  • d2b44b7: @studnicky/v8 gains three loop-performance rules covering all loop types (for, while, do...while, for...of, for...in): array-splice-outside-loops flags .splice() calls inside a loop body, and chained-array-iteration flags .map().filter()/.filter().map() chains anywhere in the file.

    array-scan-outside-loops flags .find()/.filter()/.indexOf()/.includes()/.some()/.every() calls inside a loop body, type-checked against the receiver to distinguish a real array scan from String.prototype.indexOf/.includes() (same method names, different complexity story), and scoped-checked to skip a receiver proven to be freshly derived every iteration (a for...of loop's own binding, or a const declared inside the loop body) rather than the same stable collection re-scanned each time.

Patch Changes

  • d2b44b7: Fixed three pre-existing precision bugs surfaced by dogfooding the full rule set against real code for the first time:

    • PropertyKeyName.get only resolved unquoted (key:) property keys, never quoted ('key':) ones — since this repo's own quote-props: always convention quotes every property key, the inlineFunctions/inlineArrowFunctions rules' EXEMPT_KEYS allowlist never actually matched anything. Now resolves both forms.
    • inlineArrowFunctions's EXEMPT_KEYS gains 'message', alongside the existing 'callback'/'handler'/etc. — a single caller-supplied callback property in an options object is not a dispatch-map branch.
    • folderContentShape's isUnderFolder matched a types/interfaces path segment anywhere in the file path, including a package's own root name (e.g. packages/types/) — incorrectly treating any package literally named types or interfaces as if every file inside it lived under a types//interfaces/ convention subfolder. Now only matches real subfolders within the package.
  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.

  • 081c7bd: Pin vite to ^6.4.3 and esbuild to ^0.25.0 via a root pnpm.overrides entry, resolving four Dependabot alerts in the transitive vitepress docs-build toolchain: vite's server.fs.deny bypass on Windows alternate paths, a path-traversal issue in optimized-deps .map handling, a launch-editor NTLMv2 hash disclosure via UNC paths, and an esbuild dev-server request/response exposure. Dev-only tooling change; no published package's runtime code is affected.

  • Updated dependencies [d2b44b7]

    • @studnicky/types@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/event-bus

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/circular-buffer@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/fetch

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/config@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/file-lock

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/virtual-fs@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/flag-evaluator

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/fsm

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/circular-buffer@7.0.0
    • @studnicky/json@7.0.0

@studnicky/health-registry

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/idempotency-guard

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/concurrency@7.0.0
    • @studnicky/cache@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/json

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/keyed-rate-limiter

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/errors@7.0.0
    • @studnicky/resilience@7.0.0
    • @studnicky/cache@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/keyed-work-gate

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/mutex@7.0.0
    • @studnicky/concurrency@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/logger

Minor Changes

  • d2b44b7: @studnicky/types exports PickDefined.from(record), which strips undefined-valued keys from a record while narrowing each remaining value's type away from undefined — built for builders assembling an options object from a mix of required and optional fields.

    @studnicky/errors exports DomainErrorArgs.build(fields, options), which computes code/message/retryable/cause/correlationId/metadata for a super() call so leaf error classes can skip the manual field-assignment ceremony while keeping their extends chain and instanceof checks intact.

    @studnicky/logger exports ResolveMinLevel.from(options), the level-validation-and-resolution logic ConsoleTransport/MemoryTransport already use internally, now reusable by third-party TransportInterface implementations.

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/memoize

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/errors@7.0.0
    • @studnicky/concurrency@7.0.0
    • @studnicky/cache@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/mutex

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/config@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/paginator

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/fsm@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/pipeline

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/predicates

Patch Changes

  • @studnicky/cache@7.0.0
  • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/process-kit

Patch Changes

  • @studnicky/fsm@7.0.0
  • @studnicky/scheduler@7.0.0
  • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/request-executor

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/retry@7.0.0
    • @studnicky/fetch@7.0.0
    • @studnicky/context@7.0.0
    • @studnicky/timing@7.0.0
    • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/resilience

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0
    • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/retry

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/logger@7.0.0
    • @studnicky/config@7.0.0
    • @studnicky/json@7.0.0
    • @studnicky/timing@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/sample-buffer

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/scheduler

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/clock@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/signal

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/errors@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/sliding-window-limiter

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/circular-buffer@7.0.0
    • @studnicky/json@7.0.0
    • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/system

Patch Changes

  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/throttle

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/sample-buffer@7.0.0
    • @studnicky/circular-buffer@7.0.0
    • @studnicky/config@7.0.0
    • @studnicky/json@7.0.0
    • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/timing

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/config@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/types

Minor Changes

  • d2b44b7: @studnicky/types exports PickDefined.from(record), which strips undefined-valued keys from a record while narrowing each remaining value's type away from undefined — built for builders assembling an options object from a mix of required and optional fields.

    @studnicky/errors exports DomainErrorArgs.build(fields, options), which computes code/message/retryable/cause/correlationId/metadata for a super() call so leaf error classes can skip the manual field-assignment ceremony while keeping their extends chain and instanceof checks intact.

    @studnicky/logger exports ResolveMinLevel.from(options), the level-validation-and-resolution logic ConsoleTransport/MemoryTransport already use internally, now reusable by third-party TransportInterface implementations.

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/virtual-fs

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/clock@7.0.0
    • @studnicky/json@7.0.0

@studnicky/visible-range

Patch Changes

  • d2b44b7: Domain error constructors route through @studnicky/errors's DomainErrorArgs.build() instead of hand-rolled super({code,message,retryable}) boilerplate. Fluent builders assemble their options object via @studnicky/types's PickDefined.from() instead of manual spread-ternary chains. @studnicky/fetch's config validators subclass @studnicky/config's ConfigValidation. @studnicky/eslint-config's duplicated rule-internal AST helpers are consolidated under rules/shared/. No public API or behavior changes.
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/json@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

@studnicky/worker-pool

Minor Changes

  • d2b44b7: @studnicky/errors exports HookInvoker, a composable delegate for safely invoking consumer-supplied lifecycle hooks — synchronous or asynchronous, without forcing async contagion on a synchronous caller and without letting a broken hook produce an unhandled rejection. A class composes it as a field (never extends it directly) and calls invoke(hookName, fn) from its own methods; a caller needing a different failure disposition than the default throw defines a small delegate subclass overriding onHookError. Also exports HookInvocationError, HookTimeoutError (thrown when an optional timeoutMs elapses before a hook settles), and ReentrantHookInvocationError (thrown when detectReentrancy catches a synchronous same-call-stack reentrant invoke).

    @studnicky/entity-store, @studnicky/file-lock, @studnicky/health-registry, and @studnicky/worker-pool route their lifecycle hooks through a record-and-continue HookInvoker delegate: a throwing hook override no longer aborts or corrupts an in-flight operation — the failure is recorded instead, inspectable via hookErrorCount/getHookErrors() (getHookErrorCount()/getHookErrors() on WorkerPool).

    @studnicky/logger's Logger composes a plain HookInvoker for onLog/onDropped/onChildCreate (unchanged throwing behavior) and separately guards onTransportError, recording its failures via hookErrorCount/getHookErrors() so a broken override can't abort fan-out to the remaining transports.

    @studnicky/retry and @studnicky/pipeline gain a hookTimeoutMs builder option (and matching Retry.create/Pipeline.create config field) bounding how long an async lifecycle hook may run before it's routed to onHookError with a HookTimeoutError cause. Left unset, a hook may take arbitrarily long, matching prior behavior.

Patch Changes

  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
  • Updated dependencies [d2b44b7]
    • @studnicky/types@7.0.0
    • @studnicky/errors@7.0.0
    • @studnicky/batch@7.0.0
    • @studnicky/json@7.0.0
    • @studnicky/system@7.0.0
    • @studnicky/signal@7.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.