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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@rill/session

v11.0.5

Published

isomorphic sessions for Rill.

Downloads

155

Readme

Isomorphic session middleware that will provided consistent sessions from client to server. Sessions are instances of Receptacle, check out the docs for modifying the session.

Session storage on the server side is done by keyv and you can provide configuration via the cache option.

Installation

npm install @rill/session

Example

const app = require('rill')()

// Set up a session. (Defaults to in memory)
app.use(require('@rill/session')())

// Use the session.
app.use(({ session })=> {
  // Sessions are instances of a "Receptacle" cache.
  session.set('a', 1, { ttl: 1000 });
  session.get('a'); // 1
});

Options

{
  /**
   * Optional key used for the session id cookie and keyv namespace.
   */
  key: 'rill_session',
  /**
   * Optional key to use as the name of the session on the Rill context.
   * This allows for having multiple sessions (even with different adapters) all with different names.
   * By default they will all use the name 'session'.
   */
  name: 'mySession',
  /**
   * By default the session is shared with the browser and therefor public.
   * You can disable this by setting browser to false which will only make the session visible server side and disables the sync apis.
   */
  browser: true,
  /**
   * By default @rill/session will add an http header to preload the session in the browser.
   * This improves performance by fetching your javascript and the session in parallel in supported browsers.
   * You can disable this by setting preload to false which will instead fetch the session after the main javascript has loaded.
   */
  preload: true,
  /**
   * Passed to keyv, do not send this to client.
   * Mongo db example. (must have installed keyv-mongo).
   * Default is in memory.
   */
  cache: !process.browser && {
    uri: 'mongodb://user:pass@localhost:27017/dbname' // Default is in memory (see keyv uri).
  }
}

Implementation Details

Rill sessions work in both the client and server however only the initial session from the server with the user will be synced using an XHR request.

In the browser the initial session is loaded from the server via XHR and then stored in memory.


Contributions

  • Use npm test to run tests.

Please feel free to create a PR!