statebus 7.0.4 → 7.0.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.
@@ -105,17 +105,17 @@ function import_server (bus, make_statebus, options)
105
105
  // Now handle backup handlers
106
106
  if (count === 0) {
107
107
 
108
- // A set to master without a to_set defined should be
108
+ // A set to master without a setter defined should be
109
109
  // automatically reflected to all clients.
110
- if (method === 'to_set') {
110
+ if (method === 'setter') {
111
111
  bus.set.fire(arg, t)
112
112
  bus.route(arg.key, 'on_set_sync', arg, t)
113
113
  count++
114
114
  }
115
115
 
116
- // A get to master without a to_get defined should go to
116
+ // A get to master without a getter defined should go to
117
117
  // the database, if we have one.
118
- if (method === 'to_get') {
118
+ if (method === 'getter') {
119
119
  bus.db_get(key)
120
120
  // This basically renders the count useless-- you probably
121
121
  // don't want to wrap this route() with another route().
@@ -163,15 +163,10 @@ function import_server (bus, make_statebus, options)
163
163
 
164
164
  // Handle the GET or PUT request!
165
165
  if (req.method === 'GET') {
166
+ var key = req.path.substr(1)
166
167
 
167
168
  // Make a temporary client bus
168
169
  var cbus = bus.bus_for_http_client(req, res)
169
- var cb
170
- function end_subscription () {
171
- cbus.forget(key, cb)
172
- res.end()
173
- cbus.http_unsubscribe(req)
174
- }
175
170
 
176
171
  braidify(req, res)
177
172
  if (req.subscribe)
@@ -182,16 +177,12 @@ function import_server (bus, make_statebus, options)
182
177
  // We only return JSON
183
178
  res.setHeader('Content-Type', 'application/json')
184
179
 
185
- // Do the get
186
- // cbus.honk = 'statelog'
187
- var key = req.path.substr(1)
188
180
  // console.log('http_in: doing cbus.get(', key, ')')
189
- cbus.get(key, cb = (o) => {
181
+
182
+ var send_to_client = (o, t) => {
190
183
  // console.trace('http_in: Sending update of', key)
191
184
  var body = to_http_body(o)
192
185
 
193
- // If we're braiding, send via subscription
194
-
195
186
  // Note: if body === undefined, we need to send the
196
187
  // equivalent of a 404. This is missing in braid spec:
197
188
  // https://github.com/braid-org/braid-spec/issues/110
@@ -200,7 +191,31 @@ function import_server (bus, make_statebus, options)
200
191
  // And shut down the connection if there's no subscription
201
192
  if (!req.subscribe)
202
193
  end_subscription()
203
- })
194
+ }
195
+
196
+ function end_subscription () {
197
+ cbus.forget(key, send_to_client)
198
+ res.end()
199
+ cbus.http_unsubscribe(req)
200
+
201
+ let peer = req.headers.peer
202
+ if (cbus.http_callbacks)
203
+ delete cbus.http_callbacks[JSON.stringify({peer, key})]
204
+ }
205
+
206
+ // If we have a peer id, then register this callback at that peer,
207
+ // so it can avoid getting its own PUT versions echoed back to
208
+ // itself.
209
+ if (req.headers.peer) {
210
+ if (!cbus.http_callbacks)
211
+ cbus.http_callbacks = {}
212
+ let peer = req.headers.peer
213
+ cbus.http_callbacks[JSON.stringify({peer, key})]
214
+ = send_to_client
215
+ }
216
+
217
+ // And issue the get!
218
+ cbus.get(key, send_to_client)
204
219
  }
205
220
 
206
221
  else if (req.method === 'PUT') {
@@ -233,7 +248,24 @@ function import_server (bus, make_statebus, options)
233
248
 
234
249
  // Make a temporary client bus
235
250
  var cbus = bus.bus_for_http_client(req, res)
236
- cbus.set(obj) // And use it
251
+ var t = {
252
+ version: req.version || cbus.new_version(),
253
+ parents: req.parents
254
+ }
255
+
256
+ // If the peer declares itself, let's remember it so that
257
+ // we don't send it echoes
258
+ if (req.headers.peer) {
259
+ let peer = req.headers.peer,
260
+ key = obj.key
261
+ var cb = cbus.http_callbacks[
262
+ JSON.stringify({peer, key})
263
+ ]
264
+ if (cb) cb.has_seen(cbus, key, t.version)
265
+ }
266
+
267
+ // Now send the version to the bus!
268
+ cbus.set(obj, t)
237
269
 
238
270
  res.statusCode = 200
239
271
  res.end()
@@ -523,7 +555,7 @@ function import_server (bus, make_statebus, options)
523
555
  if (client_bus_func && !master.options.__secure) {
524
556
 
525
557
  // A connection
526
- client('connection/*').to_get = function (key, star) {
558
+ client('connection/*').getter = function (key, star) {
527
559
  var result = bus.clone(master.get(key))
528
560
  if (master.options.connections.include_users && result.user)
529
561
  result.user = client.get(result.user.key)
@@ -531,7 +563,7 @@ function import_server (bus, make_statebus, options)
531
563
  result.client = star // Deprecated. Delete this line in v7.
532
564
  return result
533
565
  }
534
- client('connection/*').to_set = function (o, star, t) {
566
+ client('connection/*').setter = function (o, star, t) {
535
567
  // Check permissions before editing
536
568
  if (star !== conn.id && !master.options.connections.edit_others) {
537
569
  t.abort()
@@ -543,7 +575,7 @@ function import_server (bus, make_statebus, options)
543
575
  }
544
576
 
545
577
  // Your connection
546
- client('connection').to_get = function () {
578
+ client('connection').getter = function () {
547
579
  // subscribe to changes in authentication
548
580
  client.get('current_user')
549
581
 
@@ -551,15 +583,15 @@ function import_server (bus, make_statebus, options)
551
583
  delete result.key
552
584
  return result
553
585
  }
554
- client('connection').to_set = function (o) {
586
+ client('connection').setter = function (o) {
555
587
  o = client.clone(o)
556
588
  o.key = 'connection/' + conn.id
557
589
  client.set(o)
558
590
  }
559
591
 
560
592
  // All connections
561
- client('connections').to_set = function noop (t) {t.abort()}
562
- client('connections').to_get = function () {
593
+ client('connections').setter = function noop (t) {t.abort()}
594
+ client('connections').getter = function () {
563
595
  var result = []
564
596
  var conns = master.get('connections').val
565
597
  for (var connid in conns)
@@ -663,7 +695,7 @@ function import_server (bus, make_statebus, options)
663
695
  }
664
696
  on_set.priority = true
665
697
  bus(prefix).on_set = on_set
666
- bus(prefix).to_delete = function (key) {
698
+ bus(prefix).deleter = function (key) {
667
699
  delete db[key]
668
700
  if (active) save_later()
669
701
  }
@@ -729,7 +761,7 @@ function import_server (bus, make_statebus, options)
729
761
  return decodeURIComponent(k.replace('%2E', '.'))
730
762
  }
731
763
 
732
- bus(prefix).to_get = function (key, t) {
764
+ bus(prefix).getter = function (key, t) {
733
765
  firebase_ref.child(encode_firebase_key(key)).on('value', function (x) {
734
766
  t.done(x.val() || {})
735
767
  }, function (err) { t.abort() })
@@ -739,19 +771,19 @@ function import_server (bus, make_statebus, options)
739
771
  firebase_ref.child(encode_firebase_key(o.key)).set(o)
740
772
  }
741
773
 
742
- // bus(prefix).to_set = function (o, t) {
774
+ // bus(prefix).setter = function (o, t) {
743
775
  // firebase_ref.child(encode_firebase_key(o.key)).set(o, (err) => {
744
776
  // err ? t.abort() : t.done()
745
777
  // })
746
778
  // }
747
779
 
748
- bus(prefix).to_delete = function (key, t) {
780
+ bus(prefix).deleter = function (key, t) {
749
781
  firebase_ref.child(encode_firebase_key(key)).set(null, (err) => {
750
782
  err ? t.abort() : t.done()
751
783
  })
752
784
  }
753
785
 
754
- bus(prefix).to_forget = function (key, t) {
786
+ bus(prefix).forgetter = function (key, t) {
755
787
  firebase_ref.child(encode_firebase_key(key)).off()
756
788
  }
757
789
  },
@@ -843,7 +875,7 @@ function import_server (bus, make_statebus, options)
843
875
  : o))
844
876
 
845
877
  // Publish this to the bus
846
- bus.set.fire(obj, {to_get: true})
878
+ bus.set.fire(obj, {getter: true})
847
879
  })
848
880
  }
849
881
 
@@ -872,13 +904,13 @@ function import_server (bus, make_statebus, options)
872
904
  if (opts.set_sync) {
873
905
  var old_route = bus.route
874
906
  bus.route = function (key, method, arg, t) {
875
- if (method === 'to_set') on_set(arg)
907
+ if (method === 'setter') on_set(arg)
876
908
  return old_route(key, method, arg, t)
877
909
  }
878
910
  } else
879
911
  bus(prefix).on_set_sync = on_set
880
912
 
881
- bus(prefix).to_delete = function (key) {
913
+ bus(prefix).deleter = function (key) {
882
914
  if (opts.use_transactions && !open_transaction){
883
915
  console.time('save db')
884
916
  db.prepare('BEGIN TRANSACTION').run()
@@ -976,7 +1008,7 @@ function import_server (bus, make_statebus, options)
976
1008
  }
977
1009
  pg_set.priority = true
978
1010
  bus(opts.prefix).on_set = pg_set
979
- bus(opts.prefix).to_delete = function (key) {
1011
+ bus(opts.prefix).deleter = function (key) {
980
1012
  db.query('delete from store where key = $1', [key])
981
1013
  }
982
1014
 
@@ -1036,7 +1068,7 @@ function import_server (bus, make_statebus, options)
1036
1068
  bus.usage_log_nots = nots
1037
1069
 
1038
1070
  // Aggregate all accesses by day, to get daily active users
1039
- bus('usage').to_get = () => {
1071
+ bus('usage').getter = () => {
1040
1072
  bus.get('time/' + refresh_interval)
1041
1073
  var days = []
1042
1074
  var last_day
@@ -1075,7 +1107,7 @@ function import_server (bus, make_statebus, options)
1075
1107
  return {_: days}
1076
1108
  }
1077
1109
 
1078
- bus('recent_hits/*').to_get = (rest) => {
1110
+ bus('recent_hits/*').getter = (rest) => {
1079
1111
  bus.get('time/' + refresh_interval)
1080
1112
  var result = []
1081
1113
  for (var row of db.prepare('select * from usage where '
@@ -1091,7 +1123,7 @@ function import_server (bus, make_statebus, options)
1091
1123
  return {_: result}
1092
1124
  }
1093
1125
 
1094
- bus('recent_referers/*').to_get = (rest) => {
1126
+ bus('recent_referers/*').getter = (rest) => {
1095
1127
  bus.get('time/' + refresh_interval)
1096
1128
  var result = []
1097
1129
  for (var row of db.prepare('select * from usage where '
@@ -1140,7 +1172,7 @@ function import_server (bus, make_statebus, options)
1140
1172
  return times
1141
1173
  }
1142
1174
 
1143
- bus('socket_load_times').to_get = () => {
1175
+ bus('socket_load_times').getter = () => {
1144
1176
  return {_: sock_open_times()}
1145
1177
  }
1146
1178
  },
@@ -1152,21 +1184,21 @@ function import_server (bus, make_statebus, options)
1152
1184
  },
1153
1185
 
1154
1186
  time () {
1155
- if (bus('time*').to_get.length > 0)
1187
+ if (bus('time*').getter.length > 0)
1156
1188
  // Then it's already installed
1157
1189
  return
1158
1190
 
1159
1191
  // Time ticker
1160
1192
  var timeouts = {}
1161
1193
  bus('time*', {
1162
- to_get: (key, rest, t) => {
1194
+ getter: (key, rest, t) => {
1163
1195
  if (key === 'time') rest = '/1000'
1164
1196
  timeout = parseInt(rest.substr(1))
1165
1197
  function f () { bus.set.fire({key: key, val: Date.now()}) }
1166
1198
  timeouts[key] = setInterval(f, timeout)
1167
1199
  f()
1168
1200
  },
1169
- to_forget: (key, rest) => {
1201
+ forgetter: (key, rest) => {
1170
1202
  if (key === 'time') key = 'time/1000'
1171
1203
  clearTimeout(timeouts[key])
1172
1204
  }
@@ -1237,8 +1269,8 @@ function import_server (bus, make_statebus, options)
1237
1269
  // - Is there security hole if users have a ? or a / in their name?
1238
1270
  // - Make the master.posts/ state not require /
1239
1271
  // - Make standard url tools for optional slashes, and ? query params
1240
- // - Should a e.g. client to_set abort if it calls set that aborts?
1241
- // - e.g. if master('posts*').to_set aborts
1272
+ // - Should a e.g. client setter abort if it calls set that aborts?
1273
+ // - e.g. if master('posts*').setter aborts
1242
1274
 
1243
1275
  // Helpers
1244
1276
  function get_posts (args) {
@@ -1293,15 +1325,15 @@ function import_server (bus, make_statebus, options)
1293
1325
  // }
1294
1326
 
1295
1327
  // Define state on master
1296
- if (master('posts_for/*').to_get.length === 0) {
1328
+ if (master('posts_for/*').getter.length === 0) {
1297
1329
  // Get posts for each user
1298
- master('posts_for/*').to_get = (json) => {
1330
+ master('posts_for/*').getter = (json) => {
1299
1331
  watch_for_dirt('posts-for/' + json.for)
1300
1332
  return {_: get_posts(json)}
1301
1333
  }
1302
1334
  // Saving any post will dirty the list for all users mentioned in
1303
1335
  // the post
1304
- master('post/*').to_set = (old, New, t) => {
1336
+ master('post/*').setter = (old, New, t) => {
1305
1337
  // To do: diff the cc, to, and from lists, and only dirty
1306
1338
  // posts_for people who have been changed
1307
1339
 
@@ -1348,19 +1380,19 @@ function import_server (bus, make_statebus, options)
1348
1380
  function dirty (key) { drtbus.set({key: 'dirty-'+key, n: Math.random()}) }
1349
1381
  function watch_for_dirt (key) { drtbus.get('dirty-'+key) }
1350
1382
 
1351
- client('current_email').to_get = () => {
1383
+ client('current_email').getter = () => {
1352
1384
  return {_: current_addy()}
1353
1385
  }
1354
1386
 
1355
1387
  // Define state on client
1356
- client('posts*').to_get = (k, rest) => {
1388
+ client('posts*').getter = (k, rest) => {
1357
1389
  var args = bus.parse(rest.substr(1))
1358
1390
  args.for = current_addy()
1359
1391
  var e = master.get('posts_for/' + JSON.stringify(args))
1360
1392
  return {_: master.clone(e._).map(x=>client.get(x.key))}
1361
1393
  }
1362
1394
 
1363
- client('post/*').to_get = (k) => {
1395
+ client('post/*').getter = (k) => {
1364
1396
  var e = master.clone(master.get(k))
1365
1397
  if (!e._) return {}
1366
1398
  if (!can_see(e))
@@ -1372,7 +1404,7 @@ function import_server (bus, make_statebus, options)
1372
1404
  return e
1373
1405
  }
1374
1406
 
1375
- client('post/*').to_set = (o, t) => {
1407
+ client('post/*').setter = (o, t) => {
1376
1408
  if (!(client.validate(o, {key: 'string',
1377
1409
  _: {to: 'array',
1378
1410
  cc: 'array',
@@ -1407,7 +1439,7 @@ function import_server (bus, make_statebus, options)
1407
1439
  t.done()
1408
1440
  }
1409
1441
 
1410
- client('post/*').to_delete = (key, o, t) => {
1442
+ client('post/*').deleter = (key, o, t) => {
1411
1443
  // Validate
1412
1444
  if (!is_author(o)) {
1413
1445
  console.error('User', current_addy(),
@@ -1431,14 +1463,14 @@ function import_server (bus, make_statebus, options)
1431
1463
  t.done()
1432
1464
  }
1433
1465
 
1434
- client('friends').to_get = t => {
1466
+ client('friends').getter = t => {
1435
1467
  return {_: (master.get('users').val||[])
1436
1468
  .map(u=>client.get('email/' + user_addy(u)))
1437
1469
  .concat([client.get('email/public')])
1438
1470
  }
1439
1471
  }
1440
1472
 
1441
- client('email/*').to_get = (rest) => {
1473
+ client('email/*').getter = (rest) => {
1442
1474
  var m = rest.match(email_regex)
1443
1475
  var result = {address: rest}
1444
1476
  if (rest === 'public') {
@@ -1461,7 +1493,7 @@ function import_server (bus, make_statebus, options)
1461
1493
 
1462
1494
  sqlite_query_server: function sqlite_query_server (db) {
1463
1495
  var get = bus.get
1464
- bus('table_columns/*').to_get =
1496
+ bus('table_columns/*').getter =
1465
1497
  function get_table_columns (key, rest) {
1466
1498
  if (typeof key !== 'string')
1467
1499
  console.log(handlers.hash)
@@ -1484,7 +1516,7 @@ function import_server (bus, make_statebus, options)
1484
1516
  }
1485
1517
 
1486
1518
 
1487
- bus('table_foreign_keys/*').to_get =
1519
+ bus('table_foreign_keys/*').getter =
1488
1520
  function table_foreign_keys (key, rest) {
1489
1521
  var table_name = rest
1490
1522
  var foreign_keys = get('sql/PRAGMA foreign_key_list(' + table_name + ')').rows
@@ -1496,7 +1528,7 @@ function import_server (bus, make_statebus, options)
1496
1528
  return result
1497
1529
  }
1498
1530
 
1499
- bus('sql/*').to_get =
1531
+ bus('sql/*').getter =
1500
1532
  function sql (key, rest) {
1501
1533
  get('time/60000')
1502
1534
  var query = rest
@@ -1573,7 +1605,7 @@ function import_server (bus, make_statebus, options)
1573
1605
  // ************************
1574
1606
 
1575
1607
  // Getting the whole table, or a single row
1576
- bus(table_name + '*').to_get = function (key, rest) {
1608
+ bus(table_name + '*').getter = function (key, rest) {
1577
1609
  if (rest === '')
1578
1610
  // Return the whole table
1579
1611
  return render_table()
@@ -1593,7 +1625,7 @@ function import_server (bus, make_statebus, options)
1593
1625
  }
1594
1626
 
1595
1627
  // Saving a row
1596
- bus(table_name + '/*').to_set = function (obj, rest) {
1628
+ bus(table_name + '/*').setter = function (obj, rest) {
1597
1629
  var columns = table_columns.columns
1598
1630
  var key = remapped_keys.keys[obj.key] || obj.key
1599
1631
 
@@ -1619,7 +1651,7 @@ function import_server (bus, make_statebus, options)
1619
1651
  }
1620
1652
 
1621
1653
  // Inserting a new row
1622
- bus('new/' + table_name + '/*').to_set = function (obj) {
1654
+ bus('new/' + table_name + '/*').setter = function (obj) {
1623
1655
  var columns = table_columns.columns
1624
1656
  var stmt = ('insert into ' + table_name + ' (' + columns.join(',')
1625
1657
  + ') values (' + new Array(columns.length).join('?,') + '?)')
@@ -1638,7 +1670,7 @@ function import_server (bus, make_statebus, options)
1638
1670
  }
1639
1671
 
1640
1672
  // Deleting a row
1641
- bus(table_name + '/*').to_delete = function (key, rest) {
1673
+ bus(table_name + '/*').deleter = function (key, rest) {
1642
1674
  if (remapped_keys.keys[key]) {
1643
1675
  var old_key = key
1644
1676
  var new_key = remapped_keys.keys[key]
@@ -1690,9 +1722,9 @@ function import_server (bus, make_statebus, options)
1690
1722
  if (!master.auth_initialized) {
1691
1723
 
1692
1724
  // A hash for fast lookup of a user's password
1693
- master('users/passwords').to_get = function (k) {
1725
+ master('users/passwords').getter = function (k) {
1694
1726
  // We compute it from the 'users' state
1695
- master.log('users/passwords.to_get: Computing!')
1727
+ master.log('users/passwords.getter: Computing!')
1696
1728
  var result = {key: 'users/passwords', val: {}}
1697
1729
  var users = master.get('users')
1698
1730
  users.val = users.val || []
@@ -1715,7 +1747,7 @@ function import_server (bus, make_statebus, options)
1715
1747
  master.auth_initialized = true
1716
1748
  master.get('users/passwords')
1717
1749
 
1718
- master('user/*').to_delete = (key, t) => {
1750
+ master('user/*').deleter = (key, t) => {
1719
1751
  master.log('Deleteinggg!!!', key)
1720
1752
  // Remove from users.all
1721
1753
  var users = master.get('users')
@@ -1817,7 +1849,7 @@ function import_server (bus, make_statebus, options)
1817
1849
  }
1818
1850
 
1819
1851
  // Current User
1820
- client('current_user').to_get = function (k) {
1852
+ client('current_user').getter = function (k) {
1821
1853
  if (!conn.client)
1822
1854
  return {val: {error: 'no client'}}
1823
1855
 
@@ -1826,7 +1858,7 @@ function import_server (bus, make_statebus, options)
1826
1858
  return result
1827
1859
  }
1828
1860
 
1829
- client('current_user').to_set = function (o, t) {
1861
+ client('current_user').setter = function (o, t) {
1830
1862
  var val = o.val
1831
1863
  if (typeof val !== 'object') {
1832
1864
  console.error('current_user: set to something not an object:', val)
@@ -1930,14 +1962,14 @@ function import_server (bus, make_statebus, options)
1930
1962
 
1931
1963
  t.reget()
1932
1964
  }
1933
- client('current_user').to_delete = function () {}
1965
+ client('current_user').deleter = function () {}
1934
1966
 
1935
1967
  // Users have closet space at /user/<name>/*
1936
1968
  var closet_space_key = /^(user\/[^\/]+)\/.*/
1937
1969
  var private_closet_space_key = /^user\/[^\/]+\/private.*/
1938
1970
 
1939
1971
  // User
1940
- client('user/*').to_set = function (o, t) {
1972
+ client('user/*').setter = function (o, t) {
1941
1973
  var c = client.get('current_user')
1942
1974
  var user_key = o.key.match(/^user\/([^\/]+)/)
1943
1975
  user_key = user_key && ('user/' + user_key[1])
@@ -2040,7 +2072,7 @@ function import_server (bus, make_statebus, options)
2040
2072
 
2041
2073
  master.set(u)
2042
2074
  }
2043
- client('user/*').to_get = function user_getter (k) {
2075
+ client('user/*').getter = function user_getter (k) {
2044
2076
  var c = client.get('current_user')
2045
2077
  client.log('* getting:', k, 'as', c.val.user)
2046
2078
 
@@ -2059,7 +2091,7 @@ function import_server (bus, make_statebus, options)
2059
2091
  // Otherwise return the actual user
2060
2092
  return user_obj(k, c.val.logged_in && c.val.user.link === k)
2061
2093
  }
2062
- client('user/*').to_delete = function () {}
2094
+ client('user/*').deleter = function () {}
2063
2095
  function user_obj (k, logged_in) {
2064
2096
  var o = master.clone(master.get(k))
2065
2097
  if (k.match(/^user\/([^\/]+)\/private\/(.*)$/))
@@ -2074,10 +2106,10 @@ function import_server (bus, make_statebus, options)
2074
2106
  // Blacklist sensitive stuff on master, in case we have a shadow set up
2075
2107
  var blacklist = 'users users/passwords logged_in_clients'.split(' ')
2076
2108
  for (var i=0; i<blacklist.length; i++) {
2077
- client(blacklist[i]).to_get = function () {}
2078
- client(blacklist[i]).to_set = function () {}
2079
- client(blacklist[i]).to_delete = function () {}
2080
- client(blacklist[i]).to_forget = function () {}
2109
+ client(blacklist[i]).getter = function () {}
2110
+ client(blacklist[i]).setter = function () {}
2111
+ client(blacklist[i]).deleter = function () {}
2112
+ client(blacklist[i]).forgetter = function () {}
2081
2113
  }
2082
2114
  },
2083
2115
 
@@ -2145,7 +2177,7 @@ function import_server (bus, make_statebus, options)
2145
2177
  was_logged_in = c.val.logged_in
2146
2178
  })
2147
2179
 
2148
- client(prefix_to_sync).to_get = function (key) {
2180
+ client(prefix_to_sync).getter = function (key) {
2149
2181
  var c = client.get('current_user')
2150
2182
  if (client.loading()) return
2151
2183
  var prefix = client_prefix(c)
@@ -2162,7 +2194,7 @@ function import_server (bus, make_statebus, options)
2162
2194
  return obj
2163
2195
  }
2164
2196
 
2165
- client(prefix_to_sync).to_set = function (obj) {
2197
+ client(prefix_to_sync).setter = function (obj) {
2166
2198
  if (validate && !validate(obj)) {
2167
2199
  console.warn('Validation failed on', obj)
2168
2200
  client.set.abort(obj)
@@ -2190,7 +2222,7 @@ function import_server (bus, make_statebus, options)
2190
2222
  p_keys && client.master.set(p_keys)
2191
2223
  }
2192
2224
 
2193
- client(prefix_to_sync).to_delete = function (k) {
2225
+ client(prefix_to_sync).deleter = function (k) {
2194
2226
  k = client_prefix(client.get('current_user')) + k
2195
2227
  client.master.delete(k)
2196
2228
 
@@ -2216,19 +2248,19 @@ function import_server (bus, make_statebus, options)
2216
2248
  // to the global cache
2217
2249
  if (count === 0) {
2218
2250
  count++
2219
- if (method === 'to_get')
2251
+ if (method === 'getter')
2220
2252
  bus.run_handler(function get_from_master (k) {
2221
2253
  // console.log('DEFAULT GETting', k)
2222
2254
  var r = master_bus.get(k)
2223
2255
  // console.log('DEFAULT GETted', r)
2224
2256
  bus.set.fire(r, {version: master_bus.versions[r.key]})
2225
2257
  }, method, arg)
2226
- else if (method === 'to_set')
2258
+ else if (method === 'setter')
2227
2259
  bus.run_handler(function set_to_master (o, t) {
2228
2260
  // console.log('DEFAULT ROUTE', t)
2229
2261
  master_bus.set(bus.clone(o), t)
2230
2262
  }, method, arg, {t: t})
2231
- else if (method == 'to_delete')
2263
+ else if (method == 'deleter')
2232
2264
  bus.run_handler(function delete_from_master (k, t) {
2233
2265
  master_bus.delete(k)
2234
2266
  return 'done'
@@ -2282,7 +2314,7 @@ function import_server (bus, make_statebus, options)
2282
2314
  // file or recursive directory structure at fs_path
2283
2315
  sync_files: function sync_files (state_path, file_path) {
2284
2316
  // To do:
2285
- // - Hook up a to_delete handler
2317
+ // - Hook up a deleter handler
2286
2318
  // - recursively remove directories if all files gone
2287
2319
 
2288
2320
  console.assert(state_path.substr(-1) !== '*'
@@ -2293,7 +2325,7 @@ function import_server (bus, make_statebus, options)
2293
2325
  var buffer = {}
2294
2326
  var full_file_path = require('path').join(__dirname, file_path)
2295
2327
 
2296
- bus(state_path + '*').to_get = (rest) => {
2328
+ bus(state_path + '*').getter = (rest) => {
2297
2329
  // We DO want to handle:
2298
2330
  // - "foo"
2299
2331
  // - "foo/*"
@@ -2319,7 +2351,7 @@ function import_server (bus, make_statebus, options)
2319
2351
  return {_:f}
2320
2352
  }
2321
2353
 
2322
- bus(state_path + '/*').to_set = (o, rest, t) => {
2354
+ bus(state_path + '/*').setter = (o, rest, t) => {
2323
2355
  if (rest.length>0 && rest[0] !== '/') return
2324
2356
  var f = Buffer.from(o._, 'base64')
2325
2357
  require('fs').writeFile(file_path + rest, f,
@@ -2336,7 +2368,7 @@ function import_server (bus, make_statebus, options)
2336
2368
  var textbus = make_statebus()
2337
2369
  textbus.label = 'textbus'
2338
2370
  var watched = new Set()
2339
- textbus('*').to_get = (filename, old) => {
2371
+ textbus('*').getter = (filename, old) => {
2340
2372
  return {etag: Math.random() + '',
2341
2373
  _: getter(filename)}
2342
2374
  }
@@ -2412,7 +2444,7 @@ function import_server (bus, make_statebus, options)
2412
2444
  },
2413
2445
 
2414
2446
  serve_wiki: () => {
2415
- bus('edit/*').to_get = () => ({_: require('./extras/wiki.coffee').code})
2447
+ bus('edit/*').getter = () => ({_: require('./extras/wiki.coffee').code})
2416
2448
  },
2417
2449
 
2418
2450
  unix_socket_repl: function (filename) {
@@ -2559,7 +2591,7 @@ module.exports.import_module = function (statebus) {
2559
2591
 
2560
2592
  statebus.serve = function serve (options) {
2561
2593
  var bus = statebus()
2562
- require('./servers').run_server(bus, options)
2594
+ require('./server-library').run_server(bus, options)
2563
2595
  return bus
2564
2596
  }
2565
2597