UNPKG

minotor

Version:

A lightweight client-side transit routing library.

974 lines (881 loc) 29.2 kB
// Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: // protoc-gen-ts_proto v2.10.1 // protoc v4.23.4 // source: src/timetable/proto/v1/timetable.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; export const protobufPackage = "minotor.timetable.v1"; export enum TransferType { TRANSFER_TYPE_UNSPECIFIED = 0, TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT = 1, TRANSFER_TYPE_TIMED_TRANSFER = 2, TRANSFER_TYPE_REQUIRES_MINIMAL_TIME = 3, TRANSFER_TYPE_IN_SEAT_TRANSFER = 4, UNRECOGNIZED = -1, } export function transferTypeFromJSON(object: any): TransferType { switch (object) { case 0: case "TRANSFER_TYPE_UNSPECIFIED": return TransferType.TRANSFER_TYPE_UNSPECIFIED; case 1: case "TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT": return TransferType.TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT; case 2: case "TRANSFER_TYPE_TIMED_TRANSFER": return TransferType.TRANSFER_TYPE_TIMED_TRANSFER; case 3: case "TRANSFER_TYPE_REQUIRES_MINIMAL_TIME": return TransferType.TRANSFER_TYPE_REQUIRES_MINIMAL_TIME; case 4: case "TRANSFER_TYPE_IN_SEAT_TRANSFER": return TransferType.TRANSFER_TYPE_IN_SEAT_TRANSFER; case -1: case "UNRECOGNIZED": default: return TransferType.UNRECOGNIZED; } } export function transferTypeToJSON(object: TransferType): string { switch (object) { case TransferType.TRANSFER_TYPE_UNSPECIFIED: return "TRANSFER_TYPE_UNSPECIFIED"; case TransferType.TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT: return "TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT"; case TransferType.TRANSFER_TYPE_TIMED_TRANSFER: return "TRANSFER_TYPE_TIMED_TRANSFER"; case TransferType.TRANSFER_TYPE_REQUIRES_MINIMAL_TIME: return "TRANSFER_TYPE_REQUIRES_MINIMAL_TIME"; case TransferType.TRANSFER_TYPE_IN_SEAT_TRANSFER: return "TRANSFER_TYPE_IN_SEAT_TRANSFER"; case TransferType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } export enum RouteType { ROUTE_TYPE_UNSPECIFIED = 0, ROUTE_TYPE_TRAM = 1, ROUTE_TYPE_SUBWAY = 2, ROUTE_TYPE_RAIL = 3, ROUTE_TYPE_BUS = 4, ROUTE_TYPE_FERRY = 5, ROUTE_TYPE_CABLE_TRAM = 6, ROUTE_TYPE_AERIAL_LIFT = 7, ROUTE_TYPE_FUNICULAR = 8, ROUTE_TYPE_TROLLEYBUS = 9, ROUTE_TYPE_MONORAIL = 10, UNRECOGNIZED = -1, } export function routeTypeFromJSON(object: any): RouteType { switch (object) { case 0: case "ROUTE_TYPE_UNSPECIFIED": return RouteType.ROUTE_TYPE_UNSPECIFIED; case 1: case "ROUTE_TYPE_TRAM": return RouteType.ROUTE_TYPE_TRAM; case 2: case "ROUTE_TYPE_SUBWAY": return RouteType.ROUTE_TYPE_SUBWAY; case 3: case "ROUTE_TYPE_RAIL": return RouteType.ROUTE_TYPE_RAIL; case 4: case "ROUTE_TYPE_BUS": return RouteType.ROUTE_TYPE_BUS; case 5: case "ROUTE_TYPE_FERRY": return RouteType.ROUTE_TYPE_FERRY; case 6: case "ROUTE_TYPE_CABLE_TRAM": return RouteType.ROUTE_TYPE_CABLE_TRAM; case 7: case "ROUTE_TYPE_AERIAL_LIFT": return RouteType.ROUTE_TYPE_AERIAL_LIFT; case 8: case "ROUTE_TYPE_FUNICULAR": return RouteType.ROUTE_TYPE_FUNICULAR; case 9: case "ROUTE_TYPE_TROLLEYBUS": return RouteType.ROUTE_TYPE_TROLLEYBUS; case 10: case "ROUTE_TYPE_MONORAIL": return RouteType.ROUTE_TYPE_MONORAIL; case -1: case "UNRECOGNIZED": default: return RouteType.UNRECOGNIZED; } } export function routeTypeToJSON(object: RouteType): string { switch (object) { case RouteType.ROUTE_TYPE_UNSPECIFIED: return "ROUTE_TYPE_UNSPECIFIED"; case RouteType.ROUTE_TYPE_TRAM: return "ROUTE_TYPE_TRAM"; case RouteType.ROUTE_TYPE_SUBWAY: return "ROUTE_TYPE_SUBWAY"; case RouteType.ROUTE_TYPE_RAIL: return "ROUTE_TYPE_RAIL"; case RouteType.ROUTE_TYPE_BUS: return "ROUTE_TYPE_BUS"; case RouteType.ROUTE_TYPE_FERRY: return "ROUTE_TYPE_FERRY"; case RouteType.ROUTE_TYPE_CABLE_TRAM: return "ROUTE_TYPE_CABLE_TRAM"; case RouteType.ROUTE_TYPE_AERIAL_LIFT: return "ROUTE_TYPE_AERIAL_LIFT"; case RouteType.ROUTE_TYPE_FUNICULAR: return "ROUTE_TYPE_FUNICULAR"; case RouteType.ROUTE_TYPE_TROLLEYBUS: return "ROUTE_TYPE_TROLLEYBUS"; case RouteType.ROUTE_TYPE_MONORAIL: return "ROUTE_TYPE_MONORAIL"; case RouteType.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } export interface Route { /** * Arrivals and departures encoded as a 16 bit uint array. * Format: [arrival1, departure1, arrival2, departure2, etc.] */ stopTimes: Uint8Array; /** * PickUp and DropOff types represented as an 8 bit uint array. * Values: * 0: REGULAR * 1: NOT_AVAILABLE * 2: MUST_PHONE_AGENCY * 3: MUST_COORDINATE_WITH_DRIVER * Format: [drop_off_1][pickup_1][drop_off_0][pickup_0] * 2 bits per value */ pickupDropOffTypes: Uint8Array; /** * Stops encoded as a 32 bit uint array. * Format: [stop1, stop2, stop3, etc.] */ stops: Uint8Array; serviceRouteId: number; } export interface Transfer { destination: number; type: TransferType; minTransferTime?: number | undefined; } export interface TripStop { stopIndex: number; routeId: number; tripIndex: number; } export interface TripTransferEntry { origin: TripStop | undefined; destinations: TripStop[]; } export interface StopAdjacency { routes: number[]; transfers: Transfer[]; } export interface ServiceRoute { type: RouteType; name: string; routes: number[]; } export interface Timetable { stopsAdjacency: StopAdjacency[]; routesAdjacency: Route[]; serviceRoutes: ServiceRoute[]; tripContinuations: TripTransferEntry[]; guaranteedTripTransfers: TripTransferEntry[]; } function createBaseRoute(): Route { return { stopTimes: new Uint8Array(0), pickupDropOffTypes: new Uint8Array(0), stops: new Uint8Array(0), serviceRouteId: 0, }; } export const Route: MessageFns<Route> = { encode(message: Route, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.stopTimes.length !== 0) { writer.uint32(10).bytes(message.stopTimes); } if (message.pickupDropOffTypes.length !== 0) { writer.uint32(18).bytes(message.pickupDropOffTypes); } if (message.stops.length !== 0) { writer.uint32(26).bytes(message.stops); } if (message.serviceRouteId !== 0) { writer.uint32(32).uint32(message.serviceRouteId); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Route { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRoute(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.stopTimes = reader.bytes(); continue; } case 2: { if (tag !== 18) { break; } message.pickupDropOffTypes = reader.bytes(); continue; } case 3: { if (tag !== 26) { break; } message.stops = reader.bytes(); continue; } case 4: { if (tag !== 32) { break; } message.serviceRouteId = reader.uint32(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): Route { return { stopTimes: isSet(object.stopTimes) ? bytesFromBase64(object.stopTimes) : new Uint8Array(0), pickupDropOffTypes: isSet(object.pickupDropOffTypes) ? bytesFromBase64(object.pickupDropOffTypes) : new Uint8Array(0), stops: isSet(object.stops) ? bytesFromBase64(object.stops) : new Uint8Array(0), serviceRouteId: isSet(object.serviceRouteId) ? globalThis.Number(object.serviceRouteId) : 0, }; }, toJSON(message: Route): unknown { const obj: any = {}; if (message.stopTimes.length !== 0) { obj.stopTimes = base64FromBytes(message.stopTimes); } if (message.pickupDropOffTypes.length !== 0) { obj.pickupDropOffTypes = base64FromBytes(message.pickupDropOffTypes); } if (message.stops.length !== 0) { obj.stops = base64FromBytes(message.stops); } if (message.serviceRouteId !== 0) { obj.serviceRouteId = Math.round(message.serviceRouteId); } return obj; }, create<I extends Exact<DeepPartial<Route>, I>>(base?: I): Route { return Route.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<Route>, I>>(object: I): Route { const message = createBaseRoute(); message.stopTimes = object.stopTimes ?? new Uint8Array(0); message.pickupDropOffTypes = object.pickupDropOffTypes ?? new Uint8Array(0); message.stops = object.stops ?? new Uint8Array(0); message.serviceRouteId = object.serviceRouteId ?? 0; return message; }, }; function createBaseTransfer(): Transfer { return { destination: 0, type: 0, minTransferTime: undefined }; } export const Transfer: MessageFns<Transfer> = { encode(message: Transfer, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.destination !== 0) { writer.uint32(8).uint32(message.destination); } if (message.type !== 0) { writer.uint32(16).int32(message.type); } if (message.minTransferTime !== undefined) { writer.uint32(24).uint32(message.minTransferTime); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Transfer { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTransfer(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 8) { break; } message.destination = reader.uint32(); continue; } case 2: { if (tag !== 16) { break; } message.type = reader.int32() as any; continue; } case 3: { if (tag !== 24) { break; } message.minTransferTime = reader.uint32(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): Transfer { return { destination: isSet(object.destination) ? globalThis.Number(object.destination) : 0, type: isSet(object.type) ? transferTypeFromJSON(object.type) : 0, minTransferTime: isSet(object.minTransferTime) ? globalThis.Number(object.minTransferTime) : undefined, }; }, toJSON(message: Transfer): unknown { const obj: any = {}; if (message.destination !== 0) { obj.destination = Math.round(message.destination); } if (message.type !== 0) { obj.type = transferTypeToJSON(message.type); } if (message.minTransferTime !== undefined) { obj.minTransferTime = Math.round(message.minTransferTime); } return obj; }, create<I extends Exact<DeepPartial<Transfer>, I>>(base?: I): Transfer { return Transfer.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<Transfer>, I>>(object: I): Transfer { const message = createBaseTransfer(); message.destination = object.destination ?? 0; message.type = object.type ?? 0; message.minTransferTime = object.minTransferTime ?? undefined; return message; }, }; function createBaseTripStop(): TripStop { return { stopIndex: 0, routeId: 0, tripIndex: 0 }; } export const TripStop: MessageFns<TripStop> = { encode(message: TripStop, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.stopIndex !== 0) { writer.uint32(8).uint32(message.stopIndex); } if (message.routeId !== 0) { writer.uint32(16).uint32(message.routeId); } if (message.tripIndex !== 0) { writer.uint32(24).uint32(message.tripIndex); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): TripStop { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTripStop(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 8) { break; } message.stopIndex = reader.uint32(); continue; } case 2: { if (tag !== 16) { break; } message.routeId = reader.uint32(); continue; } case 3: { if (tag !== 24) { break; } message.tripIndex = reader.uint32(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): TripStop { return { stopIndex: isSet(object.stopIndex) ? globalThis.Number(object.stopIndex) : 0, routeId: isSet(object.routeId) ? globalThis.Number(object.routeId) : 0, tripIndex: isSet(object.tripIndex) ? globalThis.Number(object.tripIndex) : 0, }; }, toJSON(message: TripStop): unknown { const obj: any = {}; if (message.stopIndex !== 0) { obj.stopIndex = Math.round(message.stopIndex); } if (message.routeId !== 0) { obj.routeId = Math.round(message.routeId); } if (message.tripIndex !== 0) { obj.tripIndex = Math.round(message.tripIndex); } return obj; }, create<I extends Exact<DeepPartial<TripStop>, I>>(base?: I): TripStop { return TripStop.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<TripStop>, I>>(object: I): TripStop { const message = createBaseTripStop(); message.stopIndex = object.stopIndex ?? 0; message.routeId = object.routeId ?? 0; message.tripIndex = object.tripIndex ?? 0; return message; }, }; function createBaseTripTransferEntry(): TripTransferEntry { return { origin: undefined, destinations: [] }; } export const TripTransferEntry: MessageFns<TripTransferEntry> = { encode(message: TripTransferEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.origin !== undefined) { TripStop.encode(message.origin, writer.uint32(10).fork()).join(); } for (const v of message.destinations) { TripStop.encode(v!, writer.uint32(18).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): TripTransferEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTripTransferEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.origin = TripStop.decode(reader, reader.uint32()); continue; } case 2: { if (tag !== 18) { break; } message.destinations.push(TripStop.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): TripTransferEntry { return { origin: isSet(object.origin) ? TripStop.fromJSON(object.origin) : undefined, destinations: globalThis.Array.isArray(object?.destinations) ? object.destinations.map((e: any) => TripStop.fromJSON(e)) : [], }; }, toJSON(message: TripTransferEntry): unknown { const obj: any = {}; if (message.origin !== undefined) { obj.origin = TripStop.toJSON(message.origin); } if (message.destinations?.length) { obj.destinations = message.destinations.map((e) => TripStop.toJSON(e)); } return obj; }, create<I extends Exact<DeepPartial<TripTransferEntry>, I>>(base?: I): TripTransferEntry { return TripTransferEntry.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<TripTransferEntry>, I>>(object: I): TripTransferEntry { const message = createBaseTripTransferEntry(); message.origin = (object.origin !== undefined && object.origin !== null) ? TripStop.fromPartial(object.origin) : undefined; message.destinations = object.destinations?.map((e) => TripStop.fromPartial(e)) || []; return message; }, }; function createBaseStopAdjacency(): StopAdjacency { return { routes: [], transfers: [] }; } export const StopAdjacency: MessageFns<StopAdjacency> = { encode(message: StopAdjacency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { writer.uint32(10).fork(); for (const v of message.routes) { writer.uint32(v); } writer.join(); for (const v of message.transfers) { Transfer.encode(v!, writer.uint32(18).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): StopAdjacency { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseStopAdjacency(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag === 8) { message.routes.push(reader.uint32()); continue; } if (tag === 10) { const end2 = reader.uint32() + reader.pos; while (reader.pos < end2) { message.routes.push(reader.uint32()); } continue; } break; } case 2: { if (tag !== 18) { break; } message.transfers.push(Transfer.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): StopAdjacency { return { routes: globalThis.Array.isArray(object?.routes) ? object.routes.map((e: any) => globalThis.Number(e)) : [], transfers: globalThis.Array.isArray(object?.transfers) ? object.transfers.map((e: any) => Transfer.fromJSON(e)) : [], }; }, toJSON(message: StopAdjacency): unknown { const obj: any = {}; if (message.routes?.length) { obj.routes = message.routes.map((e) => Math.round(e)); } if (message.transfers?.length) { obj.transfers = message.transfers.map((e) => Transfer.toJSON(e)); } return obj; }, create<I extends Exact<DeepPartial<StopAdjacency>, I>>(base?: I): StopAdjacency { return StopAdjacency.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<StopAdjacency>, I>>(object: I): StopAdjacency { const message = createBaseStopAdjacency(); message.routes = object.routes?.map((e) => e) || []; message.transfers = object.transfers?.map((e) => Transfer.fromPartial(e)) || []; return message; }, }; function createBaseServiceRoute(): ServiceRoute { return { type: 0, name: "", routes: [] }; } export const ServiceRoute: MessageFns<ServiceRoute> = { encode(message: ServiceRoute, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.type !== 0) { writer.uint32(8).int32(message.type); } if (message.name !== "") { writer.uint32(18).string(message.name); } writer.uint32(26).fork(); for (const v of message.routes) { writer.uint32(v); } writer.join(); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ServiceRoute { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseServiceRoute(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 8) { break; } message.type = reader.int32() as any; continue; } case 2: { if (tag !== 18) { break; } message.name = reader.string(); continue; } case 3: { if (tag === 24) { message.routes.push(reader.uint32()); continue; } if (tag === 26) { const end2 = reader.uint32() + reader.pos; while (reader.pos < end2) { message.routes.push(reader.uint32()); } continue; } break; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): ServiceRoute { return { type: isSet(object.type) ? routeTypeFromJSON(object.type) : 0, name: isSet(object.name) ? globalThis.String(object.name) : "", routes: globalThis.Array.isArray(object?.routes) ? object.routes.map((e: any) => globalThis.Number(e)) : [], }; }, toJSON(message: ServiceRoute): unknown { const obj: any = {}; if (message.type !== 0) { obj.type = routeTypeToJSON(message.type); } if (message.name !== "") { obj.name = message.name; } if (message.routes?.length) { obj.routes = message.routes.map((e) => Math.round(e)); } return obj; }, create<I extends Exact<DeepPartial<ServiceRoute>, I>>(base?: I): ServiceRoute { return ServiceRoute.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<ServiceRoute>, I>>(object: I): ServiceRoute { const message = createBaseServiceRoute(); message.type = object.type ?? 0; message.name = object.name ?? ""; message.routes = object.routes?.map((e) => e) || []; return message; }, }; function createBaseTimetable(): Timetable { return { stopsAdjacency: [], routesAdjacency: [], serviceRoutes: [], tripContinuations: [], guaranteedTripTransfers: [], }; } export const Timetable: MessageFns<Timetable> = { encode(message: Timetable, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { for (const v of message.stopsAdjacency) { StopAdjacency.encode(v!, writer.uint32(10).fork()).join(); } for (const v of message.routesAdjacency) { Route.encode(v!, writer.uint32(18).fork()).join(); } for (const v of message.serviceRoutes) { ServiceRoute.encode(v!, writer.uint32(26).fork()).join(); } for (const v of message.tripContinuations) { TripTransferEntry.encode(v!, writer.uint32(34).fork()).join(); } for (const v of message.guaranteedTripTransfers) { TripTransferEntry.encode(v!, writer.uint32(42).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Timetable { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); const end = length === undefined ? reader.len : reader.pos + length; const message = createBaseTimetable(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.stopsAdjacency.push(StopAdjacency.decode(reader, reader.uint32())); continue; } case 2: { if (tag !== 18) { break; } message.routesAdjacency.push(Route.decode(reader, reader.uint32())); continue; } case 3: { if (tag !== 26) { break; } message.serviceRoutes.push(ServiceRoute.decode(reader, reader.uint32())); continue; } case 4: { if (tag !== 34) { break; } message.tripContinuations.push(TripTransferEntry.decode(reader, reader.uint32())); continue; } case 5: { if (tag !== 42) { break; } message.guaranteedTripTransfers.push(TripTransferEntry.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, fromJSON(object: any): Timetable { return { stopsAdjacency: globalThis.Array.isArray(object?.stopsAdjacency) ? object.stopsAdjacency.map((e: any) => StopAdjacency.fromJSON(e)) : [], routesAdjacency: globalThis.Array.isArray(object?.routesAdjacency) ? object.routesAdjacency.map((e: any) => Route.fromJSON(e)) : [], serviceRoutes: globalThis.Array.isArray(object?.serviceRoutes) ? object.serviceRoutes.map((e: any) => ServiceRoute.fromJSON(e)) : [], tripContinuations: globalThis.Array.isArray(object?.tripContinuations) ? object.tripContinuations.map((e: any) => TripTransferEntry.fromJSON(e)) : [], guaranteedTripTransfers: globalThis.Array.isArray(object?.guaranteedTripTransfers) ? object.guaranteedTripTransfers.map((e: any) => TripTransferEntry.fromJSON(e)) : [], }; }, toJSON(message: Timetable): unknown { const obj: any = {}; if (message.stopsAdjacency?.length) { obj.stopsAdjacency = message.stopsAdjacency.map((e) => StopAdjacency.toJSON(e)); } if (message.routesAdjacency?.length) { obj.routesAdjacency = message.routesAdjacency.map((e) => Route.toJSON(e)); } if (message.serviceRoutes?.length) { obj.serviceRoutes = message.serviceRoutes.map((e) => ServiceRoute.toJSON(e)); } if (message.tripContinuations?.length) { obj.tripContinuations = message.tripContinuations.map((e) => TripTransferEntry.toJSON(e)); } if (message.guaranteedTripTransfers?.length) { obj.guaranteedTripTransfers = message.guaranteedTripTransfers.map((e) => TripTransferEntry.toJSON(e)); } return obj; }, create<I extends Exact<DeepPartial<Timetable>, I>>(base?: I): Timetable { return Timetable.fromPartial(base ?? ({} as any)); }, fromPartial<I extends Exact<DeepPartial<Timetable>, I>>(object: I): Timetable { const message = createBaseTimetable(); message.stopsAdjacency = object.stopsAdjacency?.map((e) => StopAdjacency.fromPartial(e)) || []; message.routesAdjacency = object.routesAdjacency?.map((e) => Route.fromPartial(e)) || []; message.serviceRoutes = object.serviceRoutes?.map((e) => ServiceRoute.fromPartial(e)) || []; message.tripContinuations = object.tripContinuations?.map((e) => TripTransferEntry.fromPartial(e)) || []; message.guaranteedTripTransfers = object.guaranteedTripTransfers?.map((e) => TripTransferEntry.fromPartial(e)) || []; return message; }, }; function bytesFromBase64(b64: string): Uint8Array { if ((globalThis as any).Buffer) { return Uint8Array.from(globalThis.Buffer.from(b64, "base64")); } else { const bin = globalThis.atob(b64); const arr = new Uint8Array(bin.length); for (let i = 0; i < bin.length; ++i) { arr[i] = bin.charCodeAt(i); } return arr; } } function base64FromBytes(arr: Uint8Array): string { if ((globalThis as any).Buffer) { return globalThis.Buffer.from(arr).toString("base64"); } else { const bin: string[] = []; arr.forEach((byte) => { bin.push(globalThis.String.fromCharCode(byte)); }); return globalThis.btoa(bin.join("")); } } type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> } : Partial<T>; type KeysOfUnion<T> = T extends T ? keyof T : never; export type Exact<P, I extends P> = P extends Builtin ? P : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never }; function isSet(value: any): boolean { return value !== null && value !== undefined; } export interface MessageFns<T> { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create<I extends Exact<DeepPartial<T>, I>>(base?: I): T; fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T; }