@nyc-transit-kit/mta
v0.3.0
Published
Effect access to official MTA data: GTFS static zips, GTFS-realtime feeds, elevator and escalator outages, Bus Time, and MTA datasets on NYS Open Data.
Maintainers
Readme
@nyc-transit-kit/mta
Effect access to official MTA data: GTFS static zips, GTFS-realtime feeds, elevator and escalator outages, Bus Time, and MTA datasets on NYS Open Data.
bun add effect@^4.0.6 @nyc-transit-kit/mtaimport * as ElevatorEscalator from "@nyc-transit-kit/mta/ElevatorEscalator"
import * as GtfsRealtime from "@nyc-transit-kit/mta/GtfsRealtime"
import * as Effect from "effect/Effect"
import * as FetchHttpClient from "effect/http/FetchHttpClient"
export const program = Effect.gen(function* () {
const lirr = yield* GtfsRealtime.fetchMessage(GtfsRealtime.feeds.lirr.url)
const outages = yield* ElevatorEscalator.fetchRows(
ElevatorEscalator.feeds["elevator-escalator-current"]
)
return { lirr: GtfsRealtime.summarize(lirr), outages: outages.length }
}).pipe(Effect.provide(FetchHttpClient.layer))- Each module's
feedsis a plain record indexed by name:GtfsStatic.feeds,GtfsRealtime.feeds,ElevatorEscalator.feeds,BusTime.feeds. - The MTA answers a wrong feed path with HTTP 200 and an XML error, so
GtfsRealtime.fetchMessagedecodes before it succeeds. - The "current" elevator feed includes upcoming outages; filter on
isupcomingoutage. GtfsRealtime.capturesaves raw bytes with a SHA-256 manifest and needs aCryptolayer, such asBunCrypto.layerfrom@effect/platform-bun.- Modules:
/GtfsStatic,/GtfsRealtime,/ElevatorEscalator,/BusTime,/MtaOpenData.
See the API reference.
