npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@voyantjs/flights

v0.31.3

Published

Phase 3 of the catalog plane. The flights vertical — a partial-adoption module for live-API flight search and booking.

Readme

@voyantjs/flights

Phase 3 of the catalog plane. The flights vertical — a partial-adoption module for live-API flight search and booking.

See docs/architecture/catalog-flights-architecture.md for the full design.

Install

pnpm add @voyantjs/flights

What's in the box

  • ./contract/typesFlightOffer, FlightOrder, FlightSegment, FlightSearchRequest, FlightBookRequest, capability ids, paymentIntent discriminated union. Shapes mirror voyant-cloud's connect-flight-contract so adapters are portable across voyant-cloud and Voyant Catalog.
  • ./contract/adapterFlightConnectorAdapter interface (5 core methods
    • capability declarations). Provider-agnostic; implementations come from Voyant Connect, third-party providers, or operator-built adapters.
  • ./orchestration/fingerprint — Itinerary fingerprint helper. Two providers selling the same flight produce identical fingerprints.
  • ./orchestration/fan-out — Multi-connection fan-out search: parallel searchFlights across all of an operator's flight connections, per-provider timeout + circuit breaker, dedupe by itinerary fingerprint, merged result with cheapest + alternates[].
  • ./snapshot — Booking-time snapshot capture. Builds a CaptureSnapshotInput for the catalog plane's captureSnapshot / captureSnapshotGraph from a flight FlightOffer + FlightOrder pair.
  • ./reference/contractReferenceDataProvider contract (airlines, airports, aircraft). Implementable at any layer.
  • ./reference/local-postgres — Reference data from plain Postgres tables in the operator's own database. No external service, no network call. The simplest deployment option.
  • ./reference/static-bundle — Reference data from a bundled JSON / CSV.

Phase relationship

Phase 3 is independent of Phase 2 (RAG). Either can ship first; both build on Phase 1 (@voyantjs/catalog).

Flights opt in to:

  • Booking snapshot graph (the most important participation)
  • Provenance shape
  • Webhook events
  • Source disconnection lifecycle

Flights opt out of:

  • Search index projection (live fan-out replaces it)
  • Editorial overlays (no marketing copy on a flight)
  • Embeddings / RAG (Phase 2 explicitly excludes flights)
  • Pricing tiers (built into the multi-connection fan-out itself)
  • Drift detection (live by definition)

Usage

Multi-connection search

import { fanOutFlightSearch } from "@voyantjs/flights/orchestration/fan-out"

const result = await fanOutFlightSearch({
  adapters: [hiskyAdapter, amadeusAdapter, charterConsolidatorAdapter],
  request: {
    slices: [
      { origin: "LHR", destination: "JFK", departureDate: "2026-10-15" },
      { origin: "JFK", destination: "LHR", departureDate: "2026-10-22" },
    ],
    passengers: { adults: 2 },
    cabin: "economy",
  },
  perConnectionTimeoutMs: 5000,
})

// result.offers — merged offers across all connections, deduped by
// itinerary fingerprint, sorted by cheapest price ascending.
// result.perConnection — status + latency per connection.

Reference data — operator's own Postgres tables

import {
  createLocalPostgresReferenceProvider,
  createReferenceDataTables,
} from "@voyantjs/flights/reference/local-postgres"

// Schema lives in the operator's own DB. No external service required.
const reference = createLocalPostgresReferenceProvider({ db })

const ba = await reference.getAirline("BA")
// → { iataCode: "BA", icaoCode: "BAW", name: "British Airways", country: "GB" }

See docs/architecture/catalog-flights-architecture.md for the full design.