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

@2ltech/nextjs-app-passport

v2.0.1

Published

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=2LTech_nextjs-app-passport&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=2LTech_nextjs-app-passport)

Readme

Quality Gate Status

nextjs-app-passport

NextJS authentication using local passport

Demo

You can see an example in nextjs-app-passport-demo

Environment variables

NEXTJS_APP_PASSPORT_TOKEN (mandatory)

Used to encrypt the cookie, minimum TOKEN_SECRET_MIN_LENGTH (default 32) characters length. This is enforced at startup: the module throws on import if the variable is missing or shorter than TOKEN_SECRET_MIN_LENGTH characters.

NEXTJS_APP_PASSPORT_UNSECURE (optional)

If defined, allow usage of cookie over HTTP connection. Only intended for local development; leaving it set in production disables the Secure cookie flag.

findUser

Type:

export type MinimalSession = { id: string }
export type FindUser<User extends MinimalSession> = (
  body: unknown
) => Promise<User | null | undefined>

This function should find an user from request body content (see APILoginRoute) and return it, or null | undefined if no user is found.

validatePassword

Type:

export type MinimalSession = { id: string }
export type ValidatePassword<User extends MinimalSession> = (
  user: User,
  body: unknown
) => Promise<boolean>

This function should validate the password using the user data (for example hash, salt, ...).

APICreateLoginRoute

It returns a login route handler bound to your findUser/validatePassword. Each request builds an isolated per-request passport instance, so registration is intrinsic to the route.

Type:

export declare const APICreateLoginRoute: <User extends MinimalSession>(
  findUser: FindUser<User>,
  validatePassword: ValidatePassword<User>
) => (request: NextRequest) => Promise<Response>

Usage in app/api/[loginRouteName]/route.[js|ts]:

export const POST = APICreateLoginRoute(findUser, validatePassword)

APILogoutRoute

Type:

export declare const APILogoutRoute: (request: NextRequest) => Promise<Response>

Usage in app/api/[logoutRouteName]/route.[js|ts]:

export const POST = APILogoutRoute

APIRefreshSessionRoute

Type:

export declare const APIRefreshSessionRoute: (
  request: NextRequest
) => Promise<Response>

Usage in app/api/[refreshSessionRouteName]/route.[js|ts]:

export const POST = APIRefreshSessionRoute

getSession

Type:

export interface Session {
  id: string
  createdAt: number
  issuedAt: number
  maxAge: number
  [key: string]: unknown
}
export declare const getSession: (additionalData?: string[]) => Promise<Session>

Usage in app/api/[getSessionRouteName]/route.[js|ts]:

Default returned values in Session are id, createdAt and issuedAt, you can return more data using additionalData.

export const POST = async () => {
  try {
    const session = await getSession(['username'])
    return Response.json({
      ok: true,
      data: {
        id: session.id,
        username: session.username
      }
    })
  } catch (err) {
    console.error(err)
    return Response.json({ ok: false, err: err.message })
  }
}