├── .github ├── ISSUE_TEMPLATE │ └── feedback.yaml └── workflows │ ├── bump.yml │ └── lint.yml ├── .gitignore ├── .microcks ├── openapi.yaml └── overlays.yaml ├── .postman ├── api └── api_672950c5-78b2-4f25-a06a-ed73d7d9a87f ├── .vacuum └── ruleset.yaml ├── LICENSE_CC-BY-NC-SA-4.0 ├── README.md ├── docs └── getting-started.md ├── openapi.yaml ├── package-lock.json ├── package.json ├── server ├── README.md ├── lib │ ├── api │ │ ├── errors │ │ │ ├── BadRequestError.js │ │ │ ├── ConflictError.js │ │ │ ├── ForbiddenError.js │ │ │ ├── InternalServerError.js │ │ │ ├── NotFoundError.js │ │ │ ├── TooManyRequestsError.js │ │ │ ├── UnauthorizedError.js │ │ │ └── index.js │ │ ├── index.js │ │ ├── resources │ │ │ ├── bookings │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── BookingsService.js │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingResponse.js │ │ │ │ │ ├── GetBookingResponse.js │ │ │ │ │ ├── GetBookingsResponse.js │ │ │ │ │ ├── GetBookingsResponseLinks.js │ │ │ │ │ ├── NewBookingPayload.js │ │ │ │ │ ├── NewBookingPayloadLinks.js │ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── payments │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── PaymentsService.js │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingPaymentResponse.js │ │ │ │ │ └── index.js │ │ │ ├── stations │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── StationsService.js │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── GetStationsResponse.js │ │ │ │ │ ├── GetStationsResponseLinks.js │ │ │ │ │ └── index.js │ │ │ └── trips │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ ├── TripsService.js │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ ├── GetTripsResponse.js │ │ │ │ ├── GetTripsResponseLinks.js │ │ │ │ └── index.js │ │ └── types │ │ │ ├── Booking.js │ │ │ ├── BookingPayment.js │ │ │ ├── BookingPaymentCurrency.js │ │ │ ├── BookingPaymentSource.js │ │ │ ├── BookingPaymentSourceBankAccount.js │ │ │ ├── BookingPaymentSourceBankAccountAccountType.js │ │ │ ├── BookingPaymentStatus.js │ │ │ ├── Card.js │ │ │ ├── LinksBooking.js │ │ │ ├── LinksPagination.js │ │ │ ├── LinksSelf.js │ │ │ ├── OauthScope.js │ │ │ ├── Problem.js │ │ │ ├── Station.js │ │ │ ├── Trip.js │ │ │ ├── WrapperCollection.js │ │ │ └── index.js │ ├── core │ │ ├── index.js │ │ └── schemas │ │ │ ├── Schema.js │ │ │ ├── builders │ │ │ ├── date │ │ │ │ ├── date.js │ │ │ │ └── index.js │ │ │ ├── enum │ │ │ │ ├── enum.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── lazy │ │ │ │ ├── index.js │ │ │ │ ├── lazy.js │ │ │ │ └── lazyObject.js │ │ │ ├── list │ │ │ │ ├── index.js │ │ │ │ └── list.js │ │ │ ├── literals │ │ │ │ ├── booleanLiteral.js │ │ │ │ ├── index.js │ │ │ │ └── stringLiteral.js │ │ │ ├── object-like │ │ │ │ ├── getObjectLikeUtils.js │ │ │ │ ├── index.js │ │ │ │ └── types.js │ │ │ ├── object │ │ │ │ ├── index.js │ │ │ │ ├── object.js │ │ │ │ ├── objectWithoutOptionalProperties.js │ │ │ │ ├── property.js │ │ │ │ └── types.js │ │ │ ├── primitives │ │ │ │ ├── any.js │ │ │ │ ├── boolean.js │ │ │ │ ├── index.js │ │ │ │ ├── number.js │ │ │ │ ├── string.js │ │ │ │ └── unknown.js │ │ │ ├── record │ │ │ │ ├── index.js │ │ │ │ ├── record.js │ │ │ │ └── types.js │ │ │ ├── schema-utils │ │ │ │ ├── JsonError.js │ │ │ │ ├── ParseError.js │ │ │ │ ├── getSchemaUtils.js │ │ │ │ ├── index.js │ │ │ │ └── stringifyValidationErrors.js │ │ │ ├── set │ │ │ │ ├── index.js │ │ │ │ └── set.js │ │ │ ├── undiscriminated-union │ │ │ │ ├── index.js │ │ │ │ ├── types.js │ │ │ │ └── undiscriminatedUnion.js │ │ │ └── union │ │ │ │ ├── discriminant.js │ │ │ │ ├── index.js │ │ │ │ ├── types.js │ │ │ │ └── union.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ ├── MaybePromise.js │ │ │ ├── addQuestionMarksToNullableProperties.js │ │ │ ├── createIdentitySchemaCreator.js │ │ │ ├── entries.js │ │ │ ├── filterObject.js │ │ │ ├── getErrorMessageForIncorrectType.js │ │ │ ├── isPlainObject.js │ │ │ ├── keys.js │ │ │ ├── maybeSkipValidation.js │ │ │ └── partition.js │ ├── database.js │ ├── errors │ │ ├── BumpshApiError.js │ │ └── index.js │ ├── index.js │ ├── register.js │ ├── serialization │ │ ├── index.js │ │ ├── resources │ │ │ ├── bookings │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingResponse.js │ │ │ │ │ ├── GetBookingResponse.js │ │ │ │ │ ├── GetBookingsResponse.js │ │ │ │ │ ├── GetBookingsResponseLinks.js │ │ │ │ │ ├── NewBookingPayload.js │ │ │ │ │ ├── NewBookingPayloadLinks.js │ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── payments │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingPaymentResponse.js │ │ │ │ │ └── index.js │ │ │ ├── stations │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── GetStationsResponse.js │ │ │ │ │ ├── GetStationsResponseLinks.js │ │ │ │ │ └── index.js │ │ │ └── trips │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ ├── GetTripsResponse.js │ │ │ │ ├── GetTripsResponseLinks.js │ │ │ │ └── index.js │ │ └── types │ │ │ ├── Booking.js │ │ │ ├── BookingPayment.js │ │ │ ├── BookingPaymentCurrency.js │ │ │ ├── BookingPaymentSource.js │ │ │ ├── BookingPaymentSourceBankAccount.js │ │ │ ├── BookingPaymentSourceBankAccountAccountType.js │ │ │ ├── BookingPaymentStatus.js │ │ │ ├── Card.js │ │ │ ├── LinksBooking.js │ │ │ ├── LinksPagination.js │ │ │ ├── LinksSelf.js │ │ │ ├── OauthScope.js │ │ │ ├── Problem.js │ │ │ ├── Station.js │ │ │ ├── Trip.js │ │ │ ├── WrapperCollection.js │ │ │ └── index.js │ ├── server.js │ └── services │ │ ├── bookings.js │ │ ├── payments.js │ │ ├── stations.js │ │ └── trips.js ├── package.json ├── src │ ├── api │ │ ├── errors │ │ │ ├── BadRequestError.d.ts │ │ │ ├── BadRequestError.js │ │ │ ├── ConflictError.d.ts │ │ │ ├── ConflictError.js │ │ │ ├── ForbiddenError.d.ts │ │ │ ├── ForbiddenError.js │ │ │ ├── InternalServerError.d.ts │ │ │ ├── InternalServerError.js │ │ │ ├── NotFoundError.d.ts │ │ │ ├── NotFoundError.js │ │ │ ├── TooManyRequestsError.d.ts │ │ │ ├── TooManyRequestsError.js │ │ │ ├── UnauthorizedError.d.ts │ │ │ ├── UnauthorizedError.js │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── resources │ │ │ ├── bookings │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── BookingsService.d.ts │ │ │ │ │ ├── BookingsService.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingResponse.d.ts │ │ │ │ │ ├── CreateBookingResponse.js │ │ │ │ │ ├── GetBookingResponse.d.ts │ │ │ │ │ ├── GetBookingResponse.js │ │ │ │ │ ├── GetBookingsResponse.d.ts │ │ │ │ │ ├── GetBookingsResponse.js │ │ │ │ │ ├── GetBookingsResponseLinks.d.ts │ │ │ │ │ ├── GetBookingsResponseLinks.js │ │ │ │ │ ├── NewBookingPayload.d.ts │ │ │ │ │ ├── NewBookingPayload.js │ │ │ │ │ ├── NewBookingPayloadLinks.d.ts │ │ │ │ │ ├── NewBookingPayloadLinks.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── payments │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── PaymentsService.d.ts │ │ │ │ │ ├── PaymentsService.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingPaymentResponse.d.ts │ │ │ │ │ ├── CreateBookingPaymentResponse.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ ├── stations │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ │ ├── StationsService.d.ts │ │ │ │ │ ├── StationsService.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ │ ├── GetStationsResponse.d.ts │ │ │ │ │ ├── GetStationsResponse.js │ │ │ │ │ ├── GetStationsResponseLinks.d.ts │ │ │ │ │ ├── GetStationsResponseLinks.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ └── trips │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── service │ │ │ │ ├── TripsService.d.ts │ │ │ │ ├── TripsService.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ │ │ └── types │ │ │ │ ├── GetTripsResponse.d.ts │ │ │ │ ├── GetTripsResponse.js │ │ │ │ ├── GetTripsResponseLinks.d.ts │ │ │ │ ├── GetTripsResponseLinks.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ └── types │ │ │ ├── Booking.d.ts │ │ │ ├── Booking.js │ │ │ ├── BookingPayment.d.ts │ │ │ ├── BookingPayment.js │ │ │ ├── BookingPaymentCurrency.d.ts │ │ │ ├── BookingPaymentCurrency.js │ │ │ ├── BookingPaymentSource.d.ts │ │ │ ├── BookingPaymentSource.js │ │ │ ├── BookingPaymentSourceBankAccount.d.ts │ │ │ ├── BookingPaymentSourceBankAccount.js │ │ │ ├── BookingPaymentSourceBankAccountAccountType.d.ts │ │ │ ├── BookingPaymentSourceBankAccountAccountType.js │ │ │ ├── BookingPaymentStatus.d.ts │ │ │ ├── BookingPaymentStatus.js │ │ │ ├── Card.d.ts │ │ │ ├── Card.js │ │ │ ├── LinksBooking.d.ts │ │ │ ├── LinksBooking.js │ │ │ ├── LinksPagination.d.ts │ │ │ ├── LinksPagination.js │ │ │ ├── LinksSelf.d.ts │ │ │ ├── LinksSelf.js │ │ │ ├── OauthScope.d.ts │ │ │ ├── OauthScope.js │ │ │ ├── Problem.d.ts │ │ │ ├── Problem.js │ │ │ ├── Station.d.ts │ │ │ ├── Station.js │ │ │ ├── Trip.d.ts │ │ │ ├── Trip.js │ │ │ ├── WrapperCollection.d.ts │ │ │ ├── WrapperCollection.js │ │ │ ├── index.d.ts │ │ │ └── index.js │ ├── core │ │ ├── index.d.ts │ │ ├── index.js │ │ └── schemas │ │ │ ├── Schema.d.ts │ │ │ ├── Schema.js │ │ │ ├── builders │ │ │ ├── date │ │ │ │ ├── date.d.ts │ │ │ │ ├── date.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ │ ├── enum │ │ │ │ ├── enum.d.ts │ │ │ │ ├── enum.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── lazy │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── lazy.d.ts │ │ │ │ ├── lazy.js │ │ │ │ ├── lazyObject.d.ts │ │ │ │ └── lazyObject.js │ │ │ ├── list │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── list.d.ts │ │ │ │ └── list.js │ │ │ ├── literals │ │ │ │ ├── booleanLiteral.d.ts │ │ │ │ ├── booleanLiteral.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── stringLiteral.d.ts │ │ │ │ └── stringLiteral.js │ │ │ ├── object-like │ │ │ │ ├── getObjectLikeUtils.d.ts │ │ │ │ ├── getObjectLikeUtils.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── types.d.ts │ │ │ │ └── types.js │ │ │ ├── object │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── object.d.ts │ │ │ │ ├── object.js │ │ │ │ ├── objectWithoutOptionalProperties.d.ts │ │ │ │ ├── objectWithoutOptionalProperties.js │ │ │ │ ├── property.d.ts │ │ │ │ ├── property.js │ │ │ │ ├── types.d.ts │ │ │ │ └── types.js │ │ │ ├── primitives │ │ │ │ ├── any.d.ts │ │ │ │ ├── any.js │ │ │ │ ├── boolean.d.ts │ │ │ │ ├── boolean.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── number.d.ts │ │ │ │ ├── number.js │ │ │ │ ├── string.d.ts │ │ │ │ ├── string.js │ │ │ │ ├── unknown.d.ts │ │ │ │ └── unknown.js │ │ │ ├── record │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── record.d.ts │ │ │ │ ├── record.js │ │ │ │ ├── types.d.ts │ │ │ │ └── types.js │ │ │ ├── schema-utils │ │ │ │ ├── JsonError.d.ts │ │ │ │ ├── JsonError.js │ │ │ │ ├── ParseError.d.ts │ │ │ │ ├── ParseError.js │ │ │ │ ├── getSchemaUtils.d.ts │ │ │ │ ├── getSchemaUtils.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── stringifyValidationErrors.d.ts │ │ │ │ └── stringifyValidationErrors.js │ │ │ ├── set │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── set.d.ts │ │ │ │ └── set.js │ │ │ ├── undiscriminated-union │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── types.js │ │ │ │ ├── undiscriminatedUnion.d.ts │ │ │ │ └── undiscriminatedUnion.js │ │ │ └── union │ │ │ │ ├── discriminant.d.ts │ │ │ │ ├── discriminant.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── types.js │ │ │ │ ├── union.d.ts │ │ │ │ └── union.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── utils │ │ │ ├── MaybePromise.d.ts │ │ │ ├── MaybePromise.js │ │ │ ├── addQuestionMarksToNullableProperties.d.ts │ │ │ ├── addQuestionMarksToNullableProperties.js │ │ │ ├── createIdentitySchemaCreator.d.ts │ │ │ ├── createIdentitySchemaCreator.js │ │ │ ├── entries.d.ts │ │ │ ├── entries.js │ │ │ ├── filterObject.d.ts │ │ │ ├── filterObject.js │ │ │ ├── getErrorMessageForIncorrectType.d.ts │ │ │ ├── getErrorMessageForIncorrectType.js │ │ │ ├── isPlainObject.d.ts │ │ │ ├── isPlainObject.js │ │ │ ├── keys.d.ts │ │ │ ├── keys.js │ │ │ ├── maybeSkipValidation.d.ts │ │ │ ├── maybeSkipValidation.js │ │ │ ├── partition.d.ts │ │ │ └── partition.js │ ├── database.ts │ ├── errors │ │ ├── BumpshApiError.d.ts │ │ ├── BumpshApiError.js │ │ ├── index.d.ts │ │ └── index.js │ ├── index.d.ts │ ├── index.js │ ├── register.d.ts │ ├── register.js │ ├── serialization │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── resources │ │ │ ├── bookings │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingResponse.d.ts │ │ │ │ │ ├── CreateBookingResponse.js │ │ │ │ │ ├── GetBookingResponse.d.ts │ │ │ │ │ ├── GetBookingResponse.js │ │ │ │ │ ├── GetBookingsResponse.d.ts │ │ │ │ │ ├── GetBookingsResponse.js │ │ │ │ │ ├── GetBookingsResponseLinks.d.ts │ │ │ │ │ ├── GetBookingsResponseLinks.js │ │ │ │ │ ├── NewBookingPayload.d.ts │ │ │ │ │ ├── NewBookingPayload.js │ │ │ │ │ ├── NewBookingPayloadLinks.d.ts │ │ │ │ │ ├── NewBookingPayloadLinks.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── payments │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── CreateBookingPaymentResponse.d.ts │ │ │ │ │ ├── CreateBookingPaymentResponse.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ ├── stations │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ │ ├── GetStationsResponse.d.ts │ │ │ │ │ ├── GetStationsResponse.js │ │ │ │ │ ├── GetStationsResponseLinks.d.ts │ │ │ │ │ ├── GetStationsResponseLinks.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.js │ │ │ └── trips │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── types │ │ │ │ ├── GetTripsResponse.d.ts │ │ │ │ ├── GetTripsResponse.js │ │ │ │ ├── GetTripsResponseLinks.d.ts │ │ │ │ ├── GetTripsResponseLinks.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ └── types │ │ │ ├── Booking.d.ts │ │ │ ├── Booking.js │ │ │ ├── BookingPayment.d.ts │ │ │ ├── BookingPayment.js │ │ │ ├── BookingPaymentCurrency.d.ts │ │ │ ├── BookingPaymentCurrency.js │ │ │ ├── BookingPaymentSource.d.ts │ │ │ ├── BookingPaymentSource.js │ │ │ ├── BookingPaymentSourceBankAccount.d.ts │ │ │ ├── BookingPaymentSourceBankAccount.js │ │ │ ├── BookingPaymentSourceBankAccountAccountType.d.ts │ │ │ ├── BookingPaymentSourceBankAccountAccountType.js │ │ │ ├── BookingPaymentStatus.d.ts │ │ │ ├── BookingPaymentStatus.js │ │ │ ├── Card.d.ts │ │ │ ├── Card.js │ │ │ ├── LinksBooking.d.ts │ │ │ ├── LinksBooking.js │ │ │ ├── LinksPagination.d.ts │ │ │ ├── LinksPagination.js │ │ │ ├── LinksSelf.d.ts │ │ │ ├── LinksSelf.js │ │ │ ├── OauthScope.d.ts │ │ │ ├── OauthScope.js │ │ │ ├── Problem.d.ts │ │ │ ├── Problem.js │ │ │ ├── Station.d.ts │ │ │ ├── Station.js │ │ │ ├── Trip.d.ts │ │ │ ├── Trip.js │ │ │ ├── WrapperCollection.d.ts │ │ │ ├── WrapperCollection.js │ │ │ ├── index.d.ts │ │ │ └── index.js │ ├── server.ts │ └── services │ │ ├── bookings.ts │ │ ├── payments.ts │ │ ├── stations.ts │ │ └── trips.ts ├── tsconfig.json └── vercel.json └── vacuum.conf.yaml /.github/ISSUE_TEMPLATE/feedback.yaml: -------------------------------------------------------------------------------- 1 | name: Feedback 2 | description: Help us improve this API with constructive feedback. 3 | title: "[Feedback]: " 4 | labels: ["feedback"] 5 | assignees: 6 | - philsturgeon # change this to whoever should be in charge of handling feedback 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | Thanks for taking the time to help us improve! 12 | - type: textarea 13 | id: doing-well 14 | attributes: 15 | label: What are we doing well? 16 | description: Help us know where energy has been well invested so we can keep that up. 17 | validations: 18 | required: true 19 | - type: textarea 20 | id: could-improve 21 | attributes: 22 | label: What would you like to see improved? 23 | description: Help us learn what you'd like to see done better so we can make life easier for more users. 24 | validations: 25 | required: true 26 | - type: input 27 | id: contact 28 | attributes: 29 | label: Contact Details 30 | description: How can we get in touch with you if we need more info? 31 | placeholder: "eg: email@example.com" 32 | validations: 33 | required: false 34 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | "on": 4 | pull_request: {} 5 | push: 6 | branches: [main] 7 | paths-ignore: 8 | - 'README.md' 9 | - 'src/**' 10 | 11 | jobs: 12 | build: 13 | name: API Linting 14 | runs-on: ubuntu-latest 15 | 16 | permissions: 17 | statuses: write 18 | checks: write 19 | 20 | steps: 21 | - name: Checkout code 22 | uses: actions/checkout@v4 23 | 24 | - name: Install dependencies 25 | run: npm ci 26 | 27 | - name: Lint API 28 | run: npm exec vacuum report -- --junit openapi.yaml lint-results 29 | 30 | - name: Publish Lint Results 31 | if: success() || failure() 32 | uses: mikepenz/action-junit-report@v5 33 | with: 34 | check_name: API Lint Results 35 | report_paths: lint-results-*.xml 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | server/ 3 | -------------------------------------------------------------------------------- /.postman/api: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY 2 | apis[] = {"apiId":"672950c5-78b2-4f25-a06a-ed73d7d9a87f"} 3 | configVersion = 1.0.0 4 | type = api 5 | -------------------------------------------------------------------------------- /.postman/api_672950c5-78b2-4f25-a06a-ed73d7d9a87f: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY 2 | configVersion = 1.1.0 3 | type = apiEntityData 4 | 5 | [config] 6 | id = 672950c5-78b2-4f25-a06a-ed73d7d9a87f 7 | 8 | [config.relations] 9 | 10 | [config.relations.collections] 11 | rootDirectory = postman/collections 12 | 13 | [config.relations.collections.metaData] 14 | 15 | [config.relations.apiDefinition] 16 | files[] = {"path":"openapi.yaml","metaData":{}} 17 | 18 | [config.relations.apiDefinition.metaData] 19 | type = openapi:3_1 20 | rootFiles[] = openapi.yaml 21 | -------------------------------------------------------------------------------- /.vacuum/ruleset.yaml: -------------------------------------------------------------------------------- 1 | # extends: [[spectral:oas, recommended], [vacuum:owasp, all]] 2 | extends: 3 | - spectral:oas 4 | rules: 5 | oas3-missing-example: off 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "microcks": "bump overlay openapi.yaml .microcks/overlays.yaml > .microcks/openapi.yaml" 4 | }, 5 | "devDependencies": { 6 | "@quobix/vacuum": "^0.16.3", 7 | "bump-cli": "^2.8.4" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/README.md: -------------------------------------------------------------------------------- 1 | # Train Travel Express API 2 | 3 | Following this tutorial to create a "real" API for Bump.sh's Train Travel API example. 4 | 5 | https://ahkn.dev/p/generating-express-js-apis-with-fern-api 6 | -------------------------------------------------------------------------------- /server/lib/api/errors/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./BadRequestError"), exports); 22 | __exportStar(require("./UnauthorizedError"), exports); 23 | __exportStar(require("./ForbiddenError"), exports); 24 | __exportStar(require("./TooManyRequestsError"), exports); 25 | __exportStar(require("./InternalServerError"), exports); 26 | __exportStar(require("./NotFoundError"), exports); 27 | __exportStar(require("./ConflictError"), exports); 28 | -------------------------------------------------------------------------------- /server/lib/api/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./resources"), exports); 22 | __exportStar(require("./types"), exports); 23 | __exportStar(require("./errors"), exports); 24 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | __exportStar(require("./service"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/CreateBookingResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/GetBookingResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/GetBookingsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/GetBookingsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/NewBookingPayload.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/NewBookingPayloadLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/bookings/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetBookingsResponseLinks"), exports); 22 | __exportStar(require("./GetBookingsResponse"), exports); 23 | __exportStar(require("./CreateBookingResponse"), exports); 24 | __exportStar(require("./GetBookingResponse"), exports); 25 | __exportStar(require("./NewBookingPayloadLinks"), exports); 26 | __exportStar(require("./NewBookingPayload"), exports); 27 | -------------------------------------------------------------------------------- /server/lib/api/resources/payments/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | __exportStar(require("./service"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/resources/payments/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/api/resources/payments/types/CreateBookingPaymentResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/payments/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./CreateBookingPaymentResponse"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/api/resources/stations/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | __exportStar(require("./service"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/resources/stations/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/api/resources/stations/types/GetStationsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/stations/types/GetStationsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/stations/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetStationsResponseLinks"), exports); 22 | __exportStar(require("./GetStationsResponse"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/resources/trips/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | __exportStar(require("./service"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/resources/trips/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/api/resources/trips/types/GetTripsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/trips/types/GetTripsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/resources/trips/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetTripsResponseLinks"), exports); 22 | __exportStar(require("./GetTripsResponse"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/api/types/Booking.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPayment.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPaymentCurrency.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentCurrency = void 0; 7 | exports.BookingPaymentCurrency = { 8 | Bam: "bam", 9 | Bgn: "bgn", 10 | Chf: "chf", 11 | Eur: "eur", 12 | Gbp: "gbp", 13 | Nok: "nok", 14 | Sek: "sek", 15 | Try: "try", 16 | }; 17 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPaymentSource.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPaymentSourceBankAccount.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPaymentSourceBankAccountAccountType.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentSourceBankAccountAccountType = void 0; 7 | exports.BookingPaymentSourceBankAccountAccountType = { 8 | Individual: "individual", 9 | Company: "company", 10 | }; 11 | -------------------------------------------------------------------------------- /server/lib/api/types/BookingPaymentStatus.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentStatus = void 0; 7 | exports.BookingPaymentStatus = { 8 | Pending: "pending", 9 | Succeeded: "succeeded", 10 | Failed: "failed", 11 | }; 12 | -------------------------------------------------------------------------------- /server/lib/api/types/Card.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/LinksBooking.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/LinksPagination.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/LinksSelf.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/OauthScope.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.OauthScope = void 0; 7 | exports.OauthScope = { 8 | Read: "read", 9 | Write: "write", 10 | }; 11 | -------------------------------------------------------------------------------- /server/lib/api/types/Problem.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/Station.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/Trip.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/api/types/WrapperCollection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/Schema.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.SchemaType = void 0; 4 | exports.SchemaType = { 5 | DATE: "date", 6 | ENUM: "enum", 7 | LIST: "list", 8 | STRING_LITERAL: "stringLiteral", 9 | BOOLEAN_LITERAL: "booleanLiteral", 10 | OBJECT: "object", 11 | ANY: "any", 12 | BOOLEAN: "boolean", 13 | NUMBER: "number", 14 | STRING: "string", 15 | UNKNOWN: "unknown", 16 | RECORD: "record", 17 | SET: "set", 18 | UNION: "union", 19 | UNDISCRIMINATED_UNION: "undiscriminatedUnion", 20 | OPTIONAL: "optional", 21 | }; 22 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/date/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.date = void 0; 4 | var date_1 = require("./date"); 5 | Object.defineProperty(exports, "date", { enumerable: true, get: function () { return date_1.date; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/enum/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.enum_ = void 0; 4 | var enum_1 = require("./enum"); 5 | Object.defineProperty(exports, "enum_", { enumerable: true, get: function () { return enum_1.enum_; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/lazy/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.lazyObject = exports.lazy = void 0; 4 | var lazy_1 = require("./lazy"); 5 | Object.defineProperty(exports, "lazy", { enumerable: true, get: function () { return lazy_1.lazy; } }); 6 | var lazyObject_1 = require("./lazyObject"); 7 | Object.defineProperty(exports, "lazyObject", { enumerable: true, get: function () { return lazyObject_1.lazyObject; } }); 8 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/lazy/lazy.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getMemoizedSchema = exports.constructLazyBaseSchema = exports.lazy = void 0; 4 | const schema_utils_1 = require("../schema-utils"); 5 | function lazy(getter) { 6 | const baseSchema = constructLazyBaseSchema(getter); 7 | return Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)); 8 | } 9 | exports.lazy = lazy; 10 | function constructLazyBaseSchema(getter) { 11 | return { 12 | parse: (raw, opts) => getMemoizedSchema(getter).parse(raw, opts), 13 | json: (parsed, opts) => getMemoizedSchema(getter).json(parsed, opts), 14 | getType: () => getMemoizedSchema(getter).getType(), 15 | }; 16 | } 17 | exports.constructLazyBaseSchema = constructLazyBaseSchema; 18 | function getMemoizedSchema(getter) { 19 | const castedGetter = getter; 20 | if (castedGetter.__zurg_memoized == null) { 21 | castedGetter.__zurg_memoized = getter(); 22 | } 23 | return castedGetter.__zurg_memoized; 24 | } 25 | exports.getMemoizedSchema = getMemoizedSchema; 26 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/lazy/lazyObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.lazyObject = void 0; 4 | const object_1 = require("../object"); 5 | const object_like_1 = require("../object-like"); 6 | const schema_utils_1 = require("../schema-utils"); 7 | const lazy_1 = require("./lazy"); 8 | function lazyObject(getter) { 9 | const baseSchema = Object.assign(Object.assign({}, (0, lazy_1.constructLazyBaseSchema)(getter)), { _getRawProperties: () => (0, lazy_1.getMemoizedSchema)(getter)._getRawProperties(), _getParsedProperties: () => (0, lazy_1.getMemoizedSchema)(getter)._getParsedProperties() }); 10 | return Object.assign(Object.assign(Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)), (0, object_1.getObjectUtils)(baseSchema)); 11 | } 12 | exports.lazyObject = lazyObject; 13 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/list/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.list = void 0; 4 | var list_1 = require("./list"); 5 | Object.defineProperty(exports, "list", { enumerable: true, get: function () { return list_1.list; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/literals/booleanLiteral.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.booleanLiteral = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | function booleanLiteral(literal) { 8 | const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.BOOLEAN_LITERAL, (value, { breadcrumbsPrefix = [] } = {}) => { 9 | if (value === literal) { 10 | return { 11 | ok: true, 12 | value: literal, 13 | }; 14 | } 15 | else { 16 | return { 17 | ok: false, 18 | errors: [ 19 | { 20 | path: breadcrumbsPrefix, 21 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, `${literal.toString()}`), 22 | }, 23 | ], 24 | }; 25 | } 26 | }); 27 | return schemaCreator(); 28 | } 29 | exports.booleanLiteral = booleanLiteral; 30 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/literals/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.booleanLiteral = exports.stringLiteral = void 0; 4 | var stringLiteral_1 = require("./stringLiteral"); 5 | Object.defineProperty(exports, "stringLiteral", { enumerable: true, get: function () { return stringLiteral_1.stringLiteral; } }); 6 | var booleanLiteral_1 = require("./booleanLiteral"); 7 | Object.defineProperty(exports, "booleanLiteral", { enumerable: true, get: function () { return booleanLiteral_1.booleanLiteral; } }); 8 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/literals/stringLiteral.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.stringLiteral = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | function stringLiteral(literal) { 8 | const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING_LITERAL, (value, { breadcrumbsPrefix = [] } = {}) => { 9 | if (value === literal) { 10 | return { 11 | ok: true, 12 | value: literal, 13 | }; 14 | } 15 | else { 16 | return { 17 | ok: false, 18 | errors: [ 19 | { 20 | path: breadcrumbsPrefix, 21 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, `"${literal}"`), 22 | }, 23 | ], 24 | }; 25 | } 26 | }); 27 | return schemaCreator(); 28 | } 29 | exports.stringLiteral = stringLiteral; 30 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object-like/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.withParsedProperties = exports.getObjectLikeUtils = void 0; 4 | var getObjectLikeUtils_1 = require("./getObjectLikeUtils"); 5 | Object.defineProperty(exports, "getObjectLikeUtils", { enumerable: true, get: function () { return getObjectLikeUtils_1.getObjectLikeUtils; } }); 6 | Object.defineProperty(exports, "withParsedProperties", { enumerable: true, get: function () { return getObjectLikeUtils_1.withParsedProperties; } }); 7 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object-like/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.property = exports.isProperty = exports.objectWithoutOptionalProperties = exports.object = exports.getObjectUtils = void 0; 4 | var object_1 = require("./object"); 5 | Object.defineProperty(exports, "getObjectUtils", { enumerable: true, get: function () { return object_1.getObjectUtils; } }); 6 | Object.defineProperty(exports, "object", { enumerable: true, get: function () { return object_1.object; } }); 7 | var objectWithoutOptionalProperties_1 = require("./objectWithoutOptionalProperties"); 8 | Object.defineProperty(exports, "objectWithoutOptionalProperties", { enumerable: true, get: function () { return objectWithoutOptionalProperties_1.objectWithoutOptionalProperties; } }); 9 | var property_1 = require("./property"); 10 | Object.defineProperty(exports, "isProperty", { enumerable: true, get: function () { return property_1.isProperty; } }); 11 | Object.defineProperty(exports, "property", { enumerable: true, get: function () { return property_1.property; } }); 12 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object/objectWithoutOptionalProperties.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.objectWithoutOptionalProperties = void 0; 4 | const object_1 = require("./object"); 5 | function objectWithoutOptionalProperties(schemas) { 6 | return (0, object_1.object)(schemas); 7 | } 8 | exports.objectWithoutOptionalProperties = objectWithoutOptionalProperties; 9 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object/property.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.isProperty = exports.property = void 0; 4 | function property(rawKey, valueSchema) { 5 | return { 6 | rawKey, 7 | valueSchema, 8 | isProperty: true, 9 | }; 10 | } 11 | exports.property = property; 12 | function isProperty(maybeProperty) { 13 | // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition 14 | return maybeProperty.isProperty; 15 | } 16 | exports.isProperty = isProperty; 17 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/object/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/any.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.any = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | exports.any = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.ANY, (value) => ({ ok: true, value })); 7 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/boolean.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.boolean = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.boolean = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.BOOLEAN, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "boolean") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "boolean"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.unknown = exports.string = exports.number = exports.boolean = exports.any = void 0; 4 | var any_1 = require("./any"); 5 | Object.defineProperty(exports, "any", { enumerable: true, get: function () { return any_1.any; } }); 6 | var boolean_1 = require("./boolean"); 7 | Object.defineProperty(exports, "boolean", { enumerable: true, get: function () { return boolean_1.boolean; } }); 8 | var number_1 = require("./number"); 9 | Object.defineProperty(exports, "number", { enumerable: true, get: function () { return number_1.number; } }); 10 | var string_1 = require("./string"); 11 | Object.defineProperty(exports, "string", { enumerable: true, get: function () { return string_1.string; } }); 12 | var unknown_1 = require("./unknown"); 13 | Object.defineProperty(exports, "unknown", { enumerable: true, get: function () { return unknown_1.unknown; } }); 14 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/number.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.number = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.number = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.NUMBER, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "number") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "number"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/string.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.string = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.string = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "string") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "string"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/primitives/unknown.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.unknown = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | exports.unknown = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.UNKNOWN, (value) => ({ ok: true, value })); 7 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/record/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.record = void 0; 4 | var record_1 = require("./record"); 5 | Object.defineProperty(exports, "record", { enumerable: true, get: function () { return record_1.record; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/record/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/schema-utils/JsonError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.JsonError = void 0; 4 | const stringifyValidationErrors_1 = require("./stringifyValidationErrors"); 5 | class JsonError extends Error { 6 | constructor(errors) { 7 | super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join("; ")); 8 | this.errors = errors; 9 | Object.setPrototypeOf(this, JsonError.prototype); 10 | } 11 | } 12 | exports.JsonError = JsonError; 13 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/schema-utils/ParseError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ParseError = void 0; 4 | const stringifyValidationErrors_1 = require("./stringifyValidationErrors"); 5 | class ParseError extends Error { 6 | constructor(errors) { 7 | super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join("; ")); 8 | this.errors = errors; 9 | Object.setPrototypeOf(this, ParseError.prototype); 10 | } 11 | } 12 | exports.ParseError = ParseError; 13 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/schema-utils/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ParseError = exports.JsonError = exports.transform = exports.optional = exports.getSchemaUtils = void 0; 4 | var getSchemaUtils_1 = require("./getSchemaUtils"); 5 | Object.defineProperty(exports, "getSchemaUtils", { enumerable: true, get: function () { return getSchemaUtils_1.getSchemaUtils; } }); 6 | Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return getSchemaUtils_1.optional; } }); 7 | Object.defineProperty(exports, "transform", { enumerable: true, get: function () { return getSchemaUtils_1.transform; } }); 8 | var JsonError_1 = require("./JsonError"); 9 | Object.defineProperty(exports, "JsonError", { enumerable: true, get: function () { return JsonError_1.JsonError; } }); 10 | var ParseError_1 = require("./ParseError"); 11 | Object.defineProperty(exports, "ParseError", { enumerable: true, get: function () { return ParseError_1.ParseError; } }); 12 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/schema-utils/stringifyValidationErrors.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.stringifyValidationError = void 0; 4 | function stringifyValidationError(error) { 5 | if (error.path.length === 0) { 6 | return error.message; 7 | } 8 | return `${error.path.join(" -> ")}: ${error.message}`; 9 | } 10 | exports.stringifyValidationError = stringifyValidationError; 11 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/set/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.set = void 0; 4 | var set_1 = require("./set"); 5 | Object.defineProperty(exports, "set", { enumerable: true, get: function () { return set_1.set; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/undiscriminated-union/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.undiscriminatedUnion = void 0; 4 | var undiscriminatedUnion_1 = require("./undiscriminatedUnion"); 5 | Object.defineProperty(exports, "undiscriminatedUnion", { enumerable: true, get: function () { return undiscriminatedUnion_1.undiscriminatedUnion; } }); 6 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/undiscriminated-union/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/union/discriminant.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.discriminant = void 0; 4 | function discriminant(parsedDiscriminant, rawDiscriminant) { 5 | return { 6 | parsedDiscriminant, 7 | rawDiscriminant, 8 | }; 9 | } 10 | exports.discriminant = discriminant; 11 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/union/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.union = exports.discriminant = void 0; 4 | var discriminant_1 = require("./discriminant"); 5 | Object.defineProperty(exports, "discriminant", { enumerable: true, get: function () { return discriminant_1.discriminant; } }); 6 | var union_1 = require("./union"); 7 | Object.defineProperty(exports, "union", { enumerable: true, get: function () { return union_1.union; } }); 8 | -------------------------------------------------------------------------------- /server/lib/core/schemas/builders/union/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./builders"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/MaybePromise.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/addQuestionMarksToNullableProperties.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/createIdentitySchemaCreator.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.createIdentitySchemaCreator = void 0; 4 | const schema_utils_1 = require("../builders/schema-utils"); 5 | const maybeSkipValidation_1 = require("./maybeSkipValidation"); 6 | function createIdentitySchemaCreator(schemaType, validate) { 7 | return () => { 8 | const baseSchema = { 9 | parse: validate, 10 | json: validate, 11 | getType: () => schemaType, 12 | }; 13 | return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); 14 | }; 15 | } 16 | exports.createIdentitySchemaCreator = createIdentitySchemaCreator; 17 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/entries.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.entries = void 0; 4 | function entries(object) { 5 | return Object.entries(object); 6 | } 7 | exports.entries = entries; 8 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/filterObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.filterObject = void 0; 4 | function filterObject(obj, keysToInclude) { 5 | const keysToIncludeSet = new Set(keysToInclude); 6 | return Object.entries(obj).reduce((acc, [key, value]) => { 7 | if (keysToIncludeSet.has(key)) { 8 | acc[key] = value; 9 | } 10 | return acc; 11 | // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter 12 | }, {}); 13 | } 14 | exports.filterObject = filterObject; 15 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/getErrorMessageForIncorrectType.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getErrorMessageForIncorrectType = void 0; 4 | function getErrorMessageForIncorrectType(value, expectedType) { 5 | return `Expected ${expectedType}. Received ${getTypeAsString(value)}.`; 6 | } 7 | exports.getErrorMessageForIncorrectType = getErrorMessageForIncorrectType; 8 | function getTypeAsString(value) { 9 | if (Array.isArray(value)) { 10 | return "list"; 11 | } 12 | if (value === null) { 13 | return "null"; 14 | } 15 | switch (typeof value) { 16 | case "string": 17 | return `"${value}"`; 18 | case "number": 19 | case "boolean": 20 | case "undefined": 21 | return `${value}`; 22 | } 23 | return typeof value; 24 | } 25 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/isPlainObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.isPlainObject = void 0; 4 | // borrowed from https://github.com/lodash/lodash/blob/master/isPlainObject.js 5 | function isPlainObject(value) { 6 | if (typeof value !== "object" || value === null) { 7 | return false; 8 | } 9 | if (Object.getPrototypeOf(value) === null) { 10 | return true; 11 | } 12 | let proto = value; 13 | while (Object.getPrototypeOf(proto) !== null) { 14 | proto = Object.getPrototypeOf(proto); 15 | } 16 | return Object.getPrototypeOf(value) === proto; 17 | } 18 | exports.isPlainObject = isPlainObject; 19 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/keys.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.keys = void 0; 4 | function keys(object) { 5 | return Object.keys(object); 6 | } 7 | exports.keys = keys; 8 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/maybeSkipValidation.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.maybeSkipValidation = void 0; 4 | function maybeSkipValidation(schema) { 5 | return Object.assign(Object.assign({}, schema), { json: transformAndMaybeSkipValidation(schema.json), parse: transformAndMaybeSkipValidation(schema.parse) }); 6 | } 7 | exports.maybeSkipValidation = maybeSkipValidation; 8 | function transformAndMaybeSkipValidation(transform) { 9 | return (value, opts) => { 10 | const transformed = transform(value, opts); 11 | const { skipValidation = false } = opts !== null && opts !== void 0 ? opts : {}; 12 | if (!transformed.ok && skipValidation) { 13 | // eslint-disable-next-line no-console 14 | console.warn([ 15 | "Failed to validate.", 16 | ...transformed.errors.map((error) => " - " + 17 | (error.path.length > 0 ? `${error.path.join(".")}: ${error.message}` : error.message)), 18 | ].join("\n")); 19 | return { 20 | ok: true, 21 | value: value, 22 | }; 23 | } 24 | else { 25 | return transformed; 26 | } 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /server/lib/core/schemas/utils/partition.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.partition = void 0; 4 | function partition(items, predicate) { 5 | const trueItems = [], falseItems = []; 6 | for (const item of items) { 7 | if (predicate(item)) { 8 | trueItems.push(item); 9 | } 10 | else { 11 | falseItems.push(item); 12 | } 13 | } 14 | return [trueItems, falseItems]; 15 | } 16 | exports.partition = partition; 17 | -------------------------------------------------------------------------------- /server/lib/errors/BumpshApiError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BumpshApiError = void 0; 7 | class BumpshApiError extends Error { 8 | constructor(errorName) { 9 | super(); 10 | this.errorName = errorName; 11 | Object.setPrototypeOf(this, BumpshApiError.prototype); 12 | } 13 | } 14 | exports.BumpshApiError = BumpshApiError; 15 | -------------------------------------------------------------------------------- /server/lib/errors/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.BumpshApiError = void 0; 4 | var BumpshApiError_1 = require("./BumpshApiError"); 5 | Object.defineProperty(exports, "BumpshApiError", { enumerable: true, get: function () { return BumpshApiError_1.BumpshApiError; } }); 6 | -------------------------------------------------------------------------------- /server/lib/register.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.register = void 0; 7 | function register(expressApp, services) { 8 | expressApp.use("", services.stations.toRouter()); 9 | expressApp.use("", services.trips.toRouter()); 10 | expressApp.use("", services.bookings.toRouter()); 11 | expressApp.use("", services.payments.toRouter()); 12 | } 13 | exports.register = register; 14 | -------------------------------------------------------------------------------- /server/lib/serialization/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./resources"), exports); 22 | __exportStar(require("./types"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/bookings/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/bookings/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetBookingsResponseLinks"), exports); 22 | __exportStar(require("./GetBookingsResponse"), exports); 23 | __exportStar(require("./CreateBookingResponse"), exports); 24 | __exportStar(require("./GetBookingResponse"), exports); 25 | __exportStar(require("./NewBookingPayloadLinks"), exports); 26 | __exportStar(require("./NewBookingPayload"), exports); 27 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/payments/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/payments/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./CreateBookingPaymentResponse"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/stations/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/stations/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetStationsResponseLinks"), exports); 22 | __exportStar(require("./GetStationsResponse"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/trips/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./types"), exports); 22 | -------------------------------------------------------------------------------- /server/lib/serialization/resources/trips/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function (o, m, k, k2) { 3 | if (k2 === undefined) 4 | k2 = k; 5 | var desc = Object.getOwnPropertyDescriptor(m, k); 6 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 7 | desc = { enumerable: true, get: function () { return m[k]; } }; 8 | } 9 | Object.defineProperty(o, k2, desc); 10 | }) : (function (o, m, k, k2) { 11 | if (k2 === undefined) 12 | k2 = k; 13 | o[k2] = m[k]; 14 | })); 15 | var __exportStar = (this && this.__exportStar) || function (m, exports) { 16 | for (var p in m) 17 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) 18 | __createBinding(exports, m, p); 19 | }; 20 | Object.defineProperty(exports, "__esModule", { value: true }); 21 | __exportStar(require("./GetTripsResponseLinks"), exports); 22 | __exportStar(require("./GetTripsResponse"), exports); 23 | -------------------------------------------------------------------------------- /server/lib/server.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const cors_1 = __importDefault(require("cors")); 7 | const express_1 = __importDefault(require("express")); 8 | const _1 = require("."); 9 | const bookings_1 = __importDefault(require("./services/bookings")); 10 | const stations_1 = __importDefault(require("./services/stations")); 11 | const trips_1 = __importDefault(require("./services/trips")); 12 | const payments_1 = __importDefault(require("./services/payments")); 13 | const PORT = process.env.PORT ?? 8080; 14 | const app = (0, express_1.default)(); 15 | app.use((0, cors_1.default)()); 16 | (0, _1.register)(app, { 17 | bookings: bookings_1.default, 18 | payments: payments_1.default, 19 | stations: stations_1.default, 20 | trips: trips_1.default, 21 | }); 22 | app.listen(PORT); 23 | console.log(`🎉 Listening on port ${PORT}...`); 24 | exports.default = app; 25 | -------------------------------------------------------------------------------- /server/lib/services/payments.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const PaymentsService_1 = require("../api/resources/payments/service/PaymentsService"); 4 | exports.default = new PaymentsService_1.PaymentsService({ 5 | async createBookingPayment(req, res) { }, 6 | }); 7 | -------------------------------------------------------------------------------- /server/lib/services/stations.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const StationsService_1 = require("../api/resources/stations/service/StationsService"); 4 | const database_1 = require("../database"); 5 | exports.default = new StationsService_1.StationsService({ 6 | async getStations(req, res) { 7 | const stations = await (0, database_1.getStations)(); 8 | return res.send({ 9 | data: stations, 10 | links: { self: "/stations" }, 11 | }); 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /server/lib/services/trips.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const TripsService_1 = require("../api/resources/trips/service/TripsService"); 4 | const database_1 = require("../database"); 5 | exports.default = new TripsService_1.TripsService({ 6 | async getTrips(req, res) { 7 | const trips = await (0, database_1.getTrips)(); 8 | return res.send({ 9 | data: trips, 10 | links: { self: "/trips" }, 11 | }); 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "train-travel-api", 3 | "scripts": { 4 | "build": "tsc", 5 | "start": "node lib/server.js", 6 | "dev": "nodemon src/server.ts", 7 | "format": "prettier --write src/**", 8 | "format:check": "prettier --check src/**", 9 | "lint": "eslint", 10 | "lint:fix": "eslint --fix" 11 | }, 12 | "dependencies": { 13 | "cors": "^2.8.5", 14 | "express": "^4.18.2" 15 | }, 16 | "devDependencies": { 17 | "@types/cors": "^2.8.13", 18 | "@types/express": "^4.17.16", 19 | "@types/node": "^18.11.18", 20 | "@typescript-eslint/eslint-plugin": "latest", 21 | "@typescript-eslint/parser": "latest", 22 | "eslint": "^8.33.0", 23 | "nodemon": "^2.0.20", 24 | "prettier": "^2.8.3", 25 | "ts-node": "^10.9.1", 26 | "typescript": "4.6.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /server/src/api/errors/BadRequestError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class BadRequestError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/ConflictError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class ConflictError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/ForbiddenError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class ForbiddenError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/InternalServerError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class InternalServerError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/NotFoundError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class NotFoundError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/TooManyRequestsError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class TooManyRequestsError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/UnauthorizedError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as errors from "../../errors/index"; 5 | import * as BumpshApi from "../index"; 6 | import express from "express"; 7 | export declare class UnauthorizedError extends errors.BumpshApiError { 8 | private readonly body; 9 | constructor(body: BumpshApi.Problem); 10 | send(res: express.Response): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /server/src/api/errors/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./BadRequestError"; 2 | export * from "./UnauthorizedError"; 3 | export * from "./ForbiddenError"; 4 | export * from "./TooManyRequestsError"; 5 | export * from "./InternalServerError"; 6 | export * from "./NotFoundError"; 7 | export * from "./ConflictError"; 8 | -------------------------------------------------------------------------------- /server/src/api/errors/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./BadRequestError"), exports); 18 | __exportStar(require("./UnauthorizedError"), exports); 19 | __exportStar(require("./ForbiddenError"), exports); 20 | __exportStar(require("./TooManyRequestsError"), exports); 21 | __exportStar(require("./InternalServerError"), exports); 22 | __exportStar(require("./NotFoundError"), exports); 23 | __exportStar(require("./ConflictError"), exports); 24 | -------------------------------------------------------------------------------- /server/src/api/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./resources"; 2 | export * from "./types"; 3 | export * from "./errors"; 4 | -------------------------------------------------------------------------------- /server/src/api/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./resources"), exports); 18 | __exportStar(require("./types"), exports); 19 | __exportStar(require("./errors"), exports); 20 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./service"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | __exportStar(require("./service"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/service/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/CreateBookingResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface CreateBookingResponse extends BumpshApi.Booking { 6 | links?: BumpshApi.LinksSelf; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/CreateBookingResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetBookingResponse extends BumpshApi.Booking { 6 | links?: BumpshApi.LinksSelf; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetBookingsResponse { 6 | data?: BumpshApi.Booking[]; 7 | links?: BumpshApi.GetBookingsResponseLinks; 8 | } 9 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetBookingsResponseLinks extends BumpshApi.LinksSelf, BumpshApi.LinksPagination { 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/GetBookingsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/NewBookingPayload.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface NewBookingPayload extends BumpshApi.Booking { 6 | links?: BumpshApi.NewBookingPayloadLinks; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/NewBookingPayload.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/NewBookingPayloadLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface NewBookingPayloadLinks extends BumpshApi.LinksSelf, BumpshApi.LinksPagination { 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/NewBookingPayloadLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetBookingsResponseLinks"; 2 | export * from "./GetBookingsResponse"; 3 | export * from "./CreateBookingResponse"; 4 | export * from "./GetBookingResponse"; 5 | export * from "./NewBookingPayloadLinks"; 6 | export * from "./NewBookingPayload"; 7 | -------------------------------------------------------------------------------- /server/src/api/resources/bookings/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetBookingsResponseLinks"), exports); 18 | __exportStar(require("./GetBookingsResponse"), exports); 19 | __exportStar(require("./CreateBookingResponse"), exports); 20 | __exportStar(require("./GetBookingResponse"), exports); 21 | __exportStar(require("./NewBookingPayloadLinks"), exports); 22 | __exportStar(require("./NewBookingPayload"), exports); 23 | -------------------------------------------------------------------------------- /server/src/api/resources/index.d.ts: -------------------------------------------------------------------------------- 1 | export * as stations from "./stations"; 2 | export * from "./stations/types"; 3 | export * as trips from "./trips"; 4 | export * from "./trips/types"; 5 | export * as bookings from "./bookings"; 6 | export * from "./bookings/types"; 7 | export * as payments from "./payments"; 8 | export * from "./payments/types"; 9 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./service"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | __exportStar(require("./service"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/service/PaymentsService.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | import express from "express"; 6 | export interface PaymentsServiceMethods { 7 | createBookingPayment(req: express.Request<{ 8 | bookingId: string; 9 | }, BumpshApi.CreateBookingPaymentResponse, BumpshApi.BookingPayment, never>, res: { 10 | send: (responseBody: BumpshApi.CreateBookingPaymentResponse) => Promise; 11 | cookie: (cookie: string, value: string, options?: express.CookieOptions) => void; 12 | locals: any; 13 | }, next: express.NextFunction): void | Promise; 14 | } 15 | /** 16 | * Pay for bookings using a card or bank account, and view payment 17 | * status and history. 18 | * 19 | * > warn 20 | * > Bookings usually expire within 1 hour so you'll need to make your payment 21 | * > before the expiry date 22 | * 23 | */ 24 | export declare class PaymentsService { 25 | private readonly methods; 26 | private router; 27 | constructor(methods: PaymentsServiceMethods, middleware?: express.RequestHandler[]); 28 | addMiddleware(handler: express.RequestHandler): this; 29 | toRouter(): express.Router; 30 | } 31 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/service/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/types/CreateBookingPaymentResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface CreateBookingPaymentResponse extends BumpshApi.BookingPayment { 6 | links?: BumpshApi.LinksBooking; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/types/CreateBookingPaymentResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./CreateBookingPaymentResponse"; 2 | -------------------------------------------------------------------------------- /server/src/api/resources/payments/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./CreateBookingPaymentResponse"), exports); 18 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./service"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | __exportStar(require("./service"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/service/StationsService.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | import express from "express"; 6 | export interface StationsServiceMethods { 7 | getStations(req: express.Request, res: { 8 | send: (responseBody: BumpshApi.GetStationsResponse) => Promise; 9 | cookie: (cookie: string, value: string, options?: express.CookieOptions) => void; 10 | locals: any; 11 | }, next: express.NextFunction): void | Promise; 12 | } 13 | /** 14 | * Find and filter train stations across Europe, including their location 15 | * and local timezone. 16 | * 17 | */ 18 | export declare class StationsService { 19 | private readonly methods; 20 | private router; 21 | constructor(methods: StationsServiceMethods, middleware?: express.RequestHandler[]); 22 | addMiddleware(handler: express.RequestHandler): this; 23 | toRouter(): express.Router; 24 | } 25 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/service/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/GetStationsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetStationsResponse { 6 | data?: BumpshApi.Station[]; 7 | links?: BumpshApi.GetStationsResponseLinks; 8 | } 9 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/GetStationsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/GetStationsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetStationsResponseLinks extends BumpshApi.LinksSelf, BumpshApi.LinksPagination { 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/GetStationsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetStationsResponseLinks"; 2 | export * from "./GetStationsResponse"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/stations/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetStationsResponseLinks"), exports); 18 | __exportStar(require("./GetStationsResponse"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./service"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | __exportStar(require("./service"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/service/TripsService.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | import express from "express"; 6 | export interface TripsServiceMethods { 7 | getTrips(req: express.Request, res: { 14 | send: (responseBody: BumpshApi.GetTripsResponse) => Promise; 15 | cookie: (cookie: string, value: string, options?: express.CookieOptions) => void; 16 | locals: any; 17 | }, next: express.NextFunction): void | Promise; 18 | } 19 | /** 20 | * Timetables and routes for train trips between stations, including pricing 21 | * and availability. 22 | * 23 | */ 24 | export declare class TripsService { 25 | private readonly methods; 26 | private router; 27 | constructor(methods: TripsServiceMethods, middleware?: express.RequestHandler[]); 28 | addMiddleware(handler: express.RequestHandler): this; 29 | toRouter(): express.Router; 30 | } 31 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/service/index.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/service/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/GetTripsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetTripsResponse { 6 | data?: BumpshApi.Trip[]; 7 | links?: BumpshApi.GetTripsResponseLinks; 8 | } 9 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/GetTripsResponse.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/GetTripsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../../../index"; 5 | export interface GetTripsResponseLinks extends BumpshApi.LinksSelf, BumpshApi.LinksPagination { 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/GetTripsResponseLinks.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetTripsResponseLinks"; 2 | export * from "./GetTripsResponse"; 3 | -------------------------------------------------------------------------------- /server/src/api/resources/trips/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetTripsResponseLinks"), exports); 18 | __exportStar(require("./GetTripsResponse"), exports); 19 | -------------------------------------------------------------------------------- /server/src/api/types/Booking.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface Booking { 5 | /** Unique identifier for the booking */ 6 | id?: string; 7 | /** Identifier of the booked trip */ 8 | tripId?: string; 9 | /** Name of the passenger */ 10 | passengerName?: string; 11 | /** Indicates whether the passenger has a bicycle. */ 12 | hasBicycle?: boolean; 13 | /** Indicates whether the passenger has a dog. */ 14 | hasDog?: boolean; 15 | } 16 | -------------------------------------------------------------------------------- /server/src/api/types/Booking.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPayment.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../index"; 5 | export interface BookingPayment { 6 | /** Unique identifier for the payment. This will be a unique identifier for the payment, and is used to reference the payment in other objects. */ 7 | id?: string; 8 | /** Amount intended to be collected by this payment. A positive decimal figure describing the amount to be collected. */ 9 | amount?: number; 10 | /** Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. */ 11 | currency?: BumpshApi.BookingPaymentCurrency; 12 | /** The payment source to take the payment from. This can be a card or a bank account. Some of these properties will be hidden on read to protect PII leaking. */ 13 | source?: BumpshApi.BookingPaymentSource; 14 | /** The status of the payment, one of `pending`, `succeeded`, or `failed`. */ 15 | status?: BumpshApi.BookingPaymentStatus; 16 | } 17 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPayment.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentCurrency.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | /** 5 | * Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. 6 | */ 7 | export declare type BookingPaymentCurrency = "bam" | "bgn" | "chf" | "eur" | "gbp" | "nok" | "sek" | "try"; 8 | export declare const BookingPaymentCurrency: { 9 | readonly Bam: "bam"; 10 | readonly Bgn: "bgn"; 11 | readonly Chf: "chf"; 12 | readonly Eur: "eur"; 13 | readonly Gbp: "gbp"; 14 | readonly Nok: "nok"; 15 | readonly Sek: "sek"; 16 | readonly Try: "try"; 17 | }; 18 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentCurrency.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentCurrency = void 0; 7 | exports.BookingPaymentCurrency = { 8 | Bam: "bam", 9 | Bgn: "bgn", 10 | Chf: "chf", 11 | Eur: "eur", 12 | Gbp: "gbp", 13 | Nok: "nok", 14 | Sek: "sek", 15 | Try: "try", 16 | }; 17 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSource.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../index"; 5 | /** 6 | * The payment source to take the payment from. This can be a card or a bank account. Some of these properties will be hidden on read to protect PII leaking. 7 | */ 8 | export declare type BookingPaymentSource = 9 | /** 10 | * A card (debit or credit) to take payment from. */ 11 | BumpshApi.BookingPaymentSource.Card 12 | /** 13 | * A bank account to take payment from. Must be able to make payments in the currency specified in the payment. */ 14 | | BumpshApi.BookingPaymentSource.BankAccount; 15 | export declare namespace BookingPaymentSource { 16 | interface Card extends BumpshApi.Card { 17 | object: "card"; 18 | } 19 | interface BankAccount extends BumpshApi.BookingPaymentSourceBankAccount { 20 | object: "bank_account"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSource.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSourceBankAccount.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as BumpshApi from "../index"; 5 | /** 6 | * A bank account to take payment from. Must be able to make payments in the currency specified in the payment. 7 | */ 8 | export interface BookingPaymentSourceBankAccount { 9 | name: string; 10 | /** The account number for the bank account, in string form. Must be a current account. */ 11 | number: string; 12 | /** The sort code for the bank account, in string form. Must be a six-digit number. */ 13 | sortCode?: string; 14 | /** The type of entity that holds the account. This can be either `individual` or `company`. */ 15 | accountType: BumpshApi.BookingPaymentSourceBankAccountAccountType; 16 | /** The name of the bank associated with the routing number. */ 17 | bankName: string; 18 | /** Two-letter country code (ISO 3166-1 alpha-2). */ 19 | country: string; 20 | } 21 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSourceBankAccount.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSourceBankAccountAccountType.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | /** 5 | * The type of entity that holds the account. This can be either `individual` or `company`. 6 | */ 7 | export declare type BookingPaymentSourceBankAccountAccountType = "individual" | "company"; 8 | export declare const BookingPaymentSourceBankAccountAccountType: { 9 | readonly Individual: "individual"; 10 | readonly Company: "company"; 11 | }; 12 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentSourceBankAccountAccountType.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentSourceBankAccountAccountType = void 0; 7 | exports.BookingPaymentSourceBankAccountAccountType = { 8 | Individual: "individual", 9 | Company: "company", 10 | }; 11 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentStatus.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | /** 5 | * The status of the payment, one of `pending`, `succeeded`, or `failed`. 6 | */ 7 | export declare type BookingPaymentStatus = "pending" | "succeeded" | "failed"; 8 | export declare const BookingPaymentStatus: { 9 | readonly Pending: "pending"; 10 | readonly Succeeded: "succeeded"; 11 | readonly Failed: "failed"; 12 | }; 13 | -------------------------------------------------------------------------------- /server/src/api/types/BookingPaymentStatus.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BookingPaymentStatus = void 0; 7 | exports.BookingPaymentStatus = { 8 | Pending: "pending", 9 | Succeeded: "succeeded", 10 | Failed: "failed", 11 | }; 12 | -------------------------------------------------------------------------------- /server/src/api/types/Card.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | /** 5 | * A card (debit or credit) to take payment from. 6 | */ 7 | export interface Card { 8 | /** Cardholder's full name as it appears on the card. */ 9 | name: string; 10 | /** The card number, as a string without any separators. On read all but the last four digits will be masked for security. */ 11 | number: string; 12 | /** Card security code, 3 or 4 digits usually found on the back of the card. */ 13 | cvc: number; 14 | /** Two-digit number representing the card's expiration month. */ 15 | expMonth: number; 16 | /** Four-digit number representing the card's expiration year. */ 17 | expYear: number; 18 | addressLine1?: string; 19 | addressLine2?: string; 20 | addressCity?: string; 21 | addressCountry: string; 22 | addressPostCode?: string; 23 | } 24 | -------------------------------------------------------------------------------- /server/src/api/types/Card.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/LinksBooking.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface LinksBooking { 5 | booking?: string; 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/types/LinksBooking.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/LinksPagination.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface LinksPagination { 5 | next?: string; 6 | prev?: string; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/api/types/LinksPagination.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/LinksSelf.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface LinksSelf { 5 | self?: string; 6 | } 7 | -------------------------------------------------------------------------------- /server/src/api/types/LinksSelf.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/OauthScope.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export declare type OauthScope = 5 | /** 6 | * Read access */ 7 | "read" 8 | /** 9 | * Write access */ 10 | | "write"; 11 | export declare const OauthScope: { 12 | readonly Read: "read"; 13 | readonly Write: "write"; 14 | }; 15 | -------------------------------------------------------------------------------- /server/src/api/types/OauthScope.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.OauthScope = void 0; 7 | exports.OauthScope = { 8 | Read: "read", 9 | Write: "write", 10 | }; 11 | -------------------------------------------------------------------------------- /server/src/api/types/Problem.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface Problem { 5 | /** A URI reference that identifies the problem type */ 6 | type?: string; 7 | /** A short, human-readable summary of the problem type */ 8 | title?: string; 9 | /** A human-readable explanation specific to this occurrence of the problem */ 10 | detail?: string; 11 | /** A URI reference that identifies the specific occurrence of the problem */ 12 | instance?: string; 13 | /** The HTTP status code */ 14 | status?: number; 15 | } 16 | -------------------------------------------------------------------------------- /server/src/api/types/Problem.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/Station.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface Station { 5 | /** Unique identifier for the station. */ 6 | id: string; 7 | /** The name of the station */ 8 | name: string; 9 | /** The address of the station. */ 10 | address: string; 11 | /** The country code of the station. */ 12 | countryCode: string; 13 | /** The timezone of the station in the [IANA Time Zone Database format](https://www.iana.org/time-zones). */ 14 | timezone?: string; 15 | } 16 | -------------------------------------------------------------------------------- /server/src/api/types/Station.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/Trip.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | export interface Trip { 5 | /** Unique identifier for the trip */ 6 | id?: string; 7 | /** The starting station of the trip */ 8 | origin?: string; 9 | /** The destination station of the trip */ 10 | destination?: string; 11 | /** The date and time when the trip departs */ 12 | departureTime?: Date; 13 | /** The date and time when the trip arrives */ 14 | arrivalTime?: Date; 15 | /** The name of the operator of the trip */ 16 | operator?: string; 17 | /** The cost of the trip */ 18 | price?: number; 19 | /** Indicates whether bicycles are allowed on the trip */ 20 | bicyclesAllowed?: boolean; 21 | /** Indicates whether dogs are allowed on the trip */ 22 | dogsAllowed?: boolean; 23 | } 24 | -------------------------------------------------------------------------------- /server/src/api/types/Trip.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/WrapperCollection.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | /** 5 | * This is a generic request/response wrapper which contains both data and links which serve as hypermedia controls (HATEOAS). 6 | */ 7 | export interface WrapperCollection { 8 | /** The wrapper for a collection is an array of objects. */ 9 | data?: Record[]; 10 | /** A set of hypermedia links which serve as controls for the client. */ 11 | links?: Record; 12 | } 13 | -------------------------------------------------------------------------------- /server/src/api/types/WrapperCollection.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | -------------------------------------------------------------------------------- /server/src/api/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./OauthScope"; 2 | export * from "./Station"; 3 | export * from "./LinksSelf"; 4 | export * from "./LinksPagination"; 5 | export * from "./Problem"; 6 | export * from "./Trip"; 7 | export * from "./Booking"; 8 | export * from "./WrapperCollection"; 9 | export * from "./BookingPaymentCurrency"; 10 | export * from "./Card"; 11 | export * from "./BookingPaymentSourceBankAccountAccountType"; 12 | export * from "./BookingPaymentSourceBankAccount"; 13 | export * from "./BookingPaymentSource"; 14 | export * from "./BookingPaymentStatus"; 15 | export * from "./BookingPayment"; 16 | export * from "./LinksBooking"; 17 | -------------------------------------------------------------------------------- /server/src/core/index.d.ts: -------------------------------------------------------------------------------- 1 | export * as serialization from "./schemas"; 2 | -------------------------------------------------------------------------------- /server/src/core/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 14 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 15 | }) : function(o, v) { 16 | o["default"] = v; 17 | }); 18 | var __importStar = (this && this.__importStar) || function (mod) { 19 | if (mod && mod.__esModule) return mod; 20 | var result = {}; 21 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 22 | __setModuleDefault(result, mod); 23 | return result; 24 | }; 25 | Object.defineProperty(exports, "__esModule", { value: true }); 26 | exports.serialization = void 0; 27 | exports.serialization = __importStar(require("./schemas")); 28 | -------------------------------------------------------------------------------- /server/src/core/schemas/Schema.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.SchemaType = void 0; 4 | exports.SchemaType = { 5 | DATE: "date", 6 | ENUM: "enum", 7 | LIST: "list", 8 | STRING_LITERAL: "stringLiteral", 9 | BOOLEAN_LITERAL: "booleanLiteral", 10 | OBJECT: "object", 11 | ANY: "any", 12 | BOOLEAN: "boolean", 13 | NUMBER: "number", 14 | STRING: "string", 15 | UNKNOWN: "unknown", 16 | RECORD: "record", 17 | SET: "set", 18 | UNION: "union", 19 | UNDISCRIMINATED_UNION: "undiscriminatedUnion", 20 | OPTIONAL: "optional", 21 | }; 22 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/date/date.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function date(): Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/date/index.d.ts: -------------------------------------------------------------------------------- 1 | export { date } from "./date"; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/date/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.date = void 0; 4 | var date_1 = require("./date"); 5 | Object.defineProperty(exports, "date", { enumerable: true, get: function () { return date_1.date; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/enum/enum.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function enum_(values: E): Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/enum/index.d.ts: -------------------------------------------------------------------------------- 1 | export { enum_ } from "./enum"; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/enum/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.enum_ = void 0; 4 | var enum_1 = require("./enum"); 5 | Object.defineProperty(exports, "enum_", { enumerable: true, get: function () { return enum_1.enum_; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./date"; 2 | export * from "./enum"; 3 | export * from "./lazy"; 4 | export * from "./list"; 5 | export * from "./literals"; 6 | export * from "./object"; 7 | export * from "./object-like"; 8 | export * from "./primitives"; 9 | export * from "./record"; 10 | export * from "./schema-utils"; 11 | export * from "./set"; 12 | export * from "./undiscriminated-union"; 13 | export * from "./union"; 14 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/index.d.ts: -------------------------------------------------------------------------------- 1 | export { lazy } from "./lazy"; 2 | export type { SchemaGetter } from "./lazy"; 3 | export { lazyObject } from "./lazyObject"; 4 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.lazyObject = exports.lazy = void 0; 4 | var lazy_1 = require("./lazy"); 5 | Object.defineProperty(exports, "lazy", { enumerable: true, get: function () { return lazy_1.lazy; } }); 6 | var lazyObject_1 = require("./lazyObject"); 7 | Object.defineProperty(exports, "lazyObject", { enumerable: true, get: function () { return lazyObject_1.lazyObject; } }); 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/lazy.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema, Schema } from "../../Schema"; 2 | export declare type SchemaGetter> = () => SchemaType; 3 | export declare function lazy(getter: SchemaGetter>): Schema; 4 | export declare function constructLazyBaseSchema(getter: SchemaGetter>): BaseSchema; 5 | export declare function getMemoizedSchema>(getter: SchemaGetter): SchemaType; 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/lazy.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getMemoizedSchema = exports.constructLazyBaseSchema = exports.lazy = void 0; 4 | const schema_utils_1 = require("../schema-utils"); 5 | function lazy(getter) { 6 | const baseSchema = constructLazyBaseSchema(getter); 7 | return Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)); 8 | } 9 | exports.lazy = lazy; 10 | function constructLazyBaseSchema(getter) { 11 | return { 12 | parse: (raw, opts) => getMemoizedSchema(getter).parse(raw, opts), 13 | json: (parsed, opts) => getMemoizedSchema(getter).json(parsed, opts), 14 | getType: () => getMemoizedSchema(getter).getType(), 15 | }; 16 | } 17 | exports.constructLazyBaseSchema = constructLazyBaseSchema; 18 | function getMemoizedSchema(getter) { 19 | const castedGetter = getter; 20 | if (castedGetter.__zurg_memoized == null) { 21 | castedGetter.__zurg_memoized = getter(); 22 | } 23 | return castedGetter.__zurg_memoized; 24 | } 25 | exports.getMemoizedSchema = getMemoizedSchema; 26 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/lazyObject.d.ts: -------------------------------------------------------------------------------- 1 | import { ObjectSchema } from "../object/types"; 2 | import { SchemaGetter } from "./lazy"; 3 | export declare function lazyObject(getter: SchemaGetter>): ObjectSchema; 4 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/lazy/lazyObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.lazyObject = void 0; 4 | const object_1 = require("../object"); 5 | const object_like_1 = require("../object-like"); 6 | const schema_utils_1 = require("../schema-utils"); 7 | const lazy_1 = require("./lazy"); 8 | function lazyObject(getter) { 9 | const baseSchema = Object.assign(Object.assign({}, (0, lazy_1.constructLazyBaseSchema)(getter)), { _getRawProperties: () => (0, lazy_1.getMemoizedSchema)(getter)._getRawProperties(), _getParsedProperties: () => (0, lazy_1.getMemoizedSchema)(getter)._getParsedProperties() }); 10 | return Object.assign(Object.assign(Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)), (0, object_1.getObjectUtils)(baseSchema)); 11 | } 12 | exports.lazyObject = lazyObject; 13 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/list/index.d.ts: -------------------------------------------------------------------------------- 1 | export { list } from "./list"; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/list/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.list = void 0; 4 | var list_1 = require("./list"); 5 | Object.defineProperty(exports, "list", { enumerable: true, get: function () { return list_1.list; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/list/list.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function list(schema: Schema): Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/booleanLiteral.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function booleanLiteral(literal: V): Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/booleanLiteral.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.booleanLiteral = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | function booleanLiteral(literal) { 8 | const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.BOOLEAN_LITERAL, (value, { breadcrumbsPrefix = [] } = {}) => { 9 | if (value === literal) { 10 | return { 11 | ok: true, 12 | value: literal, 13 | }; 14 | } 15 | else { 16 | return { 17 | ok: false, 18 | errors: [ 19 | { 20 | path: breadcrumbsPrefix, 21 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, `${literal.toString()}`), 22 | }, 23 | ], 24 | }; 25 | } 26 | }); 27 | return schemaCreator(); 28 | } 29 | exports.booleanLiteral = booleanLiteral; 30 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/index.d.ts: -------------------------------------------------------------------------------- 1 | export { stringLiteral } from "./stringLiteral"; 2 | export { booleanLiteral } from "./booleanLiteral"; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.booleanLiteral = exports.stringLiteral = void 0; 4 | var stringLiteral_1 = require("./stringLiteral"); 5 | Object.defineProperty(exports, "stringLiteral", { enumerable: true, get: function () { return stringLiteral_1.stringLiteral; } }); 6 | var booleanLiteral_1 = require("./booleanLiteral"); 7 | Object.defineProperty(exports, "booleanLiteral", { enumerable: true, get: function () { return booleanLiteral_1.booleanLiteral; } }); 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/stringLiteral.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function stringLiteral(literal: V): Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/literals/stringLiteral.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.stringLiteral = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | function stringLiteral(literal) { 8 | const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING_LITERAL, (value, { breadcrumbsPrefix = [] } = {}) => { 9 | if (value === literal) { 10 | return { 11 | ok: true, 12 | value: literal, 13 | }; 14 | } 15 | else { 16 | return { 17 | ok: false, 18 | errors: [ 19 | { 20 | path: breadcrumbsPrefix, 21 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, `"${literal}"`), 22 | }, 23 | ], 24 | }; 25 | } 26 | }); 27 | return schemaCreator(); 28 | } 29 | exports.stringLiteral = stringLiteral; 30 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object-like/getObjectLikeUtils.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema } from "../../Schema"; 2 | import { ObjectLikeSchema, ObjectLikeUtils } from "./types"; 3 | export declare function getObjectLikeUtils(schema: BaseSchema): ObjectLikeUtils; 4 | /** 5 | * object-like utils are defined in one file to resolve issues with circular imports 6 | */ 7 | export declare function withParsedProperties(objectLike: BaseSchema, properties: { 8 | [K in keyof Properties]: Properties[K] | ((parsed: ParsedObjectShape) => Properties[K]); 9 | }): ObjectLikeSchema; 10 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object-like/index.d.ts: -------------------------------------------------------------------------------- 1 | export { getObjectLikeUtils, withParsedProperties } from "./getObjectLikeUtils"; 2 | export type { ObjectLikeSchema, ObjectLikeUtils } from "./types"; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object-like/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.withParsedProperties = exports.getObjectLikeUtils = void 0; 4 | var getObjectLikeUtils_1 = require("./getObjectLikeUtils"); 5 | Object.defineProperty(exports, "getObjectLikeUtils", { enumerable: true, get: function () { return getObjectLikeUtils_1.getObjectLikeUtils; } }); 6 | Object.defineProperty(exports, "withParsedProperties", { enumerable: true, get: function () { return getObjectLikeUtils_1.withParsedProperties; } }); 7 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object-like/types.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema, Schema } from "../../Schema"; 2 | export declare type ObjectLikeSchema = Schema & BaseSchema & ObjectLikeUtils; 3 | export interface ObjectLikeUtils { 4 | withParsedProperties: >(properties: { 5 | [K in keyof T]: T[K] | ((parsed: Parsed) => T[K]); 6 | }) => ObjectLikeSchema; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object-like/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/index.d.ts: -------------------------------------------------------------------------------- 1 | export { getObjectUtils, object } from "./object"; 2 | export { objectWithoutOptionalProperties } from "./objectWithoutOptionalProperties"; 3 | export type { inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas, inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas, } from "./objectWithoutOptionalProperties"; 4 | export { isProperty, property } from "./property"; 5 | export type { Property } from "./property"; 6 | export type { BaseObjectSchema, inferObjectSchemaFromPropertySchemas, inferParsedObject, inferParsedObjectFromPropertySchemas, inferParsedPropertySchema, inferRawKey, inferRawObject, inferRawObjectFromPropertySchemas, inferRawPropertySchema, ObjectSchema, ObjectUtils, PropertySchemas, } from "./types"; 7 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.property = exports.isProperty = exports.objectWithoutOptionalProperties = exports.object = exports.getObjectUtils = void 0; 4 | var object_1 = require("./object"); 5 | Object.defineProperty(exports, "getObjectUtils", { enumerable: true, get: function () { return object_1.getObjectUtils; } }); 6 | Object.defineProperty(exports, "object", { enumerable: true, get: function () { return object_1.object; } }); 7 | var objectWithoutOptionalProperties_1 = require("./objectWithoutOptionalProperties"); 8 | Object.defineProperty(exports, "objectWithoutOptionalProperties", { enumerable: true, get: function () { return objectWithoutOptionalProperties_1.objectWithoutOptionalProperties; } }); 9 | var property_1 = require("./property"); 10 | Object.defineProperty(exports, "isProperty", { enumerable: true, get: function () { return property_1.isProperty; } }); 11 | Object.defineProperty(exports, "property", { enumerable: true, get: function () { return property_1.property; } }); 12 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/object.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseObjectSchema, inferObjectSchemaFromPropertySchemas, ObjectUtils, PropertySchemas } from "./types"; 2 | export declare function object>(schemas: T): inferObjectSchemaFromPropertySchemas; 3 | export declare function getObjectUtils(schema: BaseObjectSchema): ObjectUtils; 4 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/objectWithoutOptionalProperties.d.ts: -------------------------------------------------------------------------------- 1 | import { inferParsedPropertySchema, inferRawObjectFromPropertySchemas, ObjectSchema, PropertySchemas } from "./types"; 2 | export declare function objectWithoutOptionalProperties>(schemas: T): inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas; 3 | export declare type inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas> = ObjectSchema, inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas>; 4 | export declare type inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas> = { 5 | [K in keyof T]: inferParsedPropertySchema; 6 | }; 7 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/objectWithoutOptionalProperties.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.objectWithoutOptionalProperties = void 0; 4 | const object_1 = require("./object"); 5 | function objectWithoutOptionalProperties(schemas) { 6 | return (0, object_1.object)(schemas); 7 | } 8 | exports.objectWithoutOptionalProperties = objectWithoutOptionalProperties; 9 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/property.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function property(rawKey: RawKey, valueSchema: Schema): Property; 3 | export interface Property { 4 | rawKey: RawKey; 5 | valueSchema: Schema; 6 | isProperty: true; 7 | } 8 | export declare function isProperty>(maybeProperty: unknown): maybeProperty is O; 9 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/property.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.isProperty = exports.property = void 0; 4 | function property(rawKey, valueSchema) { 5 | return { 6 | rawKey, 7 | valueSchema, 8 | isProperty: true, 9 | }; 10 | } 11 | exports.property = property; 12 | function isProperty(maybeProperty) { 13 | // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition 14 | return maybeProperty.isProperty; 15 | } 16 | exports.isProperty = isProperty; 17 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/object/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/any.d.ts: -------------------------------------------------------------------------------- 1 | export declare const any: () => import("../../Schema").Schema; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/any.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.any = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | exports.any = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.ANY, (value) => ({ ok: true, value })); 7 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/boolean.d.ts: -------------------------------------------------------------------------------- 1 | export declare const boolean: () => import("../../Schema").Schema; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/boolean.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.boolean = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.boolean = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.BOOLEAN, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "boolean") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "boolean"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/index.d.ts: -------------------------------------------------------------------------------- 1 | export { any } from "./any"; 2 | export { boolean } from "./boolean"; 3 | export { number } from "./number"; 4 | export { string } from "./string"; 5 | export { unknown } from "./unknown"; 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.unknown = exports.string = exports.number = exports.boolean = exports.any = void 0; 4 | var any_1 = require("./any"); 5 | Object.defineProperty(exports, "any", { enumerable: true, get: function () { return any_1.any; } }); 6 | var boolean_1 = require("./boolean"); 7 | Object.defineProperty(exports, "boolean", { enumerable: true, get: function () { return boolean_1.boolean; } }); 8 | var number_1 = require("./number"); 9 | Object.defineProperty(exports, "number", { enumerable: true, get: function () { return number_1.number; } }); 10 | var string_1 = require("./string"); 11 | Object.defineProperty(exports, "string", { enumerable: true, get: function () { return string_1.string; } }); 12 | var unknown_1 = require("./unknown"); 13 | Object.defineProperty(exports, "unknown", { enumerable: true, get: function () { return unknown_1.unknown; } }); 14 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/number.d.ts: -------------------------------------------------------------------------------- 1 | export declare const number: () => import("../../Schema").Schema; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/number.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.number = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.number = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.NUMBER, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "number") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "number"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/string.d.ts: -------------------------------------------------------------------------------- 1 | export declare const string: () => import("../../Schema").Schema; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/string.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.string = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | const getErrorMessageForIncorrectType_1 = require("../../utils/getErrorMessageForIncorrectType"); 7 | exports.string = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING, (value, { breadcrumbsPrefix = [] } = {}) => { 8 | if (typeof value === "string") { 9 | return { 10 | ok: true, 11 | value, 12 | }; 13 | } 14 | else { 15 | return { 16 | ok: false, 17 | errors: [ 18 | { 19 | path: breadcrumbsPrefix, 20 | message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, "string"), 21 | }, 22 | ], 23 | }; 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/unknown.d.ts: -------------------------------------------------------------------------------- 1 | export declare const unknown: () => import("../../Schema").Schema; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/primitives/unknown.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.unknown = void 0; 4 | const Schema_1 = require("../../Schema"); 5 | const createIdentitySchemaCreator_1 = require("../../utils/createIdentitySchemaCreator"); 6 | exports.unknown = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.UNKNOWN, (value) => ({ ok: true, value })); 7 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/record/index.d.ts: -------------------------------------------------------------------------------- 1 | export { record } from "./record"; 2 | export type { BaseRecordSchema, RecordSchema } from "./types"; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/record/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.record = void 0; 4 | var record_1 = require("./record"); 5 | Object.defineProperty(exports, "record", { enumerable: true, get: function () { return record_1.record; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/record/record.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | import { RecordSchema } from "./types"; 3 | export declare function record(keySchema: Schema, valueSchema: Schema): RecordSchema; 4 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/record/types.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema } from "../../Schema"; 2 | import { SchemaUtils } from "../schema-utils"; 3 | export declare type RecordSchema = BaseRecordSchema & SchemaUtils, Record>; 4 | export declare type BaseRecordSchema = BaseSchema, Record>; 5 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/record/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/JsonError.d.ts: -------------------------------------------------------------------------------- 1 | import { ValidationError } from "../../Schema"; 2 | export declare class JsonError extends Error { 3 | readonly errors: ValidationError[]; 4 | constructor(errors: ValidationError[]); 5 | } 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/JsonError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.JsonError = void 0; 4 | const stringifyValidationErrors_1 = require("./stringifyValidationErrors"); 5 | class JsonError extends Error { 6 | constructor(errors) { 7 | super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join("; ")); 8 | this.errors = errors; 9 | Object.setPrototypeOf(this, JsonError.prototype); 10 | } 11 | } 12 | exports.JsonError = JsonError; 13 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/ParseError.d.ts: -------------------------------------------------------------------------------- 1 | import { ValidationError } from "../../Schema"; 2 | export declare class ParseError extends Error { 3 | readonly errors: ValidationError[]; 4 | constructor(errors: ValidationError[]); 5 | } 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/ParseError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ParseError = void 0; 4 | const stringifyValidationErrors_1 = require("./stringifyValidationErrors"); 5 | class ParseError extends Error { 6 | constructor(errors) { 7 | super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join("; ")); 8 | this.errors = errors; 9 | Object.setPrototypeOf(this, ParseError.prototype); 10 | } 11 | } 12 | exports.ParseError = ParseError; 13 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/getSchemaUtils.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema, Schema, SchemaOptions } from "../../Schema"; 2 | export interface SchemaUtils { 3 | optional: () => Schema; 4 | transform: (transformer: SchemaTransformer) => Schema; 5 | parseOrThrow: (raw: unknown, opts?: SchemaOptions) => Parsed; 6 | jsonOrThrow: (raw: unknown, opts?: SchemaOptions) => Raw; 7 | } 8 | export interface SchemaTransformer { 9 | transform: (parsed: Parsed) => Transformed; 10 | untransform: (transformed: any) => Parsed; 11 | } 12 | export declare function getSchemaUtils(schema: BaseSchema): SchemaUtils; 13 | /** 14 | * schema utils are defined in one file to resolve issues with circular imports 15 | */ 16 | export declare function optional(schema: BaseSchema): Schema; 17 | export declare function transform(schema: BaseSchema, transformer: SchemaTransformer): Schema; 18 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/index.d.ts: -------------------------------------------------------------------------------- 1 | export { getSchemaUtils, optional, transform } from "./getSchemaUtils"; 2 | export type { SchemaUtils } from "./getSchemaUtils"; 3 | export { JsonError } from "./JsonError"; 4 | export { ParseError } from "./ParseError"; 5 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ParseError = exports.JsonError = exports.transform = exports.optional = exports.getSchemaUtils = void 0; 4 | var getSchemaUtils_1 = require("./getSchemaUtils"); 5 | Object.defineProperty(exports, "getSchemaUtils", { enumerable: true, get: function () { return getSchemaUtils_1.getSchemaUtils; } }); 6 | Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return getSchemaUtils_1.optional; } }); 7 | Object.defineProperty(exports, "transform", { enumerable: true, get: function () { return getSchemaUtils_1.transform; } }); 8 | var JsonError_1 = require("./JsonError"); 9 | Object.defineProperty(exports, "JsonError", { enumerable: true, get: function () { return JsonError_1.JsonError; } }); 10 | var ParseError_1 = require("./ParseError"); 11 | Object.defineProperty(exports, "ParseError", { enumerable: true, get: function () { return ParseError_1.ParseError; } }); 12 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/stringifyValidationErrors.d.ts: -------------------------------------------------------------------------------- 1 | import { ValidationError } from "../../Schema"; 2 | export declare function stringifyValidationError(error: ValidationError): string; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/schema-utils/stringifyValidationErrors.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.stringifyValidationError = void 0; 4 | function stringifyValidationError(error) { 5 | if (error.path.length === 0) { 6 | return error.message; 7 | } 8 | return `${error.path.join(" -> ")}: ${error.message}`; 9 | } 10 | exports.stringifyValidationError = stringifyValidationError; 11 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/set/index.d.ts: -------------------------------------------------------------------------------- 1 | export { set } from "./set"; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/set/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.set = void 0; 4 | var set_1 = require("./set"); 5 | Object.defineProperty(exports, "set", { enumerable: true, get: function () { return set_1.set; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/set/set.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | export declare function set(schema: Schema): Schema>; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/undiscriminated-union/index.d.ts: -------------------------------------------------------------------------------- 1 | export type { inferParsedUnidiscriminatedUnionSchema, inferRawUnidiscriminatedUnionSchema, UndiscriminatedUnionSchema, } from "./types"; 2 | export { undiscriminatedUnion } from "./undiscriminatedUnion"; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/undiscriminated-union/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.undiscriminatedUnion = void 0; 4 | var undiscriminatedUnion_1 = require("./undiscriminatedUnion"); 5 | Object.defineProperty(exports, "undiscriminatedUnion", { enumerable: true, get: function () { return undiscriminatedUnion_1.undiscriminatedUnion; } }); 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/undiscriminated-union/types.d.ts: -------------------------------------------------------------------------------- 1 | import { inferParsed, inferRaw, Schema } from "../../Schema"; 2 | export declare type UndiscriminatedUnionSchema = Schema, inferParsedUnidiscriminatedUnionSchema>; 3 | export declare type inferRawUnidiscriminatedUnionSchema = inferRaw; 4 | export declare type inferParsedUnidiscriminatedUnionSchema = inferParsed; 5 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/undiscriminated-union/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/undiscriminated-union/undiscriminatedUnion.d.ts: -------------------------------------------------------------------------------- 1 | import { Schema } from "../../Schema"; 2 | import { inferParsedUnidiscriminatedUnionSchema, inferRawUnidiscriminatedUnionSchema } from "./types"; 3 | export declare function undiscriminatedUnion, ...Schema[]]>(schemas: Schemas): Schema, inferParsedUnidiscriminatedUnionSchema>; 4 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/discriminant.d.ts: -------------------------------------------------------------------------------- 1 | export declare function discriminant(parsedDiscriminant: ParsedDiscriminant, rawDiscriminant: RawDiscriminant): Discriminant; 2 | export interface Discriminant { 3 | parsedDiscriminant: ParsedDiscriminant; 4 | rawDiscriminant: RawDiscriminant; 5 | } 6 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/discriminant.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.discriminant = void 0; 4 | function discriminant(parsedDiscriminant, rawDiscriminant) { 5 | return { 6 | parsedDiscriminant, 7 | rawDiscriminant, 8 | }; 9 | } 10 | exports.discriminant = discriminant; 11 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/index.d.ts: -------------------------------------------------------------------------------- 1 | export { discriminant } from "./discriminant"; 2 | export type { Discriminant } from "./discriminant"; 3 | export type { inferParsedDiscriminant, inferParsedUnion, inferRawDiscriminant, inferRawUnion, UnionSubtypes, } from "./types"; 4 | export { union } from "./union"; 5 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.union = exports.discriminant = void 0; 4 | var discriminant_1 = require("./discriminant"); 5 | Object.defineProperty(exports, "discriminant", { enumerable: true, get: function () { return discriminant_1.discriminant; } }); 6 | var union_1 = require("./union"); 7 | Object.defineProperty(exports, "union", { enumerable: true, get: function () { return union_1.union; } }); 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/types.d.ts: -------------------------------------------------------------------------------- 1 | import { inferParsedObject, inferRawObject, ObjectSchema } from "../object"; 2 | import { Discriminant } from "./discriminant"; 3 | export declare type UnionSubtypes = { 4 | [K in DiscriminantValues]: ObjectSchema; 5 | }; 6 | export declare type inferRawUnion, U extends UnionSubtypes> = { 7 | [K in keyof U]: Record, K> & inferRawObject; 8 | }[keyof U]; 9 | export declare type inferParsedUnion, U extends UnionSubtypes> = { 10 | [K in keyof U]: Record, K> & inferParsedObject; 11 | }[keyof U]; 12 | export declare type inferRawDiscriminant> = D extends string ? D : D extends Discriminant ? Raw : never; 13 | export declare type inferParsedDiscriminant> = D extends string ? D : D extends Discriminant ? Parsed : never; 14 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/builders/union/union.d.ts: -------------------------------------------------------------------------------- 1 | import { ObjectLikeSchema } from "../object-like"; 2 | import { Discriminant } from "./discriminant"; 3 | import { inferParsedUnion, inferRawUnion, UnionSubtypes } from "./types"; 4 | export declare function union, U extends UnionSubtypes>(discriminant: D, union: U): ObjectLikeSchema, inferParsedUnion>; 5 | -------------------------------------------------------------------------------- /server/src/core/schemas/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./builders"; 2 | export type { inferParsed, inferRaw, Schema, SchemaOptions } from "./Schema"; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./builders"), exports); 18 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/MaybePromise.d.ts: -------------------------------------------------------------------------------- 1 | export declare type MaybePromise = T | Promise; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/MaybePromise.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/addQuestionMarksToNullableProperties.d.ts: -------------------------------------------------------------------------------- 1 | export declare type addQuestionMarksToNullableProperties = { 2 | [K in OptionalKeys]?: T[K]; 3 | } & Pick>; 4 | export declare type OptionalKeys = { 5 | [K in keyof T]-?: undefined extends T[K] ? K : null extends T[K] ? K : 1 extends (any extends T[K] ? 0 : 1) ? never : K; 6 | }[keyof T]; 7 | export declare type RequiredKeys = Exclude>; 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/addQuestionMarksToNullableProperties.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/createIdentitySchemaCreator.d.ts: -------------------------------------------------------------------------------- 1 | import { MaybeValid, Schema, SchemaOptions, SchemaType } from "../Schema"; 2 | export declare function createIdentitySchemaCreator(schemaType: SchemaType, validate: (value: unknown, opts?: SchemaOptions) => MaybeValid): () => Schema; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/createIdentitySchemaCreator.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.createIdentitySchemaCreator = void 0; 4 | const schema_utils_1 = require("../builders/schema-utils"); 5 | const maybeSkipValidation_1 = require("./maybeSkipValidation"); 6 | function createIdentitySchemaCreator(schemaType, validate) { 7 | return () => { 8 | const baseSchema = { 9 | parse: validate, 10 | json: validate, 11 | getType: () => schemaType, 12 | }; 13 | return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); 14 | }; 15 | } 16 | exports.createIdentitySchemaCreator = createIdentitySchemaCreator; 17 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/entries.d.ts: -------------------------------------------------------------------------------- 1 | export declare function entries(object: T): [keyof T, T[keyof T]][]; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/entries.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.entries = void 0; 4 | function entries(object) { 5 | return Object.entries(object); 6 | } 7 | exports.entries = entries; 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/filterObject.d.ts: -------------------------------------------------------------------------------- 1 | export declare function filterObject(obj: T, keysToInclude: K[]): Pick; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/filterObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.filterObject = void 0; 4 | function filterObject(obj, keysToInclude) { 5 | const keysToIncludeSet = new Set(keysToInclude); 6 | return Object.entries(obj).reduce((acc, [key, value]) => { 7 | if (keysToIncludeSet.has(key)) { 8 | acc[key] = value; 9 | } 10 | return acc; 11 | // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter 12 | }, {}); 13 | } 14 | exports.filterObject = filterObject; 15 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/getErrorMessageForIncorrectType.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getErrorMessageForIncorrectType(value: unknown, expectedType: string): string; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/getErrorMessageForIncorrectType.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getErrorMessageForIncorrectType = void 0; 4 | function getErrorMessageForIncorrectType(value, expectedType) { 5 | return `Expected ${expectedType}. Received ${getTypeAsString(value)}.`; 6 | } 7 | exports.getErrorMessageForIncorrectType = getErrorMessageForIncorrectType; 8 | function getTypeAsString(value) { 9 | if (Array.isArray(value)) { 10 | return "list"; 11 | } 12 | if (value === null) { 13 | return "null"; 14 | } 15 | switch (typeof value) { 16 | case "string": 17 | return `"${value}"`; 18 | case "number": 19 | case "boolean": 20 | case "undefined": 21 | return `${value}`; 22 | } 23 | return typeof value; 24 | } 25 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/isPlainObject.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isPlainObject(value: unknown): value is Record; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/isPlainObject.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.isPlainObject = void 0; 4 | // borrowed from https://github.com/lodash/lodash/blob/master/isPlainObject.js 5 | function isPlainObject(value) { 6 | if (typeof value !== "object" || value === null) { 7 | return false; 8 | } 9 | if (Object.getPrototypeOf(value) === null) { 10 | return true; 11 | } 12 | let proto = value; 13 | while (Object.getPrototypeOf(proto) !== null) { 14 | proto = Object.getPrototypeOf(proto); 15 | } 16 | return Object.getPrototypeOf(value) === proto; 17 | } 18 | exports.isPlainObject = isPlainObject; 19 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/keys.d.ts: -------------------------------------------------------------------------------- 1 | export declare function keys(object: T): (keyof T)[]; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/keys.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.keys = void 0; 4 | function keys(object) { 5 | return Object.keys(object); 6 | } 7 | exports.keys = keys; 8 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/maybeSkipValidation.d.ts: -------------------------------------------------------------------------------- 1 | import { BaseSchema } from "../Schema"; 2 | export declare function maybeSkipValidation, Raw, Parsed>(schema: S): S; 3 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/maybeSkipValidation.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.maybeSkipValidation = void 0; 4 | function maybeSkipValidation(schema) { 5 | return Object.assign(Object.assign({}, schema), { json: transformAndMaybeSkipValidation(schema.json), parse: transformAndMaybeSkipValidation(schema.parse) }); 6 | } 7 | exports.maybeSkipValidation = maybeSkipValidation; 8 | function transformAndMaybeSkipValidation(transform) { 9 | return (value, opts) => { 10 | const transformed = transform(value, opts); 11 | const { skipValidation = false } = opts !== null && opts !== void 0 ? opts : {}; 12 | if (!transformed.ok && skipValidation) { 13 | // eslint-disable-next-line no-console 14 | console.warn([ 15 | "Failed to validate.", 16 | ...transformed.errors.map((error) => " - " + 17 | (error.path.length > 0 ? `${error.path.join(".")}: ${error.message}` : error.message)), 18 | ].join("\n")); 19 | return { 20 | ok: true, 21 | value: value, 22 | }; 23 | } 24 | else { 25 | return transformed; 26 | } 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/partition.d.ts: -------------------------------------------------------------------------------- 1 | export declare function partition(items: readonly T[], predicate: (item: T) => boolean): [T[], T[]]; 2 | -------------------------------------------------------------------------------- /server/src/core/schemas/utils/partition.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.partition = void 0; 4 | function partition(items, predicate) { 5 | const trueItems = [], falseItems = []; 6 | for (const item of items) { 7 | if (predicate(item)) { 8 | trueItems.push(item); 9 | } 10 | else { 11 | falseItems.push(item); 12 | } 13 | } 14 | return [trueItems, falseItems]; 15 | } 16 | exports.partition = partition; 17 | -------------------------------------------------------------------------------- /server/src/errors/BumpshApiError.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import express from "express"; 5 | export declare abstract class BumpshApiError extends Error { 6 | readonly errorName?: string | undefined; 7 | constructor(errorName?: string | undefined); 8 | abstract send(res: express.Response): Promise; 9 | } 10 | -------------------------------------------------------------------------------- /server/src/errors/BumpshApiError.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.BumpshApiError = void 0; 7 | class BumpshApiError extends Error { 8 | constructor(errorName) { 9 | super(); 10 | this.errorName = errorName; 11 | Object.setPrototypeOf(this, BumpshApiError.prototype); 12 | } 13 | } 14 | exports.BumpshApiError = BumpshApiError; 15 | -------------------------------------------------------------------------------- /server/src/errors/index.d.ts: -------------------------------------------------------------------------------- 1 | export { BumpshApiError } from "./BumpshApiError"; 2 | -------------------------------------------------------------------------------- /server/src/errors/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.BumpshApiError = void 0; 4 | var BumpshApiError_1 = require("./BumpshApiError"); 5 | Object.defineProperty(exports, "BumpshApiError", { enumerable: true, get: function () { return BumpshApiError_1.BumpshApiError; } }); 6 | -------------------------------------------------------------------------------- /server/src/index.d.ts: -------------------------------------------------------------------------------- 1 | export * as BumpshApi from "./api"; 2 | export { register } from "./register"; 3 | export { BumpshApiError } from "./errors"; 4 | -------------------------------------------------------------------------------- /server/src/register.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import express from "express"; 5 | import { StationsService } from "./api/resources/stations/service/StationsService"; 6 | import { TripsService } from "./api/resources/trips/service/TripsService"; 7 | import { BookingsService } from "./api/resources/bookings/service/BookingsService"; 8 | import { PaymentsService } from "./api/resources/payments/service/PaymentsService"; 9 | export declare function register(expressApp: express.Express | express.Router, services: { 10 | stations: StationsService; 11 | trips: TripsService; 12 | bookings: BookingsService; 13 | payments: PaymentsService; 14 | }): void; 15 | -------------------------------------------------------------------------------- /server/src/register.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * This file was auto-generated by Fern from our API Definition. 4 | */ 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.register = void 0; 7 | function register(expressApp, services) { 8 | expressApp.use("", services.stations.toRouter()); 9 | expressApp.use("", services.trips.toRouter()); 10 | expressApp.use("", services.bookings.toRouter()); 11 | expressApp.use("", services.payments.toRouter()); 12 | } 13 | exports.register = register; 14 | -------------------------------------------------------------------------------- /server/src/serialization/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./resources"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /server/src/serialization/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./resources"), exports); 18 | __exportStar(require("./types"), exports); 19 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/CreateBookingResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const CreateBookingResponse: core.serialization.ObjectSchema; 8 | export declare namespace CreateBookingResponse { 9 | interface Raw extends serializers.Booking.Raw { 10 | links?: serializers.LinksSelf.Raw | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/GetBookingResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetBookingResponse: core.serialization.ObjectSchema; 8 | export declare namespace GetBookingResponse { 9 | interface Raw extends serializers.Booking.Raw { 10 | links?: serializers.LinksSelf.Raw | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/GetBookingsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetBookingsResponse: core.serialization.ObjectSchema; 8 | export declare namespace GetBookingsResponse { 9 | interface Raw { 10 | data?: serializers.Booking.Raw[] | null; 11 | links?: serializers.GetBookingsResponseLinks.Raw | null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/GetBookingsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetBookingsResponseLinks: core.serialization.ObjectSchema; 8 | export declare namespace GetBookingsResponseLinks { 9 | interface Raw extends serializers.LinksSelf.Raw, serializers.LinksPagination.Raw { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/NewBookingPayload.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const NewBookingPayload: core.serialization.ObjectSchema; 8 | export declare namespace NewBookingPayload { 9 | interface Raw extends serializers.Booking.Raw { 10 | links?: serializers.NewBookingPayloadLinks.Raw | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/NewBookingPayloadLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const NewBookingPayloadLinks: core.serialization.ObjectSchema; 8 | export declare namespace NewBookingPayloadLinks { 9 | interface Raw extends serializers.LinksSelf.Raw, serializers.LinksPagination.Raw { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetBookingsResponseLinks"; 2 | export * from "./GetBookingsResponse"; 3 | export * from "./CreateBookingResponse"; 4 | export * from "./GetBookingResponse"; 5 | export * from "./NewBookingPayloadLinks"; 6 | export * from "./NewBookingPayload"; 7 | -------------------------------------------------------------------------------- /server/src/serialization/resources/bookings/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetBookingsResponseLinks"), exports); 18 | __exportStar(require("./GetBookingsResponse"), exports); 19 | __exportStar(require("./CreateBookingResponse"), exports); 20 | __exportStar(require("./GetBookingResponse"), exports); 21 | __exportStar(require("./NewBookingPayloadLinks"), exports); 22 | __exportStar(require("./NewBookingPayload"), exports); 23 | -------------------------------------------------------------------------------- /server/src/serialization/resources/index.d.ts: -------------------------------------------------------------------------------- 1 | export * as stations from "./stations"; 2 | export * from "./stations/types"; 3 | export * as trips from "./trips"; 4 | export * from "./trips/types"; 5 | export * as bookings from "./bookings"; 6 | export * from "./bookings/types"; 7 | export * as payments from "./payments"; 8 | export * from "./payments/types"; 9 | -------------------------------------------------------------------------------- /server/src/serialization/resources/payments/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | -------------------------------------------------------------------------------- /server/src/serialization/resources/payments/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | -------------------------------------------------------------------------------- /server/src/serialization/resources/payments/types/CreateBookingPaymentResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const CreateBookingPaymentResponse: core.serialization.ObjectSchema; 8 | export declare namespace CreateBookingPaymentResponse { 9 | interface Raw extends serializers.BookingPayment.Raw { 10 | links?: serializers.LinksBooking.Raw | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/resources/payments/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./CreateBookingPaymentResponse"; 2 | -------------------------------------------------------------------------------- /server/src/serialization/resources/payments/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./CreateBookingPaymentResponse"), exports); 18 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/types/GetStationsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetStationsResponse: core.serialization.ObjectSchema; 8 | export declare namespace GetStationsResponse { 9 | interface Raw { 10 | data?: serializers.Station.Raw[] | null; 11 | links?: serializers.GetStationsResponseLinks.Raw | null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/types/GetStationsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetStationsResponseLinks: core.serialization.ObjectSchema; 8 | export declare namespace GetStationsResponseLinks { 9 | interface Raw extends serializers.LinksSelf.Raw, serializers.LinksPagination.Raw { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetStationsResponseLinks"; 2 | export * from "./GetStationsResponse"; 3 | -------------------------------------------------------------------------------- /server/src/serialization/resources/stations/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetStationsResponseLinks"), exports); 18 | __exportStar(require("./GetStationsResponse"), exports); 19 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./types"), exports); 18 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/types/GetTripsResponse.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetTripsResponse: core.serialization.ObjectSchema; 8 | export declare namespace GetTripsResponse { 9 | interface Raw { 10 | data?: serializers.Trip.Raw[] | null; 11 | links?: serializers.GetTripsResponseLinks.Raw | null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/types/GetTripsResponseLinks.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../../../index"; 5 | import * as BumpshApi from "../../../../api/index"; 6 | import * as core from "../../../../core"; 7 | export declare const GetTripsResponseLinks: core.serialization.ObjectSchema; 8 | export declare namespace GetTripsResponseLinks { 9 | interface Raw extends serializers.LinksSelf.Raw, serializers.LinksPagination.Raw { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./GetTripsResponseLinks"; 2 | export * from "./GetTripsResponse"; 3 | -------------------------------------------------------------------------------- /server/src/serialization/resources/trips/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./GetTripsResponseLinks"), exports); 18 | __exportStar(require("./GetTripsResponse"), exports); 19 | -------------------------------------------------------------------------------- /server/src/serialization/types/Booking.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const Booking: core.serialization.ObjectSchema; 8 | export declare namespace Booking { 9 | interface Raw { 10 | id?: string | null; 11 | trip_id?: string | null; 12 | passenger_name?: string | null; 13 | has_bicycle?: boolean | null; 14 | has_dog?: boolean | null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPayment.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPayment: core.serialization.ObjectSchema; 8 | export declare namespace BookingPayment { 9 | interface Raw { 10 | id?: string | null; 11 | amount?: number | null; 12 | currency?: serializers.BookingPaymentCurrency.Raw | null; 13 | source?: serializers.BookingPaymentSource.Raw | null; 14 | status?: serializers.BookingPaymentStatus.Raw | null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPaymentCurrency.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPaymentCurrency: core.serialization.Schema; 8 | export declare namespace BookingPaymentCurrency { 9 | type Raw = "bam" | "bgn" | "chf" | "eur" | "gbp" | "nok" | "sek" | "try"; 10 | } 11 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPaymentSource.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPaymentSource: core.serialization.Schema; 8 | export declare namespace BookingPaymentSource { 9 | type Raw = BookingPaymentSource.Card | BookingPaymentSource.BankAccount; 10 | interface Card extends serializers.Card.Raw { 11 | object: "card"; 12 | } 13 | interface BankAccount extends serializers.BookingPaymentSourceBankAccount.Raw { 14 | object: "bank_account"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPaymentSourceBankAccount.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPaymentSourceBankAccount: core.serialization.ObjectSchema; 8 | export declare namespace BookingPaymentSourceBankAccount { 9 | interface Raw { 10 | name: string; 11 | number: string; 12 | sort_code?: string | null; 13 | account_type: serializers.BookingPaymentSourceBankAccountAccountType.Raw; 14 | bank_name: string; 15 | country: string; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPaymentSourceBankAccountAccountType.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPaymentSourceBankAccountAccountType: core.serialization.Schema; 8 | export declare namespace BookingPaymentSourceBankAccountAccountType { 9 | type Raw = "individual" | "company"; 10 | } 11 | -------------------------------------------------------------------------------- /server/src/serialization/types/BookingPaymentStatus.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const BookingPaymentStatus: core.serialization.Schema; 8 | export declare namespace BookingPaymentStatus { 9 | type Raw = "pending" | "succeeded" | "failed"; 10 | } 11 | -------------------------------------------------------------------------------- /server/src/serialization/types/Card.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const Card: core.serialization.ObjectSchema; 8 | export declare namespace Card { 9 | interface Raw { 10 | name: string; 11 | number: string; 12 | cvc: number; 13 | exp_month: number; 14 | exp_year: number; 15 | address_line1?: string | null; 16 | address_line2?: string | null; 17 | address_city?: string | null; 18 | address_country: string; 19 | address_post_code?: string | null; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/src/serialization/types/LinksBooking.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const LinksBooking: core.serialization.ObjectSchema; 8 | export declare namespace LinksBooking { 9 | interface Raw { 10 | booking?: string | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/types/LinksPagination.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const LinksPagination: core.serialization.ObjectSchema; 8 | export declare namespace LinksPagination { 9 | interface Raw { 10 | next?: string | null; 11 | prev?: string | null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/serialization/types/LinksSelf.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const LinksSelf: core.serialization.ObjectSchema; 8 | export declare namespace LinksSelf { 9 | interface Raw { 10 | self?: string | null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/src/serialization/types/OauthScope.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const OauthScope: core.serialization.Schema; 8 | export declare namespace OauthScope { 9 | type Raw = "read" | "write"; 10 | } 11 | -------------------------------------------------------------------------------- /server/src/serialization/types/Problem.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const Problem: core.serialization.ObjectSchema; 8 | export declare namespace Problem { 9 | interface Raw { 10 | type?: string | null; 11 | title?: string | null; 12 | detail?: string | null; 13 | instance?: string | null; 14 | status?: number | null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/serialization/types/Station.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const Station: core.serialization.ObjectSchema; 8 | export declare namespace Station { 9 | interface Raw { 10 | id: string; 11 | name: string; 12 | address: string; 13 | country_code: string; 14 | timezone?: string | null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/src/serialization/types/Trip.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const Trip: core.serialization.ObjectSchema; 8 | export declare namespace Trip { 9 | interface Raw { 10 | id?: string | null; 11 | origin?: string | null; 12 | destination?: string | null; 13 | departure_time?: string | null; 14 | arrival_time?: string | null; 15 | operator?: string | null; 16 | price?: number | null; 17 | bicycles_allowed?: boolean | null; 18 | dogs_allowed?: boolean | null; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /server/src/serialization/types/WrapperCollection.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file was auto-generated by Fern from our API Definition. 3 | */ 4 | import * as serializers from "../index"; 5 | import * as BumpshApi from "../../api/index"; 6 | import * as core from "../../core"; 7 | export declare const WrapperCollection: core.serialization.ObjectSchema; 8 | export declare namespace WrapperCollection { 9 | interface Raw { 10 | data?: Record[] | null; 11 | links?: Record | null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/src/serialization/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from "./OauthScope"; 2 | export * from "./Station"; 3 | export * from "./LinksSelf"; 4 | export * from "./LinksPagination"; 5 | export * from "./Problem"; 6 | export * from "./Trip"; 7 | export * from "./Booking"; 8 | export * from "./WrapperCollection"; 9 | export * from "./BookingPaymentCurrency"; 10 | export * from "./Card"; 11 | export * from "./BookingPaymentSourceBankAccountAccountType"; 12 | export * from "./BookingPaymentSourceBankAccount"; 13 | export * from "./BookingPaymentSource"; 14 | export * from "./BookingPaymentStatus"; 15 | export * from "./BookingPayment"; 16 | export * from "./LinksBooking"; 17 | -------------------------------------------------------------------------------- /server/src/server.ts: -------------------------------------------------------------------------------- 1 | import cors from "cors"; 2 | import express from "express"; 3 | 4 | import { register } from "."; 5 | import bookings from "./services/bookings"; 6 | import stations from "./services/stations"; 7 | import trips from "./services/trips"; 8 | import payments from "./services/payments"; 9 | 10 | const PORT = process.env.PORT ?? 8080; 11 | 12 | const app = express(); 13 | 14 | app.use(cors()); 15 | 16 | register(app, { 17 | bookings: bookings, 18 | payments: payments, 19 | stations: stations, 20 | trips: trips, 21 | }); 22 | 23 | app.listen(PORT); 24 | console.log(`🎉 Listening on port ${PORT}...`); 25 | 26 | export default app; 27 | -------------------------------------------------------------------------------- /server/src/services/payments.ts: -------------------------------------------------------------------------------- 1 | import { PaymentsService } from "../api/resources/payments/service/PaymentsService"; 2 | 3 | export default new PaymentsService({ 4 | async createBookingPayment(req, res) {}, 5 | }); 6 | -------------------------------------------------------------------------------- /server/src/services/stations.ts: -------------------------------------------------------------------------------- 1 | import { StationsService } from "../api/resources/stations/service/StationsService"; 2 | import { getStations } from "../database"; 3 | 4 | export default new StationsService({ 5 | async getStations(req, res) { 6 | const stations = await getStations(); 7 | return res.send({ 8 | data: stations, 9 | links: { self: "/stations" }, 10 | }); 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /server/src/services/trips.ts: -------------------------------------------------------------------------------- 1 | import { TripsService } from "../api/resources/trips/service/TripsService"; 2 | import { getTrips } from "../database"; 3 | 4 | export default new TripsService({ 5 | async getTrips(req, res) { 6 | const trips = await getTrips(); 7 | return res.send({ 8 | data: trips, 9 | links: { self: "/trips" }, 10 | }); 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "esModuleInterop": true, 5 | "target": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "rootDir": "src", 9 | "outDir": "lib", 10 | "allowSyntheticDefaultImports": true, 11 | "allowJs": true, 12 | "resolveJsonModule": true 13 | }, 14 | "include": ["src"] 15 | } 16 | -------------------------------------------------------------------------------- /server/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "builds": [ 4 | { 5 | "src": "lib/", 6 | "use": "@now/node" 7 | } 8 | ], 9 | "routes": [ 10 | { 11 | "src": "/(.*)", 12 | "dest": "/" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /vacuum.conf.yaml: -------------------------------------------------------------------------------- 1 | ruleset: ./.vacuum/ruleset.yaml 2 | --------------------------------------------------------------------------------