Здесь секунды используются намеренно. moex-chart работает с Unix timestamp в секундах и форматирует время через dayjs.unix(time). Если убрать / 1000, в Candle.time попадут миллисекунды и формат времени станет некорректным.
Здесь [] соответствует контракту timeframeConvolution, метод возвращает Candle[]. Пустые данные обрабатываются выше в getDataSource и там уже возвращается null, поэтому до этого guard в штатном сценарии пустой массив не доходит.
Первая realtime-свеча здесь не пропускается. В этой ветке инициализируются realtimeSessionStart и prevRealtimeDataArr, после чего выполнение метода продолжается ниже вызывается aggregateCandles и затем update(candle).