minotor
Version:
A lightweight client-side transit routing library.
974 lines (881 loc) • 29.2 kB
text/typescript
// 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;
}