statebus 7.0.4 → 7.0.7
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/{clients.js → client-library.js} +256 -127
- package/extras/coffee.js +12 -0
- package/extras/sockjs.js +27 -0
- package/extras/tests.js +58 -58
- package/package.json +6 -4
- package/{servers.js → server-library.js} +134 -97
- package/statebus.js +86 -59
package/extras/tests.js
CHANGED
|
@@ -129,13 +129,13 @@ test(function prune (done) {
|
|
|
129
129
|
|
|
130
130
|
test(function auto_vars (done) {
|
|
131
131
|
var n = require('../statebus')()
|
|
132
|
-
n('r/*').
|
|
132
|
+
n('r/*').getter = function (rest, o) {return {rest, o}}
|
|
133
133
|
log(n.get('r/3'))
|
|
134
134
|
assert(n.get('r/3').rest === '3')
|
|
135
135
|
assert(n.get('r/3').o === undefined,
|
|
136
136
|
'o is not undefined: ' + JSON.stringify(n.get('r/3')))
|
|
137
137
|
|
|
138
|
-
n('v/*').
|
|
138
|
+
n('v/*').getter = function (vars, star) {return {vars: vars, rest: star}}
|
|
139
139
|
log(n.get('v/[3,9 4]').rest)
|
|
140
140
|
log(n.get('v/[3,9 4]').rest.match(/$Bad/))
|
|
141
141
|
assert(n.get('v/[3,9 4]').rest === '[3,9 4]')
|
|
@@ -145,7 +145,7 @@ test(function auto_vars (done) {
|
|
|
145
145
|
assert(n.get('v/[3,9 4]').vars.match(/^Bad/))
|
|
146
146
|
assert(Array.isArray(n.get('v/[3,4]').vars))
|
|
147
147
|
|
|
148
|
-
n('a/*').
|
|
148
|
+
n('a/*').setter = function (t, k, obj) {
|
|
149
149
|
log('k:', k, 't:', t, 'o:', obj)
|
|
150
150
|
assert(k === 'a/foo')
|
|
151
151
|
assert(typeof obj === 'object')
|
|
@@ -158,7 +158,7 @@ test(function auto_vars (done) {
|
|
|
158
158
|
n.set({key: 'a/foo', i:i})
|
|
159
159
|
|
|
160
160
|
log('Forgetting things now')
|
|
161
|
-
n('v/*').
|
|
161
|
+
n('v/*').forgetter = function (vars, star) {log('(from auto_vars) forgot v/' + star)}
|
|
162
162
|
n.forget('v/[3,9 4]')
|
|
163
163
|
n.forget('v/[3,4]')
|
|
164
164
|
|
|
@@ -202,9 +202,9 @@ test(function transactions (done) {
|
|
|
202
202
|
bus.honk = 'statelog'
|
|
203
203
|
bus.label = 'tranny'
|
|
204
204
|
|
|
205
|
-
// Test
|
|
206
|
-
bus('foo1').
|
|
207
|
-
log('
|
|
205
|
+
// Test getter handlers with t.done()
|
|
206
|
+
bus('foo1').getter = function (t) {
|
|
207
|
+
log('gettering foo1')
|
|
208
208
|
setTimeout(()=>{
|
|
209
209
|
log('returning something for foo1')
|
|
210
210
|
t.done({something: 'yeah'})
|
|
@@ -215,7 +215,7 @@ test(function transactions (done) {
|
|
|
215
215
|
setTimeout(() => { log('test foo1'); assert(foo1.something === 'yeah') }, 10)
|
|
216
216
|
|
|
217
217
|
// And return a value directly
|
|
218
|
-
bus('foo2').
|
|
218
|
+
bus('foo2').getter = (t) => { return {something: 'yeah'} }
|
|
219
219
|
var foo2 = bus.get('foo2')
|
|
220
220
|
setTimeout(() => { log('test foo2'); assert(foo2.something === 'yeah') }, 10)
|
|
221
221
|
|
|
@@ -227,11 +227,11 @@ test(function transactions (done) {
|
|
|
227
227
|
bus.set({key: 'softrock1', a:1})
|
|
228
228
|
bus.set({key: 'softrock2', a:1})
|
|
229
229
|
|
|
230
|
-
// Test
|
|
231
|
-
bus('rock1').
|
|
232
|
-
bus('rock2').
|
|
233
|
-
bus('softrock1').
|
|
234
|
-
bus('softrock2').
|
|
230
|
+
// Test setter handlers with t.done(o), t.abort, 'done', 'abort'
|
|
231
|
+
bus('rock1').setter = (t) => {setTimeout(()=>{ t.abort() }, 0)}
|
|
232
|
+
bus('rock2').setter = ( ) => {return 'abort'}
|
|
233
|
+
bus('softrock1').setter = (t) => {setTimeout(()=>{ t.done() }, 0)}
|
|
234
|
+
bus('softrock2').setter = ( ) => {return 'done'}
|
|
235
235
|
|
|
236
236
|
//bus.honk = true
|
|
237
237
|
setTimeout(() => {
|
|
@@ -250,10 +250,10 @@ test(function transactions (done) {
|
|
|
250
250
|
|
|
251
251
|
// Test the delete handlers with t.done(o), t.abort, 'done', 'abort'
|
|
252
252
|
log("Now let's delete")
|
|
253
|
-
bus('rock1').
|
|
254
|
-
bus('rock2').
|
|
255
|
-
bus('softrock1').
|
|
256
|
-
bus('softrock2').
|
|
253
|
+
bus('rock1').deleter = (t) => {setTimeout(()=>{ t.abort() }, 0)}
|
|
254
|
+
bus('rock2').deleter = ( ) => {return 'abort'}
|
|
255
|
+
bus('softrock1').deleter = (t) => {setTimeout(()=>{ t.done() }, 0)}
|
|
256
|
+
bus('softrock2').deleter = ( ) => {return 'done'}
|
|
257
257
|
|
|
258
258
|
log('Delete some rocks')
|
|
259
259
|
bus.delete('rock1')
|
|
@@ -333,7 +333,7 @@ test(function translate_fields (done) {
|
|
|
333
333
|
})
|
|
334
334
|
|
|
335
335
|
test(function basics (done) {
|
|
336
|
-
bus('basic wait').
|
|
336
|
+
bus('basic wait').getter = function () {
|
|
337
337
|
setTimeout(function () {bus.set.fire({key:'basic wait', a:1})},
|
|
338
338
|
30)
|
|
339
339
|
}
|
|
@@ -356,9 +356,9 @@ test(function basics (done) {
|
|
|
356
356
|
// Multi-handlers
|
|
357
357
|
test(function multiple_handlers1 (done) {
|
|
358
358
|
var cuss = require('../statebus')()
|
|
359
|
-
cuss('foo').
|
|
360
|
-
cuss('foo').
|
|
361
|
-
cuss('foo').
|
|
359
|
+
cuss('foo').getter = () => {log('do nothing 1')}
|
|
360
|
+
cuss('foo').getter = () => {log('do nothing 2')}
|
|
361
|
+
cuss('foo').getter = () => (log('doing something'),{b: 3})
|
|
362
362
|
cuss.get('foo', (o) => {
|
|
363
363
|
log('Multi-handle got', o)
|
|
364
364
|
cuss.forget()
|
|
@@ -368,10 +368,10 @@ test(function multiple_handlers1 (done) {
|
|
|
368
368
|
|
|
369
369
|
test(function multiple_handlers2 (done) {
|
|
370
370
|
var cuss = require('../statebus')()
|
|
371
|
-
cuss('foo').
|
|
372
|
-
cuss('foo').
|
|
373
|
-
cuss('foo').
|
|
374
|
-
//cuss('foo').
|
|
371
|
+
cuss('foo').setter = (o) => {log('do nothing 1')}
|
|
372
|
+
cuss('foo').setter = (o) => {log('do nothing 2')}
|
|
373
|
+
cuss('foo').setter = (o) => {log('doin something'); cuss.set.fire(o)}
|
|
374
|
+
//cuss('foo').setter = (o) => {log('doin abortion'); cuss.set.abort(o)}
|
|
375
375
|
cuss.set({key: 'foo', b: 55})
|
|
376
376
|
log('over and out')
|
|
377
377
|
setTimeout(()=>{done()})
|
|
@@ -443,7 +443,7 @@ test(function get_once (done) {
|
|
|
443
443
|
})
|
|
444
444
|
|
|
445
445
|
test(function once (done) {
|
|
446
|
-
bus('takeawhile').
|
|
446
|
+
bus('takeawhile').getter = (t) => {
|
|
447
447
|
setTimeout(_=> t.return({_: 3}), 150)
|
|
448
448
|
}
|
|
449
449
|
bus.once(_=> {
|
|
@@ -469,7 +469,7 @@ test(function get_remote (done) {
|
|
|
469
469
|
var count = 0
|
|
470
470
|
|
|
471
471
|
// The moon responds in 30ms
|
|
472
|
-
bus('moon').
|
|
472
|
+
bus('moon').getter =
|
|
473
473
|
function (k) { setTimeout(function () {bus.set.fire({key:k})},30) }
|
|
474
474
|
function cb (o) {
|
|
475
475
|
count++
|
|
@@ -531,7 +531,7 @@ test(function identity (done) {
|
|
|
531
531
|
var key = 'kooder'
|
|
532
532
|
var count = 0
|
|
533
533
|
function fire () { bus.set.fire({key: 'kooder', count: count}) }
|
|
534
|
-
bus(key).
|
|
534
|
+
bus(key).getter = function () { setTimeout(fire, 10) }
|
|
535
535
|
function cb() {
|
|
536
536
|
count++
|
|
537
537
|
log('cb called', count, 'times')
|
|
@@ -546,7 +546,7 @@ test(function identity (done) {
|
|
|
546
546
|
// 2. First return from pending get
|
|
547
547
|
assert(count === 1, 'cb called '+count+'!=1 times')
|
|
548
548
|
bus.forget(key, cb)
|
|
549
|
-
bus(key).
|
|
549
|
+
bus(key).getter.delete(fire)
|
|
550
550
|
done()
|
|
551
551
|
}, 40)
|
|
552
552
|
})
|
|
@@ -557,7 +557,7 @@ test(function forgetting (done) {
|
|
|
557
557
|
var key = 'kooder'
|
|
558
558
|
var count = 0
|
|
559
559
|
function fire () { log('firing!'); bus.set.fire({key: key, count: count}) }
|
|
560
|
-
bus(key).
|
|
560
|
+
bus(key).getter = function () { setTimeout(fire, 10) }
|
|
561
561
|
|
|
562
562
|
function cb (o) {
|
|
563
563
|
count++
|
|
@@ -578,7 +578,7 @@ test(function forgetting (done) {
|
|
|
578
578
|
// Done
|
|
579
579
|
setTimeout(function () {
|
|
580
580
|
assert(count === 2, "Count should be 2 but is", count)
|
|
581
|
-
bus(key).
|
|
581
|
+
bus(key).getter.delete(fire)
|
|
582
582
|
done()
|
|
583
583
|
}, 100)
|
|
584
584
|
})
|
|
@@ -586,7 +586,7 @@ test(function forgetting (done) {
|
|
|
586
586
|
// Can we return an object that getes another?
|
|
587
587
|
test(function nested_get (done) {
|
|
588
588
|
function outer () { return {inner: bus.get('inner') } }
|
|
589
|
-
bus('outer').
|
|
589
|
+
bus('outer').getter = outer
|
|
590
590
|
log('geting the outer wrapper')
|
|
591
591
|
var obj = bus.get('outer')
|
|
592
592
|
log('Ok, we geted:', obj)
|
|
@@ -598,7 +598,7 @@ test(function nested_get (done) {
|
|
|
598
598
|
|
|
599
599
|
// Done
|
|
600
600
|
setTimeout(function () {
|
|
601
|
-
bus('outer').
|
|
601
|
+
bus('outer').getter.delete(outer)
|
|
602
602
|
done()
|
|
603
603
|
}, 10)
|
|
604
604
|
})
|
|
@@ -609,9 +609,9 @@ test(function russian_doll_nesting (done) {
|
|
|
609
609
|
function big () { return {middle: bus.get('middle') } }
|
|
610
610
|
function middle () { return {small: bus.get('small') } }
|
|
611
611
|
function small () { return {nothing: nothing} }
|
|
612
|
-
bus('big').
|
|
613
|
-
bus('middle').
|
|
614
|
-
bus('small').
|
|
612
|
+
bus('big').getter = big
|
|
613
|
+
bus('middle').getter = middle
|
|
614
|
+
bus('small').getter = small
|
|
615
615
|
|
|
616
616
|
log('geting')
|
|
617
617
|
var obj = bus.get('big')
|
|
@@ -638,9 +638,9 @@ test(function russian_doll_nesting (done) {
|
|
|
638
638
|
|
|
639
639
|
// Done
|
|
640
640
|
setTimeout(function () {
|
|
641
|
-
bus('big').
|
|
642
|
-
bus('middle').
|
|
643
|
-
bus('small').
|
|
641
|
+
bus('big').getter.delete(big)
|
|
642
|
+
bus('middle').getter.delete(middle)
|
|
643
|
+
bus('small').getter.delete(small)
|
|
644
644
|
done()
|
|
645
645
|
}, 50)
|
|
646
646
|
})
|
|
@@ -649,11 +649,11 @@ test(function some_handlers_suicide (done) {
|
|
|
649
649
|
// These handlers stop reacting after they successfully complete:
|
|
650
650
|
//
|
|
651
651
|
// .on_set
|
|
652
|
-
// .
|
|
653
|
-
// .
|
|
654
|
-
// .
|
|
652
|
+
// .setter
|
|
653
|
+
// .forgetter
|
|
654
|
+
// .deleter
|
|
655
655
|
//
|
|
656
|
-
// Ok, that's everyting except for a .
|
|
656
|
+
// Ok, that's everyting except for a .getter handler, which
|
|
657
657
|
// runs until its key has been forget()ed.
|
|
658
658
|
|
|
659
659
|
// XXX todo
|
|
@@ -848,7 +848,7 @@ test(function proxies (done) {
|
|
|
848
848
|
})
|
|
849
849
|
|
|
850
850
|
test(function only_one (done) {
|
|
851
|
-
bus('only_one/*').
|
|
851
|
+
bus('only_one/*').getter = function (k) {
|
|
852
852
|
var id = k[k.length-1]
|
|
853
853
|
return {selected: bus.get('selector').choice == id}
|
|
854
854
|
}
|
|
@@ -885,7 +885,7 @@ test(function only_one (done) {
|
|
|
885
885
|
|
|
886
886
|
test(function set_can_trigger_toget (done) {
|
|
887
887
|
// bus.honk = true
|
|
888
|
-
bus('set_trigger_toget').
|
|
888
|
+
bus('set_trigger_toget').getter =
|
|
889
889
|
function (k, old) {
|
|
890
890
|
old.yes = Math.random()
|
|
891
891
|
return old
|
|
@@ -900,7 +900,7 @@ test(function set_can_trigger_toget (done) {
|
|
|
900
900
|
triggered++
|
|
901
901
|
log('Triggered', triggered, 'times', obj)
|
|
902
902
|
|
|
903
|
-
// XXX todo: because of a bug in how
|
|
903
|
+
// XXX todo: because of a bug in how getter is handled, this triggers 4 times instead of 3
|
|
904
904
|
assert(triggered <= 4)
|
|
905
905
|
log('GGGGGGGGGGGG')
|
|
906
906
|
})
|
|
@@ -920,7 +920,7 @@ test(function rollback_setfire (done) {
|
|
|
920
920
|
log('Firing wait')
|
|
921
921
|
bus.set.fire({key: 'wait', count: count})
|
|
922
922
|
}, 50) }
|
|
923
|
-
bus('wait').
|
|
923
|
+
bus('wait').getter = wait
|
|
924
924
|
|
|
925
925
|
// Initialize
|
|
926
926
|
bus.set.fire({key: 'undo me', state: 'start'})
|
|
@@ -965,14 +965,14 @@ test(function rollback_setfire (done) {
|
|
|
965
965
|
60)
|
|
966
966
|
|
|
967
967
|
setTimeout(function () {
|
|
968
|
-
bus('wait').
|
|
968
|
+
bus('wait').getter.delete(wait)
|
|
969
969
|
assert(phase === 3)
|
|
970
970
|
done()
|
|
971
971
|
}, 80)
|
|
972
972
|
})
|
|
973
973
|
|
|
974
974
|
test(function rollback_del (done) {
|
|
975
|
-
bus('wait forever').
|
|
975
|
+
bus('wait forever').getter = function () {} // shooting blanks
|
|
976
976
|
bus.set.fire({key: 'kill me', alive: true})
|
|
977
977
|
|
|
978
978
|
// First do a del that will roll back
|
|
@@ -996,7 +996,7 @@ test(function rollback_del (done) {
|
|
|
996
996
|
test(function rollback_set (done) {
|
|
997
997
|
var sets = []
|
|
998
998
|
var all_done = false
|
|
999
|
-
bus('candy').
|
|
999
|
+
bus('candy').setter = function (o) {sets.push(o); bus.set.fire(o)}
|
|
1000
1000
|
bus.set.fire({key: 'candy', flavor: 'lemon'})
|
|
1001
1001
|
|
|
1002
1002
|
log('Trying some rollbacks starting with', bus.cache['candy'])
|
|
@@ -1041,7 +1041,7 @@ test(function rollback_set (done) {
|
|
|
1041
1041
|
|
|
1042
1042
|
test(function rollback_abort (done) {
|
|
1043
1043
|
var bus = require('../statebus')()
|
|
1044
|
-
bus('foo').
|
|
1044
|
+
bus('foo').setter = (o, t) => {t.abort()}
|
|
1045
1045
|
bus(()=> {
|
|
1046
1046
|
var o = bus.get('foo')
|
|
1047
1047
|
o.bar = 3
|
|
@@ -1058,7 +1058,7 @@ test(function loading_quirk (done) {
|
|
|
1058
1058
|
// if the return from a get didn't actually change state
|
|
1059
1059
|
|
|
1060
1060
|
// First define a delayed set.fire
|
|
1061
|
-
bus('wait a sec').
|
|
1061
|
+
bus('wait a sec').getter = function (k) {
|
|
1062
1062
|
setTimeout(function () { bus.set.fire({key: k}) }, 50)
|
|
1063
1063
|
}
|
|
1064
1064
|
|
|
@@ -1379,7 +1379,7 @@ test(function connections_2 (done) {
|
|
|
1379
1379
|
test(function flashbacks (done) {
|
|
1380
1380
|
// We have an echo canceler. If you set state, it shouldn't send the
|
|
1381
1381
|
// same state back to you, but it should send it to everyone else. But if
|
|
1382
|
-
// the state is changed in a
|
|
1382
|
+
// the state is changed in a setter handler, it *should* send you
|
|
1383
1383
|
// changes.
|
|
1384
1384
|
|
|
1385
1385
|
var port = 3873
|
|
@@ -1388,7 +1388,7 @@ test(function flashbacks (done) {
|
|
|
1388
1388
|
var s = require('../statebus').serve({port: port, file_store: false})
|
|
1389
1389
|
s.label = 's'
|
|
1390
1390
|
|
|
1391
|
-
s('x').
|
|
1391
|
+
s('x').setter = (o, t) => {
|
|
1392
1392
|
log('Saving x with', o)
|
|
1393
1393
|
o.x++ // Change the value of o.x a little
|
|
1394
1394
|
t.done(o)
|
|
@@ -1427,12 +1427,12 @@ test(function common_time (done) {
|
|
|
1427
1427
|
b.honk = 3
|
|
1428
1428
|
|
|
1429
1429
|
// Define a `front' that proxies for `back'
|
|
1430
|
-
b('front').
|
|
1430
|
+
b('front').getter = () => {
|
|
1431
1431
|
var copy = b.clone(b.get('back'))
|
|
1432
1432
|
copy.key = 'front'
|
|
1433
1433
|
return copy
|
|
1434
1434
|
}
|
|
1435
|
-
b('front').
|
|
1435
|
+
b('front').setter = (o, t) => {
|
|
1436
1436
|
var copy = b.clone(o)
|
|
1437
1437
|
copy.key = 'back'
|
|
1438
1438
|
|
|
@@ -1664,12 +1664,12 @@ if (false) {
|
|
|
1664
1664
|
*/
|
|
1665
1665
|
|
|
1666
1666
|
var user = 3
|
|
1667
|
-
bus('user').
|
|
1667
|
+
bus('user').getter =
|
|
1668
1668
|
function (k) {
|
|
1669
1669
|
return {user: user}
|
|
1670
1670
|
}
|
|
1671
1671
|
|
|
1672
|
-
bus('user').
|
|
1672
|
+
bus('user').setter =
|
|
1673
1673
|
function (o) {
|
|
1674
1674
|
if (o.funny)
|
|
1675
1675
|
bus.set({key: 'user', user: 'funny'})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "statebus",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.7",
|
|
4
4
|
"description": "Synchronize state.",
|
|
5
5
|
"main": "statebus.js",
|
|
6
6
|
"scripts": {
|
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
"repository": "invisible-college/statebus",
|
|
11
11
|
"files": [
|
|
12
12
|
"statebus.js",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
13
|
+
"client-library.js",
|
|
14
|
+
"server-library.js",
|
|
15
15
|
"extras/tests.js",
|
|
16
|
-
"extras/tcp-bind.js"
|
|
16
|
+
"extras/tcp-bind.js",
|
|
17
|
+
"extras/coffee.js",
|
|
18
|
+
"extras/sockjs.js"
|
|
17
19
|
],
|
|
18
20
|
"dependencies": {
|
|
19
21
|
"bcrypt-nodejs": "0.0.3",
|