export async function createGlobalPeersMap()

in src/global_map.js [74:109]


export async function createGlobalPeersMap(participantsStartValue, signalName) {
  // Currently the values can only be counters
  // startValue should be a number
  const map = {}

  const createValueSignal = getCreateValueSignalFunction(participantsStartValue)

  map.getName = () => signalName
  map.keys = async () => {
    const keys = []
    const allParticipantsIds = await getAllParticipantsIds()
    for (const participantId of allParticipantsIds) {
      if (Object.prototype.hasOwnProperty.call(map, participantId)) {
        keys.push(participantId)
      }
    }
    return keys
  }

  map.get = async (participantId) => {
    return map[participantId]
  }

  map.set = async (participantId, value) => {
    if (Object.prototype.hasOwnProperty.call(map, participantId)) {
      map[participantId].set(value)
    } else {
      map[participantId] = await createValueSignal(value, `${signalName}${participantId}`)
    }
  }

  await addCurrentParticipants(map, participantsStartValue)
  await addNewParticipants(map, participantsStartValue)

  return map
}