@live-change/dao 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/DaoProxy.js CHANGED
@@ -56,11 +56,11 @@ class DaoProxy extends EventEmitter {
56
56
  observable.respawn = (...args) => {
57
57
  const newObservable = this.observables.get(spath)
58
58
  if(newObservable && newObservable !== observable) {
59
- observable.target = newObservable
59
+ observable.observable = newObservable
60
60
  } else if(this.dao) {
61
- observable.target = this.dao.observable(what)
61
+ observable.observable = this.dao.observable(what)
62
62
  } else {
63
- observable.target = null
63
+ observable.observable = null
64
64
  }
65
65
  oldRespawn.call(observable, ...args)
66
66
  }
@@ -30,11 +30,11 @@ class ExtendedObservableList extends ObservableList {
30
30
  }
31
31
  this.list = undefined
32
32
  }
33
- ObservableList.dispose.apply(this)
33
+ super.dispose.apply(this)
34
34
  }
35
35
 
36
36
  respawn() {
37
- ObservableList.respawn.apply(this)
37
+ super.respawn.apply(this)
38
38
  this.observableList.observe(this)
39
39
  }
40
40
 
@@ -282,6 +282,9 @@ class ObservableList extends Observable {
282
282
  getValue() {
283
283
  return this.list
284
284
  }
285
+ getError() {
286
+ return this.savedError
287
+ }
285
288
  }
286
289
 
287
290
  module.exports = ObservableList
@@ -10,7 +10,8 @@ class ObservablePromiseProxy extends Observable {
10
10
  this.observer = (signal, ...args) => {
11
11
  this.fireObservers(signal, ...args)
12
12
  }
13
- promise.then((result) => {
13
+ this.promise = promise
14
+ this.promise.then((result) => {
14
15
  if(result.observe) {
15
16
  this.init(result)
16
17
  } else {
@@ -51,7 +52,9 @@ class ObservablePromiseProxy extends Observable {
51
52
  }
52
53
  }
53
54
  getValue() {
54
- return promise.then(r => r.getValue())
55
+ if(!this.observable) return undefined
56
+ if(!this.observable.getValue) return undefined
57
+ return this.observable.getValue()
55
58
  }
56
59
  }
57
60
 
@@ -17,6 +17,7 @@ class ObservableProxy extends Observable {
17
17
  setTarget(observable) {
18
18
  if(this === observable) throw new Error('infinite loop')
19
19
  if(!this.disposed && this.observable) {
20
+ //console.log("SET TARGET UNOBSERVE TARGET")
20
21
  this.observable.unobserve(this.observer)
21
22
  for(let [object, property] of this.properties) {
22
23
  this.observable.unbindProperty(object, property)
@@ -27,6 +28,7 @@ class ObservableProxy extends Observable {
27
28
  }
28
29
  this.observable = observable
29
30
  if(!this.disposed && this.observable) {
31
+ //console.log("SET TARGET OBSERVE TARGET")
30
32
  this.observable.observe(this.observer)
31
33
  for(let [object, property] of this.properties) {
32
34
  this.observable.bindProperty(object, property)
@@ -51,6 +53,7 @@ class ObservableProxy extends Observable {
51
53
 
52
54
  reobserveTarget() {
53
55
  if(!this.disposed && this.observable) {
56
+ //console.log("REOBSERVE TARGET!", this.observable)
54
57
  this.observable.unobserve(this.observer)
55
58
  this.observable.observe(this.observer)
56
59
  }
@@ -64,13 +67,27 @@ class ObservableProxy extends Observable {
64
67
  catch(...args) {
65
68
  let beenDisposed = this.disposed
66
69
  Observable.prototype.catch.apply(this, args)
67
- if(!beenDisposed) this.reobserveTarget()
70
+ if(!beenDisposed) {
71
+ if(this.observable.getError) {
72
+ const error = this.observable.getError()
73
+ if(error) this.fireObserver(args[0], 'error', error)
74
+ } else {
75
+ this.reobserveTarget()
76
+ }
77
+ }
68
78
  }
69
79
 
70
80
  observe(...args) {
71
81
  let beenDisposed = this.disposed
72
82
  Observable.prototype.observe.apply(this, args)
73
- if(!beenDisposed) this.reobserveTarget()
83
+ if(!beenDisposed) {
84
+ if(this.observable.getValue) {
85
+ const value = this.observable.getValue()
86
+ if(value !== undefined) this.fireObserver(args[0], 'set', value)
87
+ } else {
88
+ this.reobserveTarget()
89
+ }
90
+ }
74
91
  }
75
92
 
76
93
  bindProperty(object, property) {
@@ -160,6 +160,10 @@ class ObservableValue extends Observable {
160
160
  getValue() {
161
161
  return this.value
162
162
  }
163
+
164
+ getError() {
165
+ return this.savedError
166
+ }
163
167
  }
164
168
 
165
169
  module.exports = ObservableValue
@@ -514,9 +514,11 @@ class ReactiveServerConnection extends EventEmitter {
514
514
  handleUnobserve(message) {
515
515
  const path = message.what
516
516
  const spath = JSON.stringify(path)
517
- //debug('handle unobserve', spath)
517
+ debug('handle unobserve', spath)
518
518
  const observation = this.observations.get(spath)
519
- if(!observation) throw new Error("Unobserve of not observed "+spath)
519
+ if(!observation) {
520
+ throw new Error("Unobserve of not observed "+spath)
521
+ }
520
522
  observation.unobserve(message.pushed)
521
523
  }
522
524
 
package/package.json CHANGED
@@ -36,5 +36,5 @@
36
36
  "scripts": {
37
37
  "test": "NODE_ENV=test blue-tape tests/*"
38
38
  },
39
- "version": "0.3.13"
39
+ "version": "0.3.14"
40
40
  }