Page Contents

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

3.13.0 (2020-11-05)

Features

  • context: add binding.toInjectable shortcut (230923a)

3.12.0 (2020-10-07)

Features

  • context: introduce new binding scopes (9916cfd)

3.11.1 (2020-09-17)

Note: Version bump only for package @loopback/context

3.11.0 (2020-09-15)

Bug Fixes

  • improve handling of missing design-time type metadata (95b6a2b)

Features

  • context: add [@injectable](https://github.com/injectable) as a preferred decorator for [@bind](https://github.com/bind) (1f75c35)
  • allow dynamic value provider classes and classes with @inject to be booted (7b85cdf)

3.10.1 (2020-08-27)

Note: Version bump only for package @loopback/context

3.10.0 (2020-08-19)

Features

  • context: propagate resolution session to dynamic value factory (60929f1)

3.9.4 (2020-08-05)

Note: Version bump only for package @loopback/context

3.9.3 (2020-07-20)

Bug Fixes

  • context: destroy debug instances to avoid memory leak (a28d53c)

3.9.2 (2020-06-30)

Note: Version bump only for package @loopback/context

3.9.1 (2020-06-23)

Bug Fixes

  • set node version to >=10.16 to support events.once (e39da1c)
  • context: cache binding value or promise as-is to avoid racing condition (38b9b96)

3.9.0 (2020-06-11)

Features

  • context: add tryCatchFinally helper function for value or promise (c764ac6)
  • context: add strongly typed on and once methods (3f14bfa)
  • context: improve error reporting with more contextual information (2a30484)
  • context: use a faster UID generator (e5e3d19)

3.8.2 (2020-05-28)

Note: Version bump only for package @loopback/context

3.8.1 (2020-05-20)

Note: Version bump only for package @loopback/context

3.8.0 (2020-05-19)

Bug Fixes

  • context: check parameter design type for method injections (7e81e10)

Features

  • context: allow bindings to be created from dynamic value provider classes (9e15154)
  • context: pass resolution context to the factory function for toDynamicValue() (6513d3f)
  • context: use a _source to keep the original value provider for bindings (90679f3)
  • core: allow extensionFilter to take a list of extension point names (8f315eb)

3.7.0 (2020-05-07)

Bug Fixes

  • context: allow binding keys to be used with composeInterceptors() (0663c04)

Features

  • context: add registerInterceptor helper function and app.interceptor (c760966)
  • context: allow composition of intercetors (261e9eb)
  • context: allows bindings with singleton/context scopes to be refreshed (8155147)
  • context: allows default namespace for bindings from classes (ec2da01)
  • context: consolidate uuid generation and testing (5abe25e)
  • context: force interceptor functions to return a value (5663a76)
  • context: relax parameter type for isProviderClass() (aafe7d0)

3.6.0 (2020-04-29)

Features

  • context: add BindingKey.generate to generate unique binding keys (9478d31)

3.5.1 (2020-04-23)

Note: Version bump only for package @loopback/context

3.5.0 (2020-04-22)

Features

  • update package.json and .travis.yml for builds (cb2b8e6)
  • context: allow explicit invocation source for proxies (98115f2)
  • context: improve generic typing for binding inspection (819fabb)

3.4.0 (2020-04-11)

Features

  • context: expose debug method to subclasses (f651e5b)

3.3.0 (2020-04-08)

Bug Fixes

  • context: fix context observer to catch errors by waitUntilPendingNotificationsDone (3dad6c0)

Features

  • remove Node.js 8.x polyfill for Symbol.asyncIterator (eeb8772)

3.2.0 (2020-03-24)

Features

  • context: emit bind/unbind events on ContextView (65e3d38)
  • context: improve context view for bind/unbind events (6a5f90a)

3.1.0 (2020-03-17)

Features

  • context: introduce TagValueMatcher for more flexible tag matching (deaf2ed)

3.0.0 (2020-03-05)

chore

  • remove support for Node.js v8.x (4281d9d)

Features

  • context: allow tags to be matched by a given name with any value (7cf053e)
  • context: remove generic parameters from BindingFilter type (1ce33af)
  • add tslib as dependency (a6e0b4c), closes #4676
  • context: improve ctx.inspect() to allow classes with colliding names (e7380fc)

BREAKING CHANGES

  • context: The type BindingFilter is no longer generic. Please update your code and remove any generic arguments provided for the type.
- BindingFilter<SomeType>
+ BindingFilter

Signed-off-by: Miroslav Bajtoš mbajtoss@gmail.com

  • Node.js v8.x is now end of life. Please upgrade to version 10 and above. See https://nodejs.org/en/about/releases.

2.1.1 (2020-02-06)

Bug Fixes

  • context: relax checking on instances of BindingKey class (8668eb6)

2.1.0 (2020-02-05)

Features

  • context: allow more options to inspect context/binding objects (3be32a3)
  • context: improve context name with the subclass name as prefix (42d2e1b)
  • context: tidy up binding information for inspection (15d698b)

2.0.0 (2020-01-27)

Features

  • context: add ContextEventListener and tidy up parent event handling (beb41a7)
  • context: index bindings by tag to speed up matching by tag (566b9d9)
  • context: keep binding tag pattern for BindingTagFilter (856b62d)
  • context: make bindings as event emitters to report changes (dddddb9)
  • context: refactor context observer subscription into a new class (31ad9a5)
  • context: set max listeners to Infinity by default (0741e3b)
  • context: use BindingEvent for binding event listeners (ae5febc)

BREAKING CHANGES

  • context: Context events are now emitted as ContextEvent objects instead of positional arguments. Context listener functions must switch from the old style to new style as follows:
  1. Old style
ctx.on('bind', (binding, context) => {
// ...
});
  1. New style
ctx.on('bind', (event: ContextEvent) => {
// ...
});

Or:

ctx.on('bind', ({binding, context, type}) => {
// ...
});

1.25.1 (2020-01-07)

Note: Version bump only for package @loopback/context

1.25.0 (2019-12-09)

Features

  • context: allow global interceptors to be applied based on source types (77cbd01)
  • context: make it possible to set source information for interceptions (2a1ccb4)

1.24.0 (2019-11-25)

Features

  • context: allow current binding to be injected with [@inject](https://github.com/inject).binding (c01b4c6)
  • context: improve context/binding with inspect/toJSON for metadata dumping (ac399f7)
  • core: add @service decorator to inject a service by class/interface (1d80904)

1.23.5 (2019-11-12)

Note: Version bump only for package @loopback/context

1.23.4 (2019-10-24)

Note: Version bump only for package @loopback/context

1.23.3 (2019-10-07)

Note: Version bump only for package @loopback/context

1.23.2 (2019-09-28)

Note: Version bump only for package @loopback/context

1.23.1 (2019-09-27)

Note: Version bump only for package @loopback/context

1.23.0 (2019-09-17)

Features

  • context: add more logs to simplify troubleshooting (7752b08)

1.22.1 (2019-09-06)

Bug Fixes

  • context: allow inject to be explicitly invoked for class ctor args (6a0d4f2)

1.22.0 (2019-09-03)

Features

1.21.4 (2019-08-19)

Note: Version bump only for package @loopback/context

1.21.3 (2019-08-15)

Note: Version bump only for package @loopback/context

1.21.2 (2019-08-15)

Note: Version bump only for package @loopback/context

1.21.1 (2019-07-31)

Note: Version bump only for package @loopback/context

1.21.0 (2019-07-26)

Features

  • context: allow @config.* to specify the target binding key (42b7b98)
  • context: use invocation context for method dependency injection (a8f326c)

1.20.3 (2019-07-17)

Note: Version bump only for package @loopback/context

1.20.2 (2019-06-28)

Bug Fixes

  • address violations of “no-floating-promises” rule (0947531)

1.20.1 (2019-06-21)

Note: Version bump only for package @loopback/context

1.20.0 (2019-06-20)

Features

  • context: generalize interceptors and chain for invocations (34d31d8)

1.19.1 (2019-06-17)

Note: Version bump only for package @loopback/context

1.19.0 (2019-06-06)

Features

  • context: add [@global](https://github.com/global)Interceptor decorator (1010a37)

1.18.0 (2019-06-03)

Features

  • replace tslint with eslint (44185a7)

1.17.1 (2019-05-31)

Note: Version bump only for package @loopback/context

1.17.0 (2019-05-30)

Bug Fixes

  • context: allow injection when a class decorator returns a mixin (28cc0a0)
  • context: allow optional for a binding without value getter (e211a71)

Features

  • context: make parent public for invocation context (19856c6)

Performance Improvements

  • context: cache description of method parameter injections (127f7c2)

1.16.0 (2019-05-23)

Features

  • context: add singleValue to ContextView (22bd57f)
  • context: leave local bindings and parent unchanged during close (198af88)
  • context: support binding config and @inject.config (a392852)

1.15.0 (2019-05-14)

Features

  • context: add binding comparator to sort bindings (ae3d61f)

1.14.0 (2019-05-10)

Bug Fixes

  • context: close invocation context only after async is done (e71e990)

Features

  • context: add more getters for InvocationContext (12a3ecb)

1.13.0 (2019-05-09)

Features

  • context: add support for method interceptors (293188d)

1.12.1 (2019-05-06)

Note: Version bump only for package @loopback/context

1.12.0 (2019-04-20)

Features

  • build: add more TypeScript “strict” checks (866aa2f)
  • context: add [@inject](https://github.com/inject).binding and improve [@inject](https://github.com/inject).setter (a396274)
  • context: fix generic typing for BindingFilter (372b406)

1.11.0 (2019-04-11)

Bug Fixes

  • context: instantiate class with non-injected arguments (6699825)

Features

  • context: make Injection.metadata a required property (dcc9cac)

1.10.0 (2019-04-09)

Features

  • context: always pass the session to ResolverFunction (bf36532)

1.9.0 (2019-04-05)

Bug Fixes

  • context: clear binding cache upon scope or value getter changes (122fe7b)

Features

  • context: add a helper function to create a getter from binding filter (41248f3)
  • context: add binding.toAlias() to resolve values from another binding (15dcd16)
  • context: pass resolution options into binding.getValue() (705dcd5)

1.8.1 (2019-03-22)

Note: Version bump only for package @loopback/context

1.8.0 (2019-03-22)

Features

  • context: allow namespace tag for createBindingFromClass (f6fe55e)
  • context: honor binding scope from @bind (3b30f01)
  • context: improve typing for binding related methods (f6cf0c6)
  • context: tidy up context for resolving injections of a singleton binding (f5bf43c)

1.7.0 (2019-03-12)

Features

  • context: add @inject.view and extend @inject for multiple bindings (d64268b)
  • context: add events to ContextView (fb10efc)
  • context: introduce context view to watch bindings by filter (04209f7)

1.6.0 (2019-02-25)

Features

  • context: introduce async context observers for bind/unbind events (e5e5fc4)

1.5.1 (2019-02-08)

Note: Version bump only for package @loopback/context

1.5.0 (2019-01-28)

Features

  • context: add default template argument for BindingAddress (7113105)
  • context: binding filters (ff85e74)

1.4.1 (2019-01-14)

Bug Fixes

  • rework tslint comments disabling “no-unused-variable” rule (a18a3d7)

1.4.0 (2018-12-20)

Features

  • context: add [@bind](https://github.com/bind) to decorate classes with more information (b8f9792)

1.3.0 (2018-12-13)

Features

  • context: add binding.apply(templateFn) (f046b30)

1.2.0 (2018-11-26)

Features

  • rest: allow body parsers to be extended (86bfcbc)

1.1.0 (2018-11-14)

Features

  • context: add support for context.add(binding) (8f77cef)
  • core: allow components to expose an array of bindings (eae0da3)

1.0.1 (2018-11-08)

Note: Version bump only for package @loopback/context

0.13.2 (2018-10-08)

Note: Version bump only for package @loopback/context

0.13.1 (2018-10-05)

Note: Version bump only for package @loopback/context

0.13.0 (2018-10-03)

Features

  • context: add a helper Getter.fromValue() (4764166)

0.12.13 (2018-09-28)

Note: Version bump only for package @loopback/context

0.12.12 (2018-09-27)

Note: Version bump only for package @loopback/context

0.12.11 (2018-09-25)

Note: Version bump only for package @loopback/context

0.12.10 (2018-09-21)

Note: Version bump only for package @loopback/context

0.12.9 (2018-09-19)

Note: Version bump only for package @loopback/context

0.12.8 (2018-09-12)

Note: Version bump only for package @loopback/context

0.12.7 (2018-09-10)

Note: Version bump only for package @loopback/context

0.12.6 (2018-09-08)

Note: Version bump only for package @loopback/context

0.12.5 (2018-08-24)

Note: Version bump only for package @loopback/context

0.12.4 (2018-08-15)

Bug Fixes

0.12.3 (2018-08-08)

Note: Version bump only for package @loopback/context

0.12.2 (2018-07-21)

Note: Version bump only for package @loopback/context

0.12.1 (2018-07-20)

Note: Version bump only for package @loopback/context

0.12.0 (2018-07-20)

Note: Version bump only for package @loopback/context

0.11.11 (2018-07-11)

Note: Version bump only for package @loopback/context

0.11.10 (2018-07-10)

Note: Version bump only for package @loopback/context

0.11.9 (2018-06-28)

Note: Version bump only for package @loopback/context

0.11.8 (2018-06-27)

Note: Version bump only for package @loopback/context

0.11.7 (2018-06-20)

Note: Version bump only for package @loopback/context

0.11.6 (2018-06-11)

Bug Fixes

  • context: calculate # of method params with default (f5f5bde)

0.11.5 (2018-06-09)

Note: Version bump only for package @loopback/context

0.11.4 (2018-06-09)

Note: Version bump only for package @loopback/context

0.11.3 (2018-06-08)

Bug Fixes

  • make the code compatible with TypeScript 2.9.x (37aba50)

0.11.2 (2018-05-20)

Note: Version bump only for package @loopback/context

0.11.1 (2018-05-14)

Bug Fixes

  • change index.d.ts files to point to dist8 (42ca42d)

0.11.0 (2018-05-14)

Features

  • context: add more utils to resolve valueOrPromises (cc55ef5)

0.10.1 (2018-05-08)

Note: Version bump only for package @loopback/context

0.10.0 (2018-05-03)

Features

  • context: allow tags to have an optional value (95acd11)
  • add helper package “dist-util” (532f153)

0.9.0 (2018-05-03)

Features

  • context: allow tags to have an optional value (95acd11)
  • add helper package “dist-util” (532f153)

0.8.1 (2018-04-25)

Note: Version bump only for package @loopback/context

0.8.0 (2018-04-16)

Note: Version bump only for package @loopback/context

0.7.0 (2018-04-12)

Features

  • metadata: add strongly-typed metadata accessors (45f9f80)

0.6.1 (2018-04-11)

Note: Version bump only for package @loopback/context

0.6.0 (2018-04-11)

Bug Fixes

  • change file names to fit advocated naming convention (0331df8)

Features

  • context: typed binding keys (685195c)

0.5.3 (2018-04-06)

Note: Version bump only for package @loopback/context

0.5.2 (2018-04-04)

Note: Version bump only for package @loopback/context

0.5.1 (2018-04-02)

Note: Version bump only for package @loopback/context

0.5.0 (2018-03-29)

Bug Fixes

  • context: disable deep clone of injection metadata (7d8a84c)

BREAKING CHANGES

  • context: the metadata parameter of @inject is no longer cloned deeply. It’s still cloned shallowly.

0.4.0 (2018-03-23)

Features

  • context: add optional typing for Binding (3c494fa)

0.3.0 (2018-03-21)

Note: Version bump only for package @loopback/context

0.2.4 (2018-03-14)

Note: Version bump only for package @loopback/context

0.2.3 (2018-03-13)

Note: Version bump only for package @loopback/context

0.2.2 (2018-03-08)

Note: Version bump only for package @loopback/context

0.2.1 (2018-03-06)

Bug Fixes

0.2.0 (2018-03-01)

Note: Version bump only for package @loopback/context

0.1.2 (2018-03-01)

Features

  • context: add type as a generic parameter to ctx.get() and friends (24b217d)
  • context: allow context.find by a filter function (9b1e26c)
  • context: use Readonly to guard immutable values (871ddef)

BREAKING CHANGES

  • context: ctx.get() and ctx.getSync() require a type now. See the example below for upgrade instructions:
- const c: MyController = await ctx.get('MyController');
+ const c = await ctx.get<MyController>('MyController');

isPromise was renamed to isPromiseLike and acts as a type guard for PromiseLike, not Promise. When upgrading affected code, you need to determine whether the code was accepting any Promise implementation (i.e. PromiseLike) or only native Promises. In the former case, you should use isPromiseLike and potentially convert the userland Promise instance to a native Promise via Promise.resolve(promiseLike). In the latter case, you can replace isPromise(p) with p instanceof Promise.

0.1.1 (2018-02-23)

Bug Fixes

  • context: fix optional param injection for methods (801a82d)

0.1.0 (2018-02-21)

Note: Version bump only for package @loopback/context

4.0.0-alpha.32 (2018-02-15)

Features

  • context: formalize injection metadata as an interface (7ffc1e5)

4.0.0-alpha.31 (2018-02-07)

Bug Fixes

  • build: fix tslint config and slipped violations (22f8e05)
  • context: address review comments (3925296)
  • context: pass metadata to [@inject](https://github.com/inject).tag (27e26e9)

build

Features

  • context: add @inject.context for context injection (6e0deaf)
  • context: add decorator & optional attrs to injection metadata (3a1c7de)
  • context: add name to context (21e1daf)
  • context: add unbind() to allow remove bindings by key (b9c3893)
  • context: enhance binding caching to be context aware (7b7eb30)
  • context: reports the resolution path for circular deps (bc4ce20)

BREAKING CHANGES

  • Support for Node.js version lower than 8.0 has been dropped. Please upgrade to the latest Node.js 8.x LTS version.

Co-Authored-by: Taranveer Virk taranveer@virk.cc

4.0.0-alpha.30 (2018-02-04)

Bug Fixes

  • remove console output from tests (ff4a320)

4.0.0-alpha.29 (2018-01-30)

Note: Version bump only for package @loopback/context

4.0.0-alpha.28 (2018-01-29)

Note: Version bump only for package @loopback/context

4.0.0-alpha.27 (2018-01-26)

Bug Fixes

  • apply source-maps to test errors (76a7f56), closes #602
  • make mocha self-contained with the source map support (7c6d869)

4.0.0-alpha.26 (2018-01-19)

Bug Fixes

  • address review comments (76d3ec3)
  • context: add resolution-session.ts for api docs (25a9e91)
  • context: allow session to be passed into @inject.getter (0517ea1)
  • context: clean up the circular dependency tests (5c35ccd)
  • context: fix the test to avoid UnhandledPromiseRejectionWarning (6a82c4d)
  • make sure TS compiler infer undefined (4c48ece)
  • propagate errors via promises (204c1b7)
  • use version range for @types/debug (3adbc0b)

Features

  • context: add @inject.tag to allow injection by a tag (fc8f260)
  • context: add more debug statements (38eab3e)
  • context: enable detection of circular dependencies (72b4190)
  • context: forbid bind().to() a Promise instance (#854) (85ffa8b)
  • context: track injections with ResolutionSession (cd4848e)
  • context: use one stack to track bindings and injections (b2f7eda)

BREAKING CHANGES

  • context: It is no longer possible to pass a promise instance to .to() method of a Binding. Use .toDynamicValue() instead. Consider deferring the async computation (that produced the promise instance you are binding) into the dynamic value getter function, i.e. start the async computation only from the getter function.

An example diff showing how to upgrade your existing code:

  • ctx.bind(‘bar’).to(Promise.resolve(‘BAR’));
  • ctx.bind(‘bar’).toDynamicValue(() => Promise.resolve(‘BAR’));

4.0.0-alpha.25 (2018-01-11)

Bug Fixes

Features

  • context: export function to build binding key with path (fd804a5)

Reverts

4.0.0-alpha.24 (2017-12-21)

Note: Version bump only for package @loopback/context

4.0.0-alpha.23 (2017-12-15)

Bug Fixes

  • Improve test coverage for metadata inspector (3b4b552)

Features

  • context: Add decorator factories (f517570)
  • Add metadata inspector (c683019)
  • Use decorator factories (88ebd21)

4.0.0-alpha.22 (2017-12-11)

Bug Fixes

  • Fix node module names in source code headers (0316f28)

4.0.0-alpha.21 (2017-11-29)

Features

  • context: Allow patterns to be RegExp (991cf38)

4.0.0-alpha.20 (2017-11-14)

Features

  • context: Add support for method dependency injection (df1c879)

4.0.0-alpha.19 (2017-11-09)

Note: Version bump only for package @loopback/context

4.0.0-alpha.18 (2017-11-06)

Note: Version bump only for package @loopback/context

4.0.0-alpha.17 (2017-10-31)

Note: Version bump only for package @loopback/context

4.0.0-alpha.16 (2017-10-31)

Note: Version bump only for package @loopback/context

4.0.0-alpha.15 (2017-10-25)

Bug Fixes

Features

  • context: Add isBound() and more apidocs to Context (39932be)
  • context: Add toJSON() for Context & Binding (b6ce426)