UNPKG

mobx-utils

Version:

Utility functions and common patterns for MobX

178 lines (112 loc) 8.66 kB
# 5.4.1 * Fixed `cannot read property enumerable of undefined` error, [#191](https://github.com/mobxjs/mobx-utils/issues/191) through [#198](https://github.com/mobxjs/mobx-utils/pull/198) by [@dr0p](https://github.com/dr0p) * Improved typings of `createViewModel` trough [#195](https://github.com/mobxjs/mobx-utils/pull/195) by [@jordansexton](https://github.com/jordansexton) # 5.4.0 Introduced `computedFn`, to support using arbitrary functions as computed! Implements [#184](https://github.com/mobxjs/mobx-utils/issues/184) through [#190](https://github.com/mobxjs/mobx-utils/pull/190) # 5.3.0 * Observable getters defined on prototype are now included in the view model. Fixes [#100](https://github.com/mobxjs/mobx-utils/issues/100#issuecomment-401765101) through [#188](https://github.com/mobxjs/mobx-utils/pull/188) by [wrench7](https://github.com/wrench7) # 5.2.0 * `createViewModel` now has an additional field `changedValues` on the returned viewmodel, that returns a map with all the pending changes. See [#172](https://github.com/mobxjs/mobx-utils/pull/172) by [@ItamarShDev](https://github.com/ItamarShDev). Fixes [#171](https://github.com/mobxjs/mobx-utils/issues/171) and [#173](https://github.com/mobxjs/mobx-utils/issues/173) * `fromPromise().case`: if the `onFullfilled` handler is omitted, `case` will now return the resolved value, rather than `undefined`. See [#167](https://github.com/mobxjs/mobx-utils/pull/167/) by [@JefHellemans](https://github.com/JefHellemans) * `createViewModel` will now respect the enumerability of properties. See [#169](https://github.com/mobxjs/mobx-utils/pull/169) by [dr0p](https://github.com/dr0p) # 5.1.0 * `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](https://github.com/mobxjs/mobx-utils/pull/160) by [@ItamarShDev](https://github.com/ItamarShDev) * `createTransformer` can now also memoize on function arguments, see [#159](https://github.com/mobxjs/mobx-utils/pull/159) by [@hc-12](https://github.com/hc-12) # 5.0.4 * Fixed [#158](https://github.com/mobxjs/mobx-utils/issues/158), `deepObserve` not being published # 5.0.3 * Introduced `deepObserve` utility, through [#154](https://github.com/mobxjs/mobx-utils/pull/154) # 5.0.2 * Improved typings of `toStream`, by [@pelotom](https://github.com/pelotom) through [#147](https://github.com/mobxjs/mobx-utils/pull/147) * Improved typings of `fromStream`, `IStreamListener` is now an explicit interface. Fixes [#143](https://github.com/mobxjs/mobx-utils/issues/143) # 5.0.1 * 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 # 5.0.0 * 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].(https://github.com/mobxjs/mobx-utils/issues/100). Implemented through [#126](https://github.com/mobxjs/mobx-utils/pull/126) by [@RafalFilipek](https://github.com/RafalFilipek). # 4.0.1 * passing a `fromPromise` based promise to `fromPromise` no longer throws an exception. Fixes [#119](https://github.com/mobxjs/mobx-utils/issues/119) * added viewModel `resetProperty` to typescript typings, fixes [#117](https://github.com/mobxjs/mobx-utils/issues/117) through [#118](https://github.com/mobxjs/mobx-utils/pull/118) by @navidjh * Added `moveItem(array, fromIndex, toIndex)` utility, as replacement for the dropped `ObservableArray.move` in MobX 4. Trough [#121](https://github.com/mobxjs/mobx-utils/pull/121) by @jeffijoe * Fixed incorrect peer dependency, [#115](https://github.com/mobxjs/mobx-utils/pull/115) by @xaviergonz # 4.0.0 Updated mobx-utils to use MobX 4. No futher changes # 3.2.2 * `toStream` now accepts a second argument, `fireImmediately=false`, which, when `true`, immediately pushes the current value to the stream. Fixes [#82](https://github.com/mobxjs/mobx-utils/issues/82) # 3.2.1 * Fixed issue where `whenAsync` was not exposed correctly. * Added `timeout` parameter to `whenAsync` # 3.2.0 * Switched to rollup for bundling, bundle non-minified and include a es module based build. See [#81](https://github.com/mobxjs/mobx-utils/pull/81) by [@mijay](https://github.com/mijay) # 3.1.1 * Introduced `whenAsync`, which is like normal `when`, except that this `when` will return a promise that resolves when the expression becomes truthy. See #66 and #68, by @daedalus28 # 3.0.0 ### Revamped `fromPromise`: * It is now possible to directly pass a `(resolve, reject) => {}` function to `fromPromise`, 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, the `value` property is now only available if `.state === "resolved"` (#41) * **BREAKING** Dropped optional `initialvalue` param from `fromPromise`. use `fromPromise.fullfilled(value)` instead to create a promise in some ready state * Introduced `fromPromise.reject(reason)` and `fromPromise.resolve(value?)` to create a promise based observable in a certain state, see #39 * Fixed #56, observable promises attributes `state` and `value` are now explicit observables ### Introduced `asyncAction` See the [docs](https://github.com/mobxjs/mobx-utils#asyncaction) for details, but the gist of it: ```javascript 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" } } } ``` ### Other * Fixed #40, `now()` now returns current date time if invoked from outside a reactive context # 2.0.2 * 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 # 2.0.1 * 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 # 2.0.0 * Upgraded to MobX 3 # 1.1.6 * Fixed #34: fromStream threw when being used in strict mode * Introduced `reset()` on lazyObservable, see #28 by @daitr92 # 1.1.5 * Fixed #32: make sure lazyObservable and fromResources can be initiated from computed values # 1.1.4 * Introduced `now(interval?)`, to get an observable that returns the current time at a specified interval # 1.1.3 * Introduced `fromStream` and `toStream` for interoperability with TC 39 / RxJS observable streams, see [Mobx #677](https://github.com/mobxjs/mobx/issues/677) # 1.1.2 * Introduced `refresh()` to lazy observables. By @voxuanthinh, see [#20](https://github.com/mobxjs/mobx-utils/pull/20) # 1.1.1 * Introduced `chunkProcessor` by Benjamin Bock, see [#19](https://github.com/mobxjs/mobx-utils/pull/19) * Introduced `resetProperty(propName)` for ViewModels, by Vojtech Novak, see [#17](https://github.com/mobxjs/mobx-utils/pull/17) # 1.1.0 * observable promises now support a `.case()` method to easily switch over different promise states. See [#13](https://github.com/mobxjs/mobx-utils/pull/13) by @spion * `createViewModel` now supports arrays and maps as well, see [#12](https://github.com/mobxjs/mobx-utils/pull/12) by @vonovak # 1.0.1 * Implemented #4: Expose constants for promise states: `PENDING`, `REJECTED` and `FULFILLED`. * 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