- ObservableGroupMap.ts: remove console.log #289
- Make observable promise's values safer type wise #295 Closes Typing IRejectedPromise and IPendingPromise to hold an unknown value Users of fromPromise may get new compile errors for invalid code. See PR for details.
- Fixed #214 createViewModel doesn't work correctly with setters for computed values. (#286)
- Use computedFn name if explicitly set in options #277.
- skipped
- Fixed build issue causing decorators in the final build version not to be picked up correctly. Fixes #279
- [BREAKING] Dropped previously deprecated
asyncAction
. Usemobx.flow
instead. - [BREAKING] Dropped previously deprecated
actionAsync
. Usemobx.flow
+mobx.flowResult
instead. - [BREAKING] Dropped previously deprecated
whenAsync
. Usemobx.when
instead. - [BREAKING] Dropped previously deprecated
whenWithTimeout
. Usemobx.when
instead. - [BREAKING] Added support for MobX 6.0.0. Minimim required MobX version is 6.0.0.
- #245 Add ObservableGroupMap.
- #250 Fix #249: lazyObservable: pending.set not wrapped in allowStateChanges.
- #251 Fix fromStream initialValue not typed correctly.
- Another fix for invalid
actionAsync
context through #246 by xaviergonz
- Another fix for invalid
actionAsync
context when promises resolve at the same time in different actionAsync calls through #244 by xaviergonz
- Fixed tree-shaking mobx-utils, see #238 by IgorBabkin
- Fix invalid
actionAsync
context when promises resolve at the same time in different actionAsync calls, by xaviergonz through #240
- Support all
IComputedOptions
increateTransformer
, by @samdroid-apps through #224 - Make sure that transformers don't memorize when used outside a reactive context. Fixes #116 through #228 by @upsuper
- Fix for
actionAsync
when awaiting promises that resolve immediately.
- Fix for
actionAsync
giving errors when it didn't await a task inside. task
now supports plain values as well.
Note: the minimum required MobX version for this release has been bumped to "mobx": "^4.13.1 || ^5.13.1"
- Added
actionAsync
(not to be confused withasyncAction
) as an alternative to flows, see #217 by xaviergonz - Fixed a typing issue for the pending handler of
fromPromise
, see #208 by Ricardo-Marques computedFn
now supports the standard options accepted by classiccomputed
, see #215 by hearnden- Fixed #205, something with to unobserved properties and
createViewModel
. See #216 by wrench7
- Fixed
cannot read property enumerable of undefined
error, #191 through #198 by @dr0p - Improved typings of
createViewModel
trough #195 by @jordansexton
Introduced computedFn
, to support using arbitrary functions as computed! Implements #184 through #190
- Observable getters defined on prototype are now included in the view model. Fixes #100 through #188 by wrench7
createViewModel
now has an additional fieldchangedValues
on the returned viewmodel, that returns a map with all the pending changes. See #172 by @ItamarShDev. Fixes #171 and #173fromPromise().case
: if theonFulfilled
handler is omitted,case
will now return the resolved value, rather thanundefined
. See #167 by @JefHellemanscreateViewModel
will now respect the enumerability of properties. See #169 by dr0p
fromPromise
now accepts a second argument, a previous obsevable promise, that can be used to temporarily show old values until the new promise has resolved. See #160 by @ItamarShDevcreateTransformer
can now also memoize on function arguments, see #159 by @hc-12
- Fixed #158,
deepObserve
not being published
- Introduced
deepObserve
utility, through #154
- Improved typings of
toStream
, by @pelotom through #147 - Improved typings of
fromStream
,IStreamListener
is now an explicit interface. Fixes #143
- Add
sideEffects: false
field in package.json to enable maximal tree shaking for webpack. - Fixed #134, prevent primitive key id collisions in createTransformer
- Fixed typing issue where the
.value
field is not available without having a type assertion of the state first
- Added MobX 5 compatibility. The package is also compatible with MobX 4.3.1+.
createViewModel
now also copies computed properties to the view Model. Implements [#100].(mobxjs#100). Implemented through #126 by @RafalFilipek.
- passing a
fromPromise
based promise tofromPromise
no longer throws an exception. Fixes #119 - added viewModel
resetProperty
to typescript typings, fixes #117 through #118 by @navidjh - Added
moveItem(array, fromIndex, toIndex)
utility, as replacement for the droppedObservableArray.move
in MobX 4. Trough #121 by @jeffijoe - Fixed incorrect peer dependency, #115 by @xaviergonz
Updated mobx-utils to use MobX 4. No futher changes
toStream
now accepts a second argument,fireImmediately=false
, which, whentrue
, immediately pushes the current value to the stream. Fixes #82
- Fixed issue where
whenAsync
was not exposed correctly. - Added
timeout
parameter towhenAsync
- Switched to rollup for bundling, bundle non-minified and include a es module based build. See #81 by @mijay
- Introduced
whenAsync
, which is like normalwhen
, except that thiswhen
will return a promise that resolves when the expression becomes truthy. See #66 and #68, by @daedalus28
- It is now possible to directly pass a
(resolve, reject) => {}
function tofromPromise
, instead of a promise object - BREAKING
fromPromise
no longer creates a wrapping object, but rather extends the given promise, #45 - BREAKING Fixed #54, the resolved value of a promise is no longer deeply converted to an observable
- BREAKING Dropped
fromPromise().reason
- BREAKING Improved typings of
fromPromise
. For example, thevalue
property is now only available if.state === "resolved"
(#41) - BREAKING Dropped optional
initialvalue
param fromfromPromise
. usefromPromise.fulfilled(value)
instead to create a promise in some ready state - Introduced
fromPromise.reject(reason)
andfromPromise.resolve(value?)
to create a promise based observable in a certain state, see #39 - Fixed #56, observable promises attributes
state
andvalue
are now explicit observables
See the docs for details, but the gist of it:
import {asyncAction} from "mobx-utils"
mobx.configure({ enforceActions: "observed" }) // don't allow state modifications outside actions
class Store {
@observable githubProjects = []
@state = "pending" // "pending" / "done" / "error"
@asyncAction
*fetchProjects() { // <- note the star, this a generator function!
this.githubProjects = []
this.state = "pending"
try {
const projects = yield fetchGithubProjectsSomehow() // yield instead of await
const filteredProjects = somePreprocessing(projects)
// the asynchronous blocks will automatically be wrapped actions
this.state = "done"
this.githubProjects = filteredProjects
} catch (error) {
this.state = "error"
}
}
}
- Fixed #40,
now()
now returns current date time if invoked from outside a reactive context
- Fixed #44, lazyObservable not accepting an array as initial value.
- ViewModel methods are now automatically bound, see #59, by @tekacs
- Fixed stream issue regarding disposing already completed streams, see #57, by @rkorohu
- Improved typings of lazy observables, see #38 by @jamiewinder
- Fixed several deprecation messages related to MobX 3 upgrade (see #36 by RainerAtSpirit)
- Fixed #26: Rejected promises not playing nicely with JQuery
- Fixed #25: Refreshing a lazy observable should not accidentally refresh it if it didn't start yet
- Upgraded to MobX 3
- Fixed #34: fromStream threw when being used in strict mode
- Introduced
reset()
on lazyObservable, see #28 by @daitr92
- Fixed #32: make sure lazyObservable and fromResources can be initiated from computed values
- Introduced
now(interval?)
, to get an observable that returns the current time at a specified interval
- Introduced
fromStream
andtoStream
for interoperability with TC 39 / RxJS observable streams, see Mobx #677
- Introduced
refresh()
to lazy observables. By @voxuanthinh, see #20
- Introduced
chunkProcessor
by Benjamin Bock, see #19 - Introduced
resetProperty(propName)
for ViewModels, by Vojtech Novak, see #17
- observable promises now support a
.case()
method to easily switch over different promise states. See #13 by @spion createViewModel
now supports arrays and maps as well, see #12 by @vonovak
- Implemented #4: Expose constants for promise states:
PENDING
,REJECTED
andFULFILLED
. - Implemented #6: the rejection reason of
fromPromise
is now stored in.value
instead of.reason
(which has been deprecated). - Improved typings of
fromPromise
, fixes #8