server/broadcast.js
function(id, listener){
				_.assertLength(arguments, 2)

				//console.log('listening by object: ' + id)

				//if(_.isInt(id)){
					var list = lazyArray(byObject, id)
					list.push(listener);
				/*}else{
					//TODO later rework the way edit updates come in the first place - this is a temporary bridge
					//_.errout('TODO')
					var list = lazyArray(byObject, id+'')
					var innerId = id
					list.push(function(typeCode, id, editPath, op, edit, syncId, editId){
						var found
						//console.log('filtering(' + JSON.stringify(innerId) + '): ' + JSON.stringify(arguments))
						for(var i=0;i<editPath.length;++i){
							var e = editPath[i]
							if(e.op === editCodes.selectObject || e.op === editCodes.reselectObject){
								if(e.edit.id === innerId.inner){
									found = i
									break;
								}
							}
						}
						//console.log('found: ' + found)
						if(found !== undefined && editPath.length > found+1){
							listener(typeCode, id, editPath.slice(found+1), op, edit, syncId, editId)
						}
					});
				}*/
				//console.log('byObject: ' + list.length)
				//console.log(new Error().stack)
			}
function(id, listener){
				_.assertLength(arguments, 2)

				//console.log('listening by object: ' + id)

				//if(_.isInt(id)){
					var list = lazyArray(byObject, id)
					list.push(listener);
				/*}else{
					//TODO later rework the way edit updates come in the first place - this is a temporary bridge
					//_.errout('TODO')
					var list = lazyArray(byObject, id+'')
					var innerId = id
					list.push(function(typeCode, id, editPath, op, edit, syncId, editId){
						var found
						//console.log('filtering(' + JSON.stringify(innerId) + '): ' + JSON.stringify(arguments))
						for(var i=0;i<editPath.length;++i){
							var e = editPath[i]
							if(e.op === editCodes.selectObject || e.op === editCodes.reselectObject){
								if(e.edit.id === innerId.inner){
									found = i
									break;
								}
							}
						}
						//console.log('found: ' + found)
						if(found !== undefined && editPath.length > found+1){
							listener(typeCode, id, editPath.slice(found+1), op, edit, syncId, editId)
						}
					});
				}*/
				//console.log('byObject: ' + list.length)
				//console.log(new Error().stack)
			}
reports any edits that happen to the given object (including to other normalized objects by FK) cb(typeCode, id, path, edit)