statebus 6.2.3 → 6.2.5
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/client.js +2 -2
- package/extras/tests.js +60 -0
- package/package.json +9 -2
- package/server.js +4 -4
- package/statebus.js +39 -7
- package/extras/#test_save_delay.js# +0 -11
- package/extras/abort-test.html +0 -10
- package/extras/abort-test.js +0 -17
- package/extras/backups/db.2021-11-13 +0 -12
- package/extras/backups/db.2021-11-14 +0 -12
- package/extras/backups/db.2021-11-15 +0 -25
- package/extras/backups/db.2021-11-16 +0 -25
- package/extras/backups/db.2022-01-14 +0 -24
- package/extras/backups/db.2022-01-15 +0 -29
- package/extras/backups/db.2022-01-16 +0 -29
- package/extras/backups/db.2022-01-17 +0 -29
- package/extras/backups/db.2022-01-18 +0 -29
- package/extras/backups/db.2022-01-19 +0 -29
- package/extras/backups/db.2022-01-20 +0 -32
- package/extras/backups/db.2022-01-21 +0 -32
- package/extras/backups/db.2022-01-22 +0 -47
- package/extras/backups/db.2022-01-23 +0 -47
- package/extras/backups/db.2022-02-20 +0 -53
- package/extras/backups/db.2022-09-08 +0 -48
- package/extras/backups/db.2022-09-09 +0 -48
- package/extras/backups/db.2022-09-10 +0 -48
- package/extras/backups/db.2022-09-11 +0 -48
- package/extras/backups/db.2022-09-12 +0 -48
- package/extras/backups/db.2022-09-13 +0 -48
- package/extras/backups/db.2022-09-14 +0 -48
- package/extras/backups/pdb.2017-08-21 +0 -46
- package/extras/braid-client.html +0 -12
- package/extras/braid-client2.html +0 -9
- package/extras/braid-client3.html +0 -0
- package/extras/braid-server.js +0 -37
- package/extras/braid-server2.js +0 -35
- package/extras/chokitest.js +0 -142
- package/extras/clientless.js +0 -4
- package/extras/css.html +0 -4
- package/extras/ct.js +0 -24
- package/extras/ctests.js +0 -8
- package/extras/db +0 -48
- package/extras/ds.html +0 -8
- package/extras/ds.js +0 -17
- package/extras/email.html +0 -12
- package/extras/express-experiment.js +0 -15
- package/extras/f.js +0 -21
- package/extras/file-test.js +0 -12
- package/extras/flash.html +0 -8
- package/extras/flash.js +0 -7
- package/extras/fullnode-test.html +0 -4
- package/extras/fullnode-test.js +0 -26
- package/extras/hello-react/index.html +0 -24
- package/extras/hello-react.html +0 -4
- package/extras/hello.html +0 -4
- package/extras/k.js +0 -12
- package/extras/load-from-file.html +0 -4
- package/extras/multi-chat/1.html +0 -39
- package/extras/multicriteria +0 -52054
- package/extras/nested +0 -425965
- package/extras/new-react.html +0 -20
- package/extras/pdb +0 -46
- package/extras/perf.js +0 -68
- package/extras/perf2.js +0 -69
- package/extras/perf3.js +0 -14
- package/extras/pgt.js +0 -61
- package/extras/pointers-test.js +0 -17
- package/extras/pointers-test2.js +0 -83
- package/extras/ptest.js +0 -19
- package/extras/react-example.html +0 -32
- package/extras/react-example.jsx.html +0 -41
- package/extras/react.12.js +0 -18116
- package/extras/react.12.min.js +0 -16
- package/extras/react.15.min.js +0 -28
- package/extras/react.3.min.js +0 -19
- package/extras/remote-hello.html +0 -9
- package/extras/reset_pass.coffee +0 -101
- package/extras/reset_pass.html +0 -116
- package/extras/rocks-test.js +0 -6
- package/extras/s4.js +0 -2
- package/extras/sbdb +0 -4
- package/extras/slideboard +0 -4
- package/extras/smaller-file.js +0 -8
- package/extras/sqls-test.js +0 -6
- package/extras/stateb.us.coffee +0 -92
- package/extras/syncie.html +0 -31
- package/extras/syncie.js +0 -15
- package/extras/test2.js +0 -48
- package/extras/test_client.html +0 -8
- package/extras/test_client.js +0 -19
- package/extras/test_save_delay.js +0 -11
- package/extras/test_timeouts.js +0 -10
- package/extras/tests-val.js +0 -1572
- package/extras/tests.html +0 -5
- package/extras/uni.js +0 -7
- package/extras/usage_test.html +0 -3
- package/extras/usage_test.js +0 -32
- package/extras/vtest.js +0 -17
package/extras/new-react.html
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<title>Hello World</title>
|
|
6
|
-
<script src="https://unpkg.com/react@latest/dist/react.js"></script>
|
|
7
|
-
<script src="https://unpkg.com/react-dom@latest/dist/react-dom.js"></script>
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<div id="root"></div>
|
|
11
|
-
<script>
|
|
12
|
-
|
|
13
|
-
ReactDOM.render(
|
|
14
|
-
React.createElement('h1', null, 'hello world'),
|
|
15
|
-
document.getElementById('root')
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
</script>
|
|
19
|
-
</body>
|
|
20
|
-
</html>
|
package/extras/pdb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"connections": {
|
|
3
|
-
"key": "connections"
|
|
4
|
-
},
|
|
5
|
-
"foo": {
|
|
6
|
-
"key": "foo",
|
|
7
|
-
"array": [
|
|
8
|
-
{
|
|
9
|
-
"_key": "foo1"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"_key": "foo2"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"_key": "foo3"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
},
|
|
19
|
-
"foo1": {
|
|
20
|
-
"key": "foo1",
|
|
21
|
-
"thing": 1
|
|
22
|
-
},
|
|
23
|
-
"foo2": {
|
|
24
|
-
"key": "foo2",
|
|
25
|
-
"thing": [
|
|
26
|
-
{
|
|
27
|
-
"_key": "foo2.1"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"_key": "foo2.2"
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
"foo2.1": {
|
|
35
|
-
"key": "foo2.1",
|
|
36
|
-
"thing": 2.1
|
|
37
|
-
},
|
|
38
|
-
"foo2.2": {
|
|
39
|
-
"key": "foo2.2",
|
|
40
|
-
"thing": 2.2
|
|
41
|
-
},
|
|
42
|
-
"foo3": {
|
|
43
|
-
"key": "foo3",
|
|
44
|
-
"thing": 3
|
|
45
|
-
}
|
|
46
|
-
}
|
package/extras/perf.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
bus = require('../statebus.js')()
|
|
2
|
-
|
|
3
|
-
thing1 = {
|
|
4
|
-
key: 'something',
|
|
5
|
-
array: [1,3,5,
|
|
6
|
-
{a: 'that',
|
|
7
|
-
b: 'this'},
|
|
8
|
-
"hello aldfkjaldskfj alsdkfj alsdkfj alsdkfj asldfkj ",
|
|
9
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
10
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
11
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
12
|
-
|
|
13
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
14
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
15
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
16
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
17
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
18
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
19
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
20
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
21
|
-
2,4,25,235,24,234,234,234,234,23,423,423,423,
|
|
22
|
-
],
|
|
23
|
-
alpha: {a:'b', c: 3, d: 4, b:5,
|
|
24
|
-
gay: {a:'b', c: 3, d: 4, b:5, 5: ["lsakfjalsdkfj",3234234]},
|
|
25
|
-
straight: 'adsflkjalsdfjkasdf'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
thing2 = bus.clone(thing1)
|
|
29
|
-
|
|
30
|
-
function cloned_deep_equals (a, b) {
|
|
31
|
-
return bus.deep_equals(bus.clone(a), bus.clone(b))
|
|
32
|
-
}
|
|
33
|
-
function json_equals (a, b) {
|
|
34
|
-
return JSON.stringify(a) === JSON.stringify(b)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
console.time('json_equals')
|
|
40
|
-
for (var i=0; i<100000; i++)
|
|
41
|
-
console.assert(json_equals(thing1, thing2))
|
|
42
|
-
console.timeEnd('json_equals')
|
|
43
|
-
|
|
44
|
-
console.time('deep_equals')
|
|
45
|
-
for (var i=0; i<100000; i++)
|
|
46
|
-
console.assert(bus.deep_equals(thing1, thing2))
|
|
47
|
-
console.timeEnd('deep_equals')
|
|
48
|
-
|
|
49
|
-
console.time('cloned_deep_equals')
|
|
50
|
-
for (var i=0; i<100000; i++)
|
|
51
|
-
console.assert(cloned_deep_equals(thing1, thing2))
|
|
52
|
-
console.timeEnd('cloned_deep_equals')
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
console.time('json_equals')
|
|
56
|
-
for (var i=0; i<100000; i++)
|
|
57
|
-
console.assert(json_equals(thing1, thing2))
|
|
58
|
-
console.timeEnd('json_equals')
|
|
59
|
-
|
|
60
|
-
console.time('deep_equals')
|
|
61
|
-
for (var i=0; i<100000; i++)
|
|
62
|
-
console.assert(bus.deep_equals(thing1, thing2))
|
|
63
|
-
console.timeEnd('deep_equals')
|
|
64
|
-
|
|
65
|
-
console.time('cloned_deep_equals')
|
|
66
|
-
for (var i=0; i<100000; i++)
|
|
67
|
-
console.assert(cloned_deep_equals(thing1, thing2))
|
|
68
|
-
console.timeEnd('cloned_deep_equals')
|
package/extras/perf2.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
bus = require('../statebus.js')()
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var iters = 100000,
|
|
5
|
-
l2 = 2,
|
|
6
|
-
l3 = 2
|
|
7
|
-
var things = []
|
|
8
|
-
for (var i=0; i<things.length; i++)
|
|
9
|
-
things.push(math.random())
|
|
10
|
-
|
|
11
|
-
var o2d = new bus.One_To_Many()
|
|
12
|
-
var j2d = new bus.Set()
|
|
13
|
-
var j3d = new bus.Set()
|
|
14
|
-
|
|
15
|
-
console.time('onetomany_2')
|
|
16
|
-
for (var i=0; i<iters; i++) {
|
|
17
|
-
var key = things[i],
|
|
18
|
-
bus = things[Math.floor(i/l2)]
|
|
19
|
-
o2d.add(key, bus)
|
|
20
|
-
o2d.has(key, bus)
|
|
21
|
-
}
|
|
22
|
-
console.timeEnd('onetomany_2')
|
|
23
|
-
|
|
24
|
-
console.time('jsonset_2')
|
|
25
|
-
for (var i=0; i<iters; i++) {
|
|
26
|
-
var key = things[i],
|
|
27
|
-
bus = things[Math.floor(i/l2)]
|
|
28
|
-
var ting = JSON.stringify([key, bus])
|
|
29
|
-
j2d.add(ting)
|
|
30
|
-
j2d.has(ting)
|
|
31
|
-
JSON.parse(ting)
|
|
32
|
-
}
|
|
33
|
-
console.timeEnd('jsonset_2')
|
|
34
|
-
|
|
35
|
-
console.time('jsonset_3')
|
|
36
|
-
for (var i=0; i<iters; i++) {
|
|
37
|
-
var key = things[i],
|
|
38
|
-
bus = things[Math.floor(i/l2)],
|
|
39
|
-
version = things[Math.floor(i/l3)]
|
|
40
|
-
var ting = JSON.stringify([key, bus, version])
|
|
41
|
-
j3d.add(ting)
|
|
42
|
-
j3d.has(ting)
|
|
43
|
-
JSON.parse(ting)
|
|
44
|
-
}
|
|
45
|
-
console.timeEnd('jsonset_3')
|
|
46
|
-
|
|
47
|
-
console.time('jsonset_2 stringify twice')
|
|
48
|
-
for (var i=0; i<iters; i++) {
|
|
49
|
-
var key = things[i],
|
|
50
|
-
bus = things[Math.floor(i/l2)]
|
|
51
|
-
var ting = JSON.stringify([key, bus])
|
|
52
|
-
j2d.add(ting)
|
|
53
|
-
j2d.has(JSON.stringify([key, bus]))
|
|
54
|
-
JSON.parse(ting)
|
|
55
|
-
}
|
|
56
|
-
console.timeEnd('jsonset_2 stringify twice')
|
|
57
|
-
|
|
58
|
-
console.time('jsonset_3 stringify twice')
|
|
59
|
-
for (var i=0; i<iters; i++) {
|
|
60
|
-
var key = things[i],
|
|
61
|
-
bus = things[Math.floor(i/l2)],
|
|
62
|
-
version = things[Math.floor(i/l3)]
|
|
63
|
-
var ting = JSON.stringify([key, bus, version])
|
|
64
|
-
j3d.add(ting)
|
|
65
|
-
j3d.has(JSON.stringify([key, bus, version]))
|
|
66
|
-
JSON.parse(ting)
|
|
67
|
-
}
|
|
68
|
-
console.timeEnd('jsonset_3 stringify twice')
|
|
69
|
-
|
package/extras/perf3.js
DELETED
package/extras/pgt.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
// tcp_wrap = process.binding('tcp_wrap')
|
|
2
|
-
// new tcp_wrap.TCP(tcp_wrap.constants.SERVER)
|
|
3
|
-
|
|
4
|
-
// var bind = require('tcp-bind')
|
|
5
|
-
// console.log('about to bind')
|
|
6
|
-
// bind(80)
|
|
7
|
-
// console.log('this line will not be reached')
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// One-off test
|
|
11
|
-
if (false) {
|
|
12
|
-
master = require('../statebus')()
|
|
13
|
-
master.pg_store({url: 'postgresql://toomim@localhost:5432/toomim'})
|
|
14
|
-
|
|
15
|
-
client = require('../statebus')()
|
|
16
|
-
client.serve_email(master)
|
|
17
|
-
|
|
18
|
-
console.log('emails are', JSON.stringify(client.fetch('emails')))
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Running server for client
|
|
22
|
-
if (true) {
|
|
23
|
-
master = require('../statebus').serve({
|
|
24
|
-
file_store: false,
|
|
25
|
-
client: (client) => {client.serve_email(master,
|
|
26
|
-
{domain:'invisible.college'})}
|
|
27
|
-
})
|
|
28
|
-
master.pg_store({url: 'postgresql://toomim@localhost:5432/toomim'})
|
|
29
|
-
master.serve_client_coffee()
|
|
30
|
-
//master.honk = true
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// function search (q) {
|
|
34
|
-
// q = "select value from cache where value @> '" + JSON.stringify(q) + "'"
|
|
35
|
-
// // console.log('Searching with:\n', q)
|
|
36
|
-
// return bus.pg_db.querySync(q)
|
|
37
|
-
// }
|
|
38
|
-
|
|
39
|
-
// console.log('Search gets us',
|
|
40
|
-
// search({_: {to: ['public']}}))
|
|
41
|
-
|
|
42
|
-
// function email_for (user) {
|
|
43
|
-
// var terms = [{_: {to: [user]}},
|
|
44
|
-
// {_: {cc: ['public']}},
|
|
45
|
-
// {_: {cc: [user]}},
|
|
46
|
-
// {_: {from: [user]}}]
|
|
47
|
-
|
|
48
|
-
// for (var i=0; i<terms.length; i++)
|
|
49
|
-
// terms[i] = "value @> '" + JSON.stringify(terms[i]) + "'"
|
|
50
|
-
// terms = terms.join(' or ')
|
|
51
|
-
|
|
52
|
-
// var q = "select value from cache where " + terms
|
|
53
|
-
// //console.log('Searching for', user, 'with:\n', q)
|
|
54
|
-
// return bus.pg_db.querySync(q).map(x=>x.value)
|
|
55
|
-
// }
|
|
56
|
-
|
|
57
|
-
// ['user/mike', 'user/zan', 'user/travis', 'user/ppham'].forEach(
|
|
58
|
-
// u => console.log('Emails for', u, email_for(u).map(x=>x.key)))
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// select value from cache where value -> '_' -> 'to' ?| array['foobar','public'] or value -> 'cc' ? 'public';
|
package/extras/pointers-test.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
pointerify = true
|
|
2
|
-
bus = require('../statebus').serve({file_store: {filename: 'pdb', save_delay: 1}})
|
|
3
|
-
|
|
4
|
-
if (!bus.cache.foo)
|
|
5
|
-
bus.save({key: 'foo',
|
|
6
|
-
array: [{key: 'foo1', thing: 1},
|
|
7
|
-
{key: 'foo2', thing: [
|
|
8
|
-
{key: 'foo2.1', thing: 2.1},
|
|
9
|
-
{key: 'foo2.2', thing: 2.2}
|
|
10
|
-
]},
|
|
11
|
-
{key: 'foo3', thing: 3}
|
|
12
|
-
]})
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
setTimeout(()=>{
|
|
16
|
-
console.log(JSON.stringify(bus.fetch('foo')))
|
|
17
|
-
}, 1000)
|
package/extras/pointers-test2.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
bus = require('../statebus')()
|
|
2
|
-
|
|
3
|
-
function inline_pointers (db) {
|
|
4
|
-
return bus.deep_map(db, (o) => {
|
|
5
|
-
//console.log('processing', (o.key && 'o('+o.key+')') || o)
|
|
6
|
-
if (o && o._key) {
|
|
7
|
-
console.log('inlining', o._key, 'to', db[o._key])
|
|
8
|
-
return db[o._key]
|
|
9
|
-
} else return o
|
|
10
|
-
})
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
var db = {
|
|
14
|
-
"foo": {
|
|
15
|
-
"key": "foo",
|
|
16
|
-
"array": [
|
|
17
|
-
{
|
|
18
|
-
"_key": "bar"
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"bar": {
|
|
23
|
-
"thing": 1
|
|
24
|
-
}}
|
|
25
|
-
|
|
26
|
-
console.log(JSON.stringify(db))
|
|
27
|
-
var r = inline_pointers(db)
|
|
28
|
-
console.log(JSON.stringify(r))
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
console.log('\n\n\n')
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
db = {
|
|
35
|
-
"connections": {
|
|
36
|
-
"key": "connections"
|
|
37
|
-
},
|
|
38
|
-
"foo": {
|
|
39
|
-
"key": "foo",
|
|
40
|
-
"array": [
|
|
41
|
-
{
|
|
42
|
-
"_key": "foo1"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"_key": "foo2"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"_key": "foo3"
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
},
|
|
52
|
-
"foo1": {
|
|
53
|
-
"key": "foo1",
|
|
54
|
-
"thing": 1
|
|
55
|
-
},
|
|
56
|
-
"foo2": {
|
|
57
|
-
"key": "foo2",
|
|
58
|
-
"thing": [
|
|
59
|
-
{
|
|
60
|
-
"_key": "foo2.1"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"_key": "foo2.2"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
"foo2.1": {
|
|
68
|
-
"key": "foo2.1",
|
|
69
|
-
"thing": 2.1
|
|
70
|
-
},
|
|
71
|
-
"foo2.2": {
|
|
72
|
-
"key": "foo2.2",
|
|
73
|
-
"thing": 2.2
|
|
74
|
-
},
|
|
75
|
-
"foo3": {
|
|
76
|
-
"key": "foo3",
|
|
77
|
-
"thing": 3
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
console.log(JSON.stringify(db))
|
|
81
|
-
r = inline_pointers(db)
|
|
82
|
-
console.log('\n\n')
|
|
83
|
-
console.log(JSON.stringify(r))
|
package/extras/ptest.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
bus = require('../server')()
|
|
2
|
-
db = bus.sb
|
|
3
|
-
db.foo.a = 3
|
|
4
|
-
console.assert(db.foo.a == 3)
|
|
5
|
-
db.foo.a = [1,3,5, 'hello']
|
|
6
|
-
db.foo.a.push({key: 'bar', 4:4})
|
|
7
|
-
|
|
8
|
-
console.log('Now foo is', db.foo)
|
|
9
|
-
console.log('And bar is', db.bar)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
db.f = 3
|
|
13
|
-
console.assert(bus.validate(bus.cache['f'], {key: 'f', _: 3}),
|
|
14
|
-
bus.cache['f'], 'should be', {key: 'f', _: 3})
|
|
15
|
-
console.assert(db.f === 3)
|
|
16
|
-
|
|
17
|
-
db.g = [1,2,4,5]
|
|
18
|
-
console.assert(bus.cache['g']._.length = 4)
|
|
19
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<body></body>
|
|
3
|
-
|
|
4
|
-
<script src="http://localhost:3007/client.js"></script>
|
|
5
|
-
|
|
6
|
-
<script>
|
|
7
|
-
var foo;
|
|
8
|
-
// This example connects statebus to React. This is with React v0.12.2.
|
|
9
|
-
//
|
|
10
|
-
// This uses statebus.create_react_class() instead of React.createClass(),
|
|
11
|
-
// which instruments the component to automatically react to statebus state
|
|
12
|
-
// changes in addition to setState() changes.
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
var body = statebus.create_react_class({
|
|
16
|
-
render: () => {
|
|
17
|
-
var foo = fetch('state://invisible.college/foo')
|
|
18
|
-
return React.DOM.div(
|
|
19
|
-
{style: {margin: 20}},
|
|
20
|
-
React.DOM.textarea({
|
|
21
|
-
onChange: (e) => {
|
|
22
|
-
foo.text = e.target.value;
|
|
23
|
-
save(foo)},
|
|
24
|
-
value: foo.text
|
|
25
|
-
}),
|
|
26
|
-
React.DOM.div({}, 'The current text is:', PRE({}, foo.text)))
|
|
27
|
-
},
|
|
28
|
-
displayName: 'body'
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
React.render(body(), document.body)
|
|
32
|
-
</script>
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<body></body>
|
|
3
|
-
|
|
4
|
-
<script src="http://localhost:3007/client.js"></script>
|
|
5
|
-
<script src="https://unpkg.com/react@0.12.2/dist/JSXTransformer.js"></script>
|
|
6
|
-
|
|
7
|
-
<script type="text/jsx">
|
|
8
|
-
|
|
9
|
-
// This example connects a React component to Statebus. The component will
|
|
10
|
-
// automatically re-render whenever any state it's fetched has changed.
|
|
11
|
-
//
|
|
12
|
-
// To connect the component to Statebus, we use statebus.create_react_class()
|
|
13
|
-
// instead of React.createClass(). This function calls createClass()
|
|
14
|
-
// internally, and just instruments the component to automatically react to
|
|
15
|
-
// statebus state changes in addition to setState() changes.
|
|
16
|
-
|
|
17
|
-
var body = statebus.createReactClass({
|
|
18
|
-
render: () => {
|
|
19
|
-
var foo = fetch('/foo')
|
|
20
|
-
var size = foo.is_big ? 300 : 50
|
|
21
|
-
return <div style={{
|
|
22
|
-
width: size,
|
|
23
|
-
height: size,
|
|
24
|
-
padding: 20,
|
|
25
|
-
backgroundColor: 'lightgrey'
|
|
26
|
-
}}
|
|
27
|
-
onClick={ (e) => {
|
|
28
|
-
foo.is_big = !foo.is_big
|
|
29
|
-
save(foo)
|
|
30
|
-
}}
|
|
31
|
-
>Click me!</div>
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
// Oh, and the current implementation of statebus.create_react_class()
|
|
35
|
-
// expects a displayName to be set.
|
|
36
|
-
displayName: 'body'
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
React.render(body(), document.body)
|
|
40
|
-
</script>
|
|
41
|
-
</html>
|