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

@dreadkn1ght123/auth-react

v0.2.0

Published

React integration for VVP authentication flows

Readme

@dreadkn1ght123/auth-react

React 18/19 adapter for the server-owned VVP authentication flow. It checks the token-free session endpoint with credentials included, redirects signed-out users through /auth/start, and submits logout to /auth/logout. Login is always a browser navigation—never fetch or XHR.

Install the aligned 0.2.0 release alongside @dreadkn1ght123/auth-types, @dreadkn1ght123/auth-core, and @dreadkn1ght123/auth-express. The Express router must be mounted on the same public origin. Custom backend route paths must also be supplied via the corresponding meUrl, loginUrl, and logoutUrl frontend props/options.

React + Vite

import {
  VvpAuthBoundary,
  VvpAuthProvider,
  useVvpAuth,
} from "@dreadkn1ght123/auth-react";
import { createRoot } from "react-dom/client";

function App() {
  const auth = useVvpAuth<{ actor: { displayName: string } }>();

  return (
    <main>
      <p>Signed in as {auth.session?.actor.displayName}</p>
      <button type="button" onClick={() => void auth.logout()}>
        Sign out
      </button>
    </main>
  );
}

createRoot(document.getElementById("root")!).render(
  <VvpAuthProvider meUrl="/auth/me">
    <VvpAuthBoundary>
      <App />
    </VvpAuthBoundary>
  </VvpAuthProvider>,
);

The Express application must mount the VVP auth router on the same origin. There is no application login page: an unauthenticated boundary performs top-level navigation to /auth/start and preserves a validated same-origin returnTo. If iframe escape is blocked, it renders an accessible target="_top" fallback link.

VvpAuthBoundary waits for the session check before deciding. A 401 initiates login; a network/5xx or malformed response renders retry/error fallback instead of redirecting. A short-lived per-tab marker prevents repeated automatic redirects to the same returnTo; if encountered, the boundary renders the manual top-level link. Successful authentication clears that marker.

For an imperative transition, use:

import { redirectToVvpLogin } from "@dreadkn1ght123/auth-react";

redirectToVvpLogin({
  returnTo: window.location.href,
  escapeIframe: true,
});

The imperative helper returns { url, navigated, error? }. If navigated is false, render url only as an ordinary same-origin link with target="_top"; prefer VvpLoginRedirect when the component should manage this fallback.

logoutFromVvp() creates a top-targeted POST form. It intentionally leaves the browser in the server-managed provider logout and /auth/signed-out flow. That signed-out page does not automatically run the boundary or restart SSO; the user explicitly chooses “sign in again”.

VvpLoginRedirect is available when only the navigation/fallback behavior is needed. Its fallback child may customize presentation, but applications must not recreate an SSO provider chooser, construct an IAM authorization URL, or send protocol values to React.