Releases: jpex-js/jpex
Releases · jpex-js/jpex
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.0
v4.1.0
v4.0.0
4.0.0 (2020-09-25)
Bug Fixes
Code Refactoring
- removed $options functionality (e357aaa), closes #80
- stop parsing functions to extract dependencies (14db702), closes #77
Features
- add flags for node modules, globals, and optional (32fa3d4), closes #75
- auto resolve globals (8c01223), closes #69
- change signatures (240b6db), closes #68
- drop IE support (53508cc), closes #83
- dual type alias (833c205), closes #88
- nicer syntax for resolveWith (2489926), closes #78
- precedence config option (f013c88), closes #81
- use babel plugin lib (3010bd1), closes #94
- use resolve babel parser (79bb4b4), closes #84
BREAKING CHANGES
- an es5-specific build is included in the dist
- any $options code will no longer work
- will now need to explicitly delcare dependencies or use TS inference
2.1.0
- if an option in the
properties
config is null, jpex will no longer throw an error - Passing
$options
into aJpex as a Service
service now works Jpex.register.service().bindToInstance()
allows you to bind dependencies to a service instanceJpex.$encase
method allows you to wrap a function with a number of dependencies
2.0.0
2.0.0
Features
- Can now pass in a
config
option when extending a class. Any properties of the config option will be used as default values for that class and its descendants. - The default lifecycle for factories registered against a class can now be configured using the
defaultLifecycle
option. - Methods option has been added (which replaces the prototype option from v1).
- Properties option has been added, allowing you to predefine getters, setters, and watchers on any instance properties.
- the
bindToInstance
option can now accept a nested property name, i.e.bindToInstance : 'foo.bah'
- Node-specific code has been isolated so the core jpex module can be included in any webpack/browserify build. (see depcrecation of jpex-web below)
- Added a pre-compiled build of Jpex at
jpex/dist/jpex.js
andjpex/dist/jpex.min.js
- Default factories (
$timeout
,$promise
, etc.) have been separated from the core module. They now must be installed separately from the jpex-defaults, jpex-node, and jpex-web packages. - The
$resolve
method is now available as a static method on every class, so dependencies can be resolved withClass.$resolve(name)
. This allows for Jpex to be used as a container rather than forcing the class instantiation pattern. $resolve
can be called with an array of dependencies to resolve instead of just one.- Cached factories (i.e. with a
class
orapplication
lifecycle) can be cleared withClass.$clearCache()
. - Added
decorators
that allow a factory to be altered before being resolved. Can be registered like normal factories i.e.Class.register.decorator(name, fn)
- A complete plugin API has been created that allows plugins to hook into a number of lifecycle events.
Breaking Changes
- The
prototype
option has been replaced withmethods
- The jpex-web version of Jpex has been deprecated. Instead, Jpex can be
required
'd with webpack/browserify, or a web-safe js file can be found atjpex/dist/jpex.js/
- Internal variables have been renamed. e.g.
Class._factories
is nowClass.$$factories
. - Default factories (
$timeout
,$promise
, etc.) have been separated from the core module. They now must be installed separately from the jpex-defaults, jpex-node, and jpex-web packages. - After deprecating its use in v1.3.0, the
singleton
option has been removed from factory registration.Class.register.factory(name, fn, true/false)
should now be written asClass.register.factory(name, fn).lifecycle.application()
- Following depcrecation in v1.4.0, the static methods
Typeof
andCopy
have been removed. - Factory registration methods have been renamed to camelCase:
Jpex.Register.Factory
becomesJpex.register.factory
, for example. Interfaces
have been completely removed from the module. This was an experimental feature that in the end was more overhead than it was worth.- A number of spurious factory types have been removed: enum, errorType, file, folder, interface, nodeModule - although the nodeModule factory type is still available via the jpex-node package as
Class.register.node_module
. - Ancestoral dependencies have been removed so depending on
["^someParentFactory"]
will no longer work. The equivalent can now be achieved with decorators.
1.4.1
Bugs
$copy.extend
no longer combines arrays, but instead replaces the previous array value.$timeout $immediate $interval $tick
bug fixed when attaching to a class instance.- Added a
clear()
method to the timer factories that clear the respective timeouts.