Releases: ogre-works/ogre-tools
Releases · ogre-works/ogre-tools
v23.2.0
v23.1.0
v23.0.1
v23.0.0
23.0.0 (2026-04-24)
⚠ BREAKING CHANGES
- injectable: Restructure Inject/Inject2 types and clean minimalDi interfaces
- injectable-react: Rename getAbstractInjectionTokenComponent to *2
- injectable-extension-for-mobx: Unwrap computedInjectMany2 family and reuse ManyFactory
- injectable-extension-for-mobx: The following named exports are removed from
@ogre-tools/injectable-extension-for-mobx: computedInjectManyInjectable,
computedInjectManyWithMetaInjectable, computedInjectMany2Injectable,
computedInjectManyWithMeta2Injectable, computedInjectMaybeInjectable,
computedInjectMaybe2Injectable. Use the matching *InjectionToken exports
together with registerMobX instead.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit a675191)
- injectable: di.decorate(alias, decorator) and
di.decorateFunction(alias, decorator) are gone. Replace call sites by
registering an injectable with injectionToken: injectionDecoratorToken.for(alias)
on a container created with { injectionDecorators: true }.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit 4add9f6)
- injectable: Containers that rely on di.decorate, di.decorateFunction,
or injectables registered against injectionDecoratorToken.for(...) must
now pass { injectionDecorators: true } to createContainer.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit ed0f5d2)
Features
- Add dual CJS/ESM build output for all packages (07f5ee9)
- element-component: Introduce mechanism for conditional $prop usage with react hooks (a6a664c)
- injectable-extension-for-mobx: Add 2-variants of computedInjectMany et al (ea46423)
- injectable-react: Add getAbstractInjectionTokenComponent (c456d16)
- injectable-react: Add getInjectableComponent2 for v2 InjectionToken2 (e0f0697)
- injectable-react: Add getInjectionTokenComponent (e0e3022)
- injectable-react: Add getInjectionTokenComponent2 for v2 InjectionToken2 (ede306b)
- injectable-react: Add useInject2 factory-returning hook (ad23e79)
- injectable-react: Support injectable2 in useInject hooks (0711183)
- injectable: Add getAbstractInjectionToken2 with full enforcement (21d194c)
- injectable: Add getInjectable2/getInjectionToken2 with curried instantiate and generic support (e341713)
- injectable: Add getNumberOfInstances for global instance count introspection (a818797)
- injectable: Add inject2/injectMany2 for factory-returning injection (d8c2e73)
- injectable: Add injectable2/token2 support to Override type (cf5bb83)
- injectable: Add instancePurgeCallbackToken with three-phase purge and LRU integration (0eac0f6)
- injectable: Add LRU cache support for keyedSingleton instances (80beb7b)
- injectable: Add registration/deregistration decorator tokens (5a2e94e)
- injectable: Add registration/deregistration decorator tokens as abstract v2 (e7949bf)
- injectable: Enhance purge with key-based, token, scoped, and typed support (8730312)
- injectable: Hold object-typed keyed singleton keys weakly (c0649a9)
- injectable: Make di.override and di.override2 cross-compatible with v1/v2 (99c9dc9)
- injectable: Make injectionDecorators opt-in at container creation (b5379eb)
- injectable: Make preventSideEffects the default (2dcc0a4)
Bug Fixes
- injectable-extension-for-mobx: Wrap computed reads in runInAction to suppress MobX warnings (3bbed48)
- injectable-mobx: Use curried inject for v2 minimalDi in computed-inject-2 variants (7d5dbf9)
- injectable-react: Accept specific ComponentType tokens for bare components (1fa51c6)
- injectable-react: Run tsd separately per test file to avoid multi-directory glob bug (5e77ae5)
- injectable-react: Update error message expectations after context removal (0b0ad28)
- injectable-react: Widen injectionToken type in getInjectableComponent (3387e59)
- injectable: Detect override-after-injection when overriding by token (f871f43)
- injectable: Fix cascade deregistration throwing for already-deregistered injectables (fbbca02)
- injectable: Fix cascade deregistration throwing for already-deregistered injectables (bf41803)
- injectable: Fix context mutation and optimize hot paths (f095d95)
- injectable: Fix WithMeta types and add type tests for token2 (326bb8f)
- injectable: Include injectable id in singleton instantiation-parameter error (0021718)
- injectable: Include injecting injectable's namespaced id in inject error messages (dfa89c5)
- injectable: Look up instantiation decorators by original injectable, not override (ffbe1b9)
- injectable: Prevent double-decoration when injectable and token share id (1cd7d60)
- injectable: Stop double-applying injection decorators via injectMany (4318dd7)
- injectable: Stop spreading v1 instantiation param in Inject2 factory (13eed28)
- injectable: Tolerate undefined instantiation args on old-style singletons (25614a0)
- injectable: Use namespaced ids in error messages where injectable is registered (3271f1f)
- injectable: Use object reference as speciality in abstract decorator tokens (e666d1d)
Performance Improvements
v19.0.0
19.0.0 (2026-02-20)
⚠ BREAKING CHANGES
- Update GetInjectable type to accept a generic lifecycle
enum parameter, allowing typed lifecycle values beyond the built-in set.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
- Require React 18+ as peer dependency and remove the
registerInjectableReact module that is no longer needed with the new
hook-based API.
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
- Migrate to using asyncComputed in package mobx-utils
Co-authored-by: Janne Savolainen janne.savolainen@live.fi
Features
- Drop React 17 support and remove registerInjectableReact (ef9e866)
- Enhance injectable bunches and typed specifiers (b1f6fa3)
- Expose typing for instantiation parameter of computedInjectMany (64674a1)
- Implement checking for if "alias-has-registrations" (ae1fb0a)
- Introduce discoverable and element-component packages (6e0c6f4)
- Introduce specificity of injection tokens (992551d)
- Introduce useInject hook and getInjectableComponent (6080eab)
- Make replaceTagsWithValues exported as point-free, and with typing (3ff26b1)
- Support React 19 and introduce computedInjectMaybe (f6ed37f)
Bug Fixes
- Fix bad export (df4b9c1)
- Fix injectable core internals and remove cycle detection (bfd24fa)
- Fix React withInjectables rendering and memoization (e17244f)
- Fix typing of conditional promises in pipeline (850a3aa)
- Fix typing of different public decorators of injectable (e975baf)
- injectable-extension-for-mobx: ComputedInjectMaybe should pass through injection params (df63bb0)
- Make GetInjectable accept generic lifecycle enum (cddd14e)
- Make withInjectables have access to all features of di (543dc16)
Miscellaneous Chores
- Get rid of duplicated asyncComputed (b6fd8b3)
v17.11.1
v18.0.1
v17.11.0
17.11.0 (2023-10-26)
Features
- Expose typing of getKeyedSingletonCompositeKey (f516342)
- Introduce DeepMap, being like Map, but with composite keys instead of singular ones (8969d27)
- Make ComputedInjectMany support instantiation parameters (b8b0dc1)
- Make keys of keyedSingleton able to be composed of multiple reference values (19fb547)
Bug Fixes
- Fix bad imports and remove dead comment (1cad69f)
v18.0.0
18.0.0 (2023-10-23)
⚠ BREAKING CHANGES
- Illegal attempts to inject singletons with an instantiation parameter now throw.
Adapt by either:
- Changing design to not use instantiation parameters for singletons
- Making the singletons keyed singletons instead
- Having singletons receive what they need as a dependency, instead of instantiation parameter
Features
- Expose typing of getKeyedSingletonCompositeKey (2e94d50)
- Introduce DeepMap, being like Map, but with composite keys instead of singular ones (7ef8e99)
- Make ComputedInjectMany support instantiation parameters (fc6aefa)
- Make keys of keyedSingleton able to be composed of multiple reference values (ad6c067)
- Make singletons throw if instantiation parameter is provided (96215f2)