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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@bdelab/roav-ran

v1.0.34

Published

Roav RAN is a modular JavaScript-based framework for running RAN . The application begins at `src/experiment/index.js`, which manages and calls the various views that control different aspects of the test.

Readme

Roav RAN

Overview

Roav RAN is a modular JavaScript-based framework for running RAN . The application begins at src/experiment/index.js, which manages and calls the various views that control different aspects of the test.

Structure

Each view is a separate JavaScript file located in the views folder. These views handle different parts of the experiment, from consent collection to calibration and the main crowding test. Below is a breakdown of each view and its purpose.

Views Breakdown

Consent View

  • File: views/consentView.js
  • Description: Displays the consent form. Participants must accept before proceeding to the next step.

Configure Device View

  • File: views/configureDeviceView.js
  • Description: Requests camera (and/or microphone) access, ensures proper seating position, and allows configuration of device details such as screen size.

Calibration View

  • File: views/calibrationView.js
  • Description: Displays a blue stimulus for eye tracking calibration. A simple linear regressor estimates gaze position based on the response.

Menu View

  • File: views/menuView.js
  • Description: Displays available tasks, dynamically loading them from the storage bucket. For example, crowding tests may have different versions (e.g., letters vs. symbols).

Crowding View

  • File: views/RANView.js
  • Description: The core RAN test, where participants perform the task.

Story View

  • File: views/storyView.js
  • Description: Presents a story as part of the experiment.

Preload View

  • File: views/preloadView.js
  • Description: A blank screen that preloads files into cache to optimize performance.

View Structure

Each view follows a consistent structure to maintain modularity and ease of testing. For example, configureDeviceView consists of three main components:

  1. HTML File: Defines the layout and styling of the view.
  2. JavaScript File: Contains the logic for user interaction and view functionality.
  3. View Loader (views.js): Loads the corresponding HTML and JavaScript files, initializes a wrapper div, and injects it into the document body.

View Lifecycle

  • A view starts by creating a container div.
  • It loads the necessary HTML and JavaScript files.
  • The div is added to document.body.
  • The view ends when a resolve flag is triggered (e.g., a button click or programmatic completion of a task).

Design Philosophy

The structure was designed to be highly modular, allowing for easy swapping and modification of different views during the testing phase. While some aspects could be streamlined further, refactoring will only take place once the test design is finalized and stable.

Eye Tracking

There are a few pertinent files related to handling eye tracking, which exist across the three web apps. These include videoCapture.js, headeyetracking.js, and eyetrackingVars.html.

Video Capture

  • File: videoCapture.js
  • Description: Contains functions to start and stop the camera. This is essential as it is the first step in running the eye tracking model, which ingests webcam feeds.

Head and Eye Tracking

  • File: headeyetracking.js
  • Description: Processes the webcam feed and passes it into the eye tracking model to predict x, y coordinates of gaze.

Eye Tracking Variables

  • File: eyetrackingVars.html
  • Description: Initializes global variables needed to run the eye tracking model, such as leftEyeCoordinates and rightEyeCoordinates, which store the model's predictions. It also initializes FaceMesh (a Google product) to track the face and crop the eyes before passing them into the eye tracking model.